Eureka和Zookeeper兩個的區(qū)別
首先來說說CAP定理
指的是在一個分布式系統(tǒng)中, Consistency(一致性)弥咪、 Availability(可用性)、Partition tolerance(分區(qū)容錯性)本橙,三者不可得兼坦报。
一致性(C)
在分布式系統(tǒng)中的所有數(shù)據(jù)備份潜的,在同一時刻是否同樣的值啰挪。(等同于所有節(jié)點訪問同一份最新的數(shù)據(jù)副本)
可用性(A)
在集群中一部分節(jié)點故障后硫戈,集群整體是否還能響應客戶端的讀寫請求丁逝。(對數(shù)據(jù)更新具備高可用性)
分區(qū)容忍性(P)
以實際效果而言嫩码,分區(qū)相當于對通信的時限要求。系統(tǒng)如果不能在時限內(nèi)達成數(shù)據(jù)一致性丢间,就意味著發(fā)生了分區(qū)的情況祭刚,必須就當前操作在C和A之間做出選擇暗甥。 多數(shù)分布式系統(tǒng)都分布在多個子網(wǎng)絡撤防。每個子網(wǎng)絡就叫做一個區(qū)辜膝。
注意:CAP三者只能滿足其二(不太準確,應該是在保證網(wǎng)絡分區(qū)P的情況下忱辅,只能在C與A之間選一個,如果不是分布式系統(tǒng)损搬,不存在P的情況下C與A都可以滿足)
再來說說Zookeeper 的選舉機制和半數(shù)機制
Zookeeper本質(zhì): 文件系統(tǒng)+ 通知機制
選舉機制
三個核心選舉原則:
(1)Zookeeper集群中只有超過半數(shù)以上的服務器啟動,集群才能正常工作踢关;
(2)在集群正常工作之前,myid小的服務器給myid大的服務器投票儒搭,直到集群正常工作,選出Leader魂仍;
(3)選出Leader之后擦酌,之前的服務器狀態(tài)由Looking改變?yōu)镕ollowing,以后的服務器都是Follower园骆。
半數(shù)機制
集群中半數(shù)以上機器存活,集群可用。所以Zookeeper適合安裝奇數(shù)臺服務器渐排。
舉例詳細說明一下
假如有5臺服務器炒考,id從1到5依次啟動
(1)服務器1啟動,發(fā)起一次選舉:
服務器1投自己一票。此時服務器1票數(shù)一票轩勘,不夠半數(shù)以上(3票)悬秉,選舉無法完成懂缕; 服務器1狀態(tài)保持為Looking索烹;
(2)服務器2啟動况木,再發(fā)起一次選舉:
服務器1和2分別投自己一票垒拢,此時服務器1發(fā)現(xiàn)服務器2的id比自己大尸疆,更改選票投給服務器2按灶;
此時服務器1票數(shù)0票,服務器2票數(shù)2票,不夠半數(shù)以上(3票),選舉無法完成; 服務器1鸠删,2狀態(tài)保持Looking;
(3)服務器3啟動,發(fā)起一次選舉。
與上面過程一樣,服務器1和2先投自己一票逛薇,然后因為服務器3id最大呢袱,兩者更改選票投給為服務器3蚯涮;
此次投票結(jié)果:服務器1為0票,服務器2為0票,服務器3為3票。此時服務器3的票數(shù)已經(jīng)超過半數(shù)(3票),服務器3當選Leader饱狂。服務器1毯焕,2更改狀態(tài)為Following芜辕,服務器3更改狀態(tài)為Leading憨闰;
(4)服務器4啟動,發(fā)起一次選舉。
此時服務器1,2,3已經(jīng)不是Looking狀態(tài),不會更改選票信息。選票信息結(jié)果:服務器3為3票朦肘,服務器4為1票趴生。
此時服務器4服從多數(shù)棚菊,更改選票信息為服務器3码邻;服務器4并更改狀態(tài)為Following开睡;
(5)服務器5啟動,同4一樣投票給3,此時服務器3一共5票,服務器5為0票;服務器5并更改狀態(tài)為Following浮驳;
最終Leader是服務器3奉件,狀態(tài)為Leading宣吱;
其余服務器是Follower疤坝,狀態(tài)為Following历谍。
前面是一些準備知識脱衙,接下來總結(jié)區(qū)別
1.Zookeeper 重CP 荤胁,Eureka 重的是AP ,Zookeeper 數(shù)據(jù)是寫入到Leader中,然后再由Leader 將數(shù)據(jù)同步到 Follwer 中,保證了數(shù)據(jù)一致性(C)檀咙,但如果Zookeeper 某個節(jié)點掛掉時,會重新的選取Leader,在選取Leader的過程中有可能會導致選取時間過長(一般為30~120s)犀变, 整個注冊中心就會處于一個癱瘓狀態(tài)無法對外提供服務妹孙,而Eureka 看出了這一點机隙,在設計時萨西,就強調(diào)了CAP 中的A谎脯,在Eureka集群中,每個節(jié)點的地位都是一樣的模庐,任何節(jié)點掛掉后慎冤,剩下的節(jié)點都能對外提供服務醉者,保證了A 。
2.Eureka作為Spring Could中的組件孩革,后臺Spring 提供了更加強大的技術(shù)支持。