1. 程式人生 > >springcloud之註冊中心eureka

springcloud之註冊中心eureka

簡介

Spring Cloud是目前用於開發微服務的主流框架之一,我們都知道在微服務架構中最為基礎、核心的模組,就是服務註冊與發現。

在Spring Cloud裡我們可以使用它的Eureka模組來實現服務註冊與發現,Spring Cloud Eureka是基於Netflix Eureka做了二次封裝,它主要負責完成各個微服務例項的自動化註冊和發現功能。

Eureka包含兩個元件:Eureka Server和Eureka Client

Eureka Server提供服務註冊服務,各個節點啟動後,會在EurekaServer中進行註冊,這樣EurekaServer中的服務登錄檔中將會儲存所有可用服務節點的資訊,服務節點的資訊可以在介面中直觀的看到

EurekaClient是一個Java客戶端,用於簡化Eureka Server的互動,客戶端同時也具備一個內建的、使用輪詢(round-robin)負載演算法的負載均衡器。在應用啟動後,將會向Eureka Server傳送心跳(預設週期為30秒)。如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,EurekaServer將會從服務登錄檔中把這個服務節點移除(預設90秒) 在這裡插入圖片描述

構建與部署

eureka server

1、單點部署 如果是idea,可以直接直接new project >> springinitializr >> cloud discovery 在這裡插入圖片描述

按著步驟操作,就可以搭建一個單點eureka server

2、叢集部署 一般生產環境都是三個或以上節點,叢集中的每個節點也是把自己當一個提供者相互註冊 在這裡插入圖片描述 application.yml配置如下

server:
  port: 8761

spring:
  application:
    name: eureka
  profiles:
    active: dev
  security:
    basic:
      enabled: false # 啟用身份認證
    user:
      name: lipeng # 定義使用者名稱
      password: lipeng. # 定義密碼

---
spring:
  profiles: prd-1

eureka:
  instance:
    hostname: register1
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.166
  server:  #配置屬性,但由於 Eureka 自我保護模式以及心跳週期長的原因,經常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

---
spring:
  profiles: prd-2

eureka:
  instance:
    hostname: register2
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.171
  server:  #配置屬性,但由於 Eureka 自我保護模式以及心跳週期長的原因,經常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

---
spring:
  profiles: prd-3

eureka:
  instance:
    hostname: register3
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 200.200.0.167
  server:  #配置屬性,但由於 Eureka 自我保護模式以及心跳週期長的原因,經常會遇到 Eureka Server 不剔除已關停的節點的問題
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000


打包後部署時在啟動命令中增加 --spring.profile.active=prd-1/prd-2/prd-3 啟動後如下:在這裡插入圖片描述 在這裡插入圖片描述 這樣才算部署成功,如果上面兩個節點是在unavailable-replicas中則是沒有成功的。

k8s中整合eureka

一般是不建議在k8s中使用eureka,不過有時候如果需要的話,則部署時最好填寫域名。設定該變數就行 在這裡插入圖片描述

eureka client

這個就比較簡單了,網上有很多例子 pom依賴

<!--註冊中心-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

增加註解 在這裡插入圖片描述 yml配置

spring:
  profiles: dev
eureka:
  instance:
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 20
    hostname: ${spring.application.name}
  client:
    serviceUrl:
      defaultZone: http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/,http://lipeng:[email protected]:8761/eureka/
    registry-fetch-interval-seconds: 10

實際上defaultZone只需要配置一個節點,其他節點也會自動同步。 啟動服務就可以看到 在這裡插入圖片描述

詳細程式碼見:https://gitee.com/lpxs/lp-springcloud.git,上面的是配置中