Zookeeper和Eureka哪個更好?
Zookeeper和Eureka哪個更好?
1、CAP理論
一個分布式系統(tǒng)不可能同時很好的滿足一致性,可用性和分區(qū)容錯性這三個需求
C:數(shù)據(jù)一致性:保證所有數(shù)據(jù)都要同步
A:可用性:要保證任何時候請求數(shù)據(jù)都能夠正常響應(yīng)
P:分區(qū)容錯性:當(dāng)網(wǎng)絡(luò)通信發(fā)生故障時,集群仍然可用,不會因為某個節(jié)點掛了或者存在問題,而影響整個系統(tǒng)的正常運作
對于分布式系統(tǒng)來說,出現(xiàn)網(wǎng)絡(luò)分區(qū)是不可避免的,因此分區(qū)容錯性是必須要具備的,也就是說,CAP三者,P是必須的
2、Zookeeper保證CP原則
當(dāng)向注冊中心查詢服務(wù)列表時,我們可以容忍注冊中心返回的是幾分鐘以前的注冊信息,但不能接受服務(wù)直接down掉不可用。也就是說,服務(wù)注冊功能對可用性的要求高于一致性。但是zookeeper會出現(xiàn)一種情況,當(dāng)master節(jié)點因為網(wǎng)絡(luò)故障與其他節(jié)點失去聯(lián)系時,剩余節(jié)點會重新進行l(wèi)eader選舉。問題在于,選舉leader的時間太長,30~120s,且選舉期間整個zookeeper集群都是不可用的,這就導(dǎo)致在選舉期間服務(wù)癱瘓。在云部署的環(huán)境下,因網(wǎng)絡(luò)問題使得zookeeper集群失去master節(jié)點是較大概率會發(fā)生的事,雖然服務(wù)能夠最終恢復(fù),但是漫長的選舉時間導(dǎo)致的注冊長期不可用是不能容忍的
3、Eureka保證AP原則
Eureka優(yōu)先保證可用性。Eureka各個節(jié)點都是平等的,幾個節(jié)點掛掉不會影響正常節(jié)點的工作,剩余的節(jié)點依然可以提供注冊和查詢服務(wù)。而Eureka的客戶端在向某個Eureka注冊或是如果發(fā)現(xiàn)連接失敗,則會自動切換至其他節(jié)點,只要有一臺Eureka還在,就能保證注冊服務(wù)可用(保證高可用),只不過查詢的信息可能不是最新的(不保證強一致性)。除此之外,Eureka還有一種自我保護機制,如果在15分鐘內(nèi)超過85%的節(jié)點都沒有正常的心跳,那么Eureka就認(rèn)為客戶端與注冊中心出現(xiàn)了網(wǎng)絡(luò)故障,此時會出現(xiàn)以下幾種情況:
1.Eureka不再從注冊列表中移除因為長時間沒收到心跳而應(yīng)該過期的服務(wù)
2.Eureka仍然能夠接受新服務(wù)的注冊和查詢請求,但是不會被同步到其他節(jié)點上(即保證當(dāng)前節(jié)點仍然可用)
3.當(dāng)網(wǎng)絡(luò)穩(wěn)定時,當(dāng)前實例新的注冊信息會被同步到其他節(jié)點中
因此,Eureka可以很好的應(yīng)對網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點失去聯(lián)系的情況,而不會像zookeeper那樣使整個注冊服務(wù)癱瘓
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- SpringBoot+Eureka實現(xiàn)微服務(wù)負(fù)載均衡的示例代碼
- SpringCloud Eureka服務(wù)發(fā)現(xiàn)實現(xiàn)過程
- SpringCloud Eureka Provider及Consumer的實現(xiàn)
- springboot2.0和springcloud Finchley版項目搭建(包含eureka,gateWay,F(xiàn)reign,Hystrix)
- Spring-cloud-eureka使用feign調(diào)用服務(wù)接口
- 細(xì)說Springcloud eureka的幾種主動下線服務(wù)的方式
- spring cloud eureka微服務(wù)之間的調(diào)用詳解
- Springcould多模塊搭建Eureka服務(wù)器端口過程詳解
相關(guān)文章
Java中Random簡介_動力節(jié)點Java學(xué)院整理
本文詳細(xì)給大家介紹了Java中Random簡介相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-06-06關(guān)于MyBatis plus條件構(gòu)造器的逐條詳解
什么是條件構(gòu)造器呢?簡單來說,條件構(gòu)造器就是用來生成我們查數(shù)據(jù)庫的sql。它可以簡化sql代碼的編寫,靈活、方便且易于維護2021-09-09Spring boot 使用JdbcTemplate訪問數(shù)據(jù)庫
SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物。本文重點給大家介紹spring boot 使用JdbcTemplate訪問數(shù)據(jù)庫,需要的朋友可以參考下2018-05-05使用Springboot根據(jù)配置文件動態(tài)注入接口實現(xiàn)類
這篇文章主要介紹了使用Springboot根據(jù)配置文件動態(tài)注入接口實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08關(guān)于synchronized的參數(shù)及其含義
這篇文章主要介紹了synchronized的參數(shù)及其含義詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10