eureka和zookeeper的區別


注冊中心規則

每一個微服務啟動的時候,都需要去注冊中心注冊(eureka或zookeeper或其他)

同類服務注冊的服務名必須相同,不同類服務注冊的服務名一定不能相同
(訂單服務部署5台服務器,那么這5台微服務在注冊中心中注冊的服務名必須一致,例如ORDER)
(商品服務部署4台服務器,那么這4台微服務在注冊中心中注冊的服務名必須一致,例如GOODS)
(訂單服務和商品服務注冊的服務名一定不能相同,不能同為ORDER,也不能同為GOODS)

eureka是什么

eureka作為分布式系統的注冊中心,主要作用是用於服務治理

eureka分為eureka server和eureka client

eureka原理

每一個微服務中都有eureka client,用於服務的注冊於發現
(服務的注冊:把自己注冊到eureka server)
(服務的發現:從eureka server獲取自己需要的服務列表)

每一個微服務啟動的時候,都需要去eureka server注冊

當A服務需要調用B服務時,需要從eureka服務端獲取B服務的服務列表,然后把列表緩存到本地,然后根據ribbon的客戶端負載均衡規則,從服務列表中取到一個B服務,然后去調用此B服務
當A服務下次再此調用B服務時,如果發現本地已經存儲了B的服務列表,就不需要再從eureka服務端獲取B服務列表,直接根據ribbon的客戶端負載均衡規則,從服務列表中取到一個B服務,然后去調用B服務

微服務,默認每30秒,就會從eureka服務端獲取一次最新的服務列表

如果某台微服務down機,或者添加了幾台機器,
此時eureka server會通知訂閱他的客戶端,並讓客戶端更新服務列表,
而且還會通知其他eureka server更新此信息

心跳檢測,微服務每30秒向eureka server發送心跳,
eureka server若90s之內都沒有收到某個客戶端的心跳,則認為此服務出了問題,
會從注冊的服務列表中將其刪除,並通知訂閱它的客戶端更新服務列表,
而且還會通知其他eureka server更新此信息

eureka server保護機制,通過打卡開關,可以讓eureka server處於保護狀態,主要是用於某eureka server由於網絡或其他原因,導致接收不到其他微服務的心跳,此時不能盲目的將其他微服務從服務列表中刪除。
具體規則:如果一段時間內,85%的服務都沒有發送心跳,則此server進入保護狀態,此狀態下,可以正常接受注冊,可以正常提供查詢服務,但是不與其他server同步信息,也不會通知訂閱它的客戶端,這樣就不會誤殺其他微服務

zookeeper原理

zookeeper也可以作為注冊中心,用於服務治理(zookeeper還有其他用途,例如:分布式事務鎖等)	
每啟動一個微服務,就會去zk中注冊一個臨時子節點,
例如:5台訂單服務,4台商品服務
(5台訂單服務在zk中的訂單目錄下創建的5個臨時節點)
(4台商品服務在zk中的商品目錄下創建的4個臨時接點)

每當有一個服務down機,由於是臨時接點,此節點會立即被刪除,並通知訂閱該服務的微服務更新服務列表
(zk上有watch,每當有節點更新,都會通知訂閱該服務的微服務更新服務列表)

每當有一個新的微服務注冊進來,就會在對應的目錄下創建臨時子節點,並通知訂閱該服務的微服務更新服務列表
(zk上有watch,每當有節點更新,都會通知訂閱該服務的微服務更新服務列表)

每個微服務30s向zk獲取新的服務列表

CAP基本概念

分布式系統的三個指標
1、Consistency	一致性

2、Availability	可用性

3、Partition tolerance	分區容錯性

eureka和zookeeper區別

eureka基於AP

zookeeper基於CP

由於作為注冊中心可用性的需求要高於一致性,所以eureka貌似要比zookeeper更合理一些


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM