《Spring Cloud 微服務實戰_Eureka》

這是一篇關於《Spring Cloud微服務實戰》中第三章Eureka的個人筆記。

1.Eureka是Spring Cloud Netfix微服務套件中的一部分,主要負責完成微服務架構中的服務治理功能。

服務治理

服務治理作爲微服務中最爲核心和基礎的模塊,主要用來實現各個微服務實例的自動化註冊於發現。包含了服務端及客戶端。
    服務端(服務註冊中心),支持高可用配置,依託強一致性提供良好的服務實例可用性,來應對多種不同的故障場景。在集羣模式中,如果存在分片故障,允許在故障期間繼續提供服務的註冊於發現,當故障分片恢復允許時,集羣的其他分片會把它們的狀態再次同步回來。不同可用的服務註冊中心通過異步模式相互複製各自的狀態。
    客戶端。處理服務的註冊於發現。向註冊中心註冊自身的服務,並且週期性的發送心跳來更新服務租約,同時,查詢當前註冊的服務信息,並緩存到本地並週期性地刷新服務狀態。

eureka.client.register-with-eureka: 註冊中心,false 代表不向註冊中心註冊自己。
eureka.client.fetch-registry: 服務中心的職責是維護服務實例,不需要檢索服務,所以設置爲false。

高可用的設計,所有的節點既是服務提供方,消費方。因此,將自己作爲服務向其他服務註冊中心註冊自己,這樣就可以形成一組互相註冊的服務註冊中心,實現服務清單的互相同步。
在這裏插入圖片描述

服務的消費

Ribbon是一個基於HTTP和TCP的客戶端負載均衡器。通過客戶端中配置的ribbonServerList服務端列表去輪詢訪問,以達到均衡負載的作用。

  • 不熟悉,先不寫,然後補充。
  • Feign

服務治理機制

服務續約
註冊完服務之後,服務提供者會維護一個心跳用來持續告訴Eureka Server:“我還活着”,防止“剔除服務”。

eureka.instance.lease-renewal-interval-in-seconds=30 服務續約任務的調用間隔,默認30S
eureka.instance.lease-expiration-duration-in-seconds=90 服務失效的時間,默認90S

獲取服務
當啓動服務的消費者時,會發送一個Rest請求給服務註冊中心,來獲取服務清單,爲了性能考慮,中心會返回一個可讀的服務清單,緩存清單30s更新。

eureka.client.fetch-registry: 獲取清單是服務消費者基礎,必須確保爲true。
eureka.client.fetch-registry-fetch-interval-seconds=30 緩存更新時間。

服務調用
1.消費者可根據服務清單上的實例名和元數據信息來進行調用。
Ribbon採用輪詢方式,從而實踐負載均衡。
2.Region和Zone。
    一個Region可以包含多個Zone,服務調用優先調用同處一個Zone中的服務提供方,訪問不到再去訪問其他Zone。

服務下線
正常關閉會發送一個Rest請求,中心接受,並且下線事件傳播出去。

自我保護
中心運行期間會統計心跳失敗的比例在15分鐘之內是否低於85%,低於會將當前實例信息保護起來(原因之一可能因爲網絡不穩定),不會過期。但這段時間實例出現問題,客戶端很容易拿到實際已經不存在的服務實例,出現調用失敗,因此需要有容錯機制。如請求重試,斷路器等機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章