1. 程式人生 > >SpringCloud--04、Eureka叢集

SpringCloud--04、Eureka叢集

Eureka架構中的三個核心角色:

- 服務註冊中心
  Eureka的服務端應用,提供服務註冊和發現功能,就是剛剛我們建立的eureka-demo
- 服務提供者
  提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,
只要對外提供的是Rest風格服務即可。本例中就是我們實現的user-service
- 服務消費者
  消費應用從註冊中心獲取服務列表,從而得知每個服務方的資訊,知道去哪裡呼叫服務方。
本例中就是我們實現的consumer-demo

我們假設要搭建三臺EurekaServer的叢集,埠分別為:10086  10087  10088

服務同步:

多個Eureka Server之間也會互相註冊為服務,當服務提供者註冊到Eureka Server叢集中的某個節點時,
該節點會把服務的資訊同步給叢集中的每個節點,從而實現資料同步

1、修改EurekaServer配置application.yml

server:
  port: 10087 # 埠
spring:
  application:
    name: eureka-server # 應用名稱,會在Eureka中顯示
eureka:
  client:
    register-with-eureka: true # 是否註冊自己的資訊到EurekaServer,預設是true
    fetch-registry: true # 是否拉取其它服務的資訊,預設是true
    service-url: # EurekaServer的地址,現在是自己的地址,如果是叢集,需要加上其它Server的地址。
      defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10088/eureka

2、相同的方法分別新增另個二臺Eureka伺服器 127.0.0.1:10088/10086

分別啟動三臺Eureka服務、這樣叢集就搭好了。

3、客戶端註冊服務到叢集

eureka:
  client:
    service-url:  # EurekaServer地址
      defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka,http://127.0.0.1:10088/eureka

4、服務提供者續約、user-service加入配置

服務註冊、服務續約(服務提供者會維持一個心跳)

eureka:
  instance:
    lease-expiration-duration-in-seconds: 90 #服務續約(renew)的間隔,預設為30秒
    lease-renewal-interval-in-seconds: 30 #服務失效時間,預設值90秒

5、服務消費者:

獲取服務列表:

當服務消費者啟動時,會檢測eureka.client.fetch-registry=true引數的值,如果為true,
則會從Eureka Server服務的列表只讀備份,然後快取在本地。並且每隔30秒會重新獲取並更新資料。
我們可以通過下面的引數來修改:
eureka:
  client:
    registry-fetch-interval-seconds: 5 # 獲取服務列表的週期:5s

6、失效剔除和自我保護

Eureka Server需要將這樣的服務剔除出服務列表。它會開啟一個定時任務,每隔60秒對所有失效的服務(超過90秒未響應)進行剔除。

修改Eureka 配置檔案application.yml

eureka:
  server:
    enable-self-preservation: false # 關閉自我保護模式(預設為開啟)
    eviction-interval-timer-in-ms: 1000 # 掃描失效服務的間隔時間(預設為60*1000ms)