Eureka核心特性
服務注冊
- Eureka Client在第一次心跳時向Eureka Server注冊
- 注冊時會提供諸多自身元數據:主機名、端口、健康指標URL等
服務續約
- Eureka Client通過發送心跳進行續約
- 默認情況下每30秒發送一次心跳
- 如90秒內Eureka Server未收到續約,則進行服務剔除
服務下線
- Eureka Client優雅退出時會發送cancel命令
- Eureka Server收到cancel命令時會刪除該節點
獲取注冊列表信息
- Eureka Client會緩存由Server獲取的注冊表信息
- Eureka Client會定期更新注冊表信息【默認30秒】
- Eureka Client會處理注冊表的合並等內容
Eureka面試點
CAP理論
- 一致性:Consistency
- 強一致性:多個節點的信息高度保持一致
- 弱一致性:多個節點的信息盡量保持一致
- 可用性:Availability
- 系統可用性
- 分區容錯性:Partition tolerance
- 不同網絡分區下,操作對其它系統可見
CAP理論:在任何一個時刻內,不可能有任何一個系統能同時滿足一致性、可用性,分區容錯性,可以任意兩兩組合,但不可能CAP完全滿足。
CP:類似Mysql
CA:典型的數據庫場景和分布式數據庫場景
AP:典型的Redis
多注冊中心比較
- 分布式基礎:CAP理論
- 常見的注冊中心:Zookeeper、Eureka等
- Eureka主要保證AP特性
- Zookeeper是典型的CP特性
- Zookeeper:當獲取到一個數據時,會對所有節點做廣播,廣播結束之前,不管是操作的哪一個節點,都不會看到所操作的數據
- Eureka:在多注冊中心的場景中,優先保證可用性。Eureka在服務剔除時,服務不是立刻下線,中間會有很多過程,如客戶端去服務端拉取數據時有30秒延遲,服務會保持一段時間,所以即使獲取到的是不可用節點,也能獲取
- AP和CP是Eureka和Zookeeper最主要的區別
Eureka注冊慢
- 注冊慢的根本原因在於Eureka的AP特性
- Eureka Client延遲注冊,默認30秒
- Eureka Server的響應緩存,默認30秒
- Eureka Server的緩存刷新,默認30秒
Eureka的自我保護
- Eureka Server會自動更新續約更新閥值
- Eureka Server續約更新頻率低於閾值則進入保護模式
- 自我保護模式下Eureka Server不會剔除任何注冊信息