SpringCloud--04、Eureka叢集
阿新 • • 發佈:2018-12-11
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)