Zookeeper和Eureka哪個(gè)更好?
Zookeeper和Eureka哪個(gè)更好?
1、CAP理論
一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性,可用性和分區(qū)容錯(cuò)性這三個(gè)需求
C:數(shù)據(jù)一致性:保證所有數(shù)據(jù)都要同步
A:可用性:要保證任何時(shí)候請(qǐng)求數(shù)據(jù)都能夠正常響應(yīng)
P:分區(qū)容錯(cuò)性:當(dāng)網(wǎng)絡(luò)通信發(fā)生故障時(shí),集群仍然可用,不會(huì)因?yàn)槟硞€(gè)節(jié)點(diǎn)掛了或者存在問題,而影響整個(gè)系統(tǒng)的正常運(yùn)作
對(duì)于分布式系統(tǒng)來說,出現(xiàn)網(wǎng)絡(luò)分區(qū)是不可避免的,因此分區(qū)容錯(cuò)性是必須要具備的,也就是說,CAP三者,P是必須的
2、Zookeeper保證CP原則
當(dāng)向注冊(cè)中心查詢服務(wù)列表時(shí),我們可以容忍注冊(cè)中心返回的是幾分鐘以前的注冊(cè)信息,但不能接受服務(wù)直接down掉不可用。也就是說,服務(wù)注冊(cè)功能對(duì)可用性的要求高于一致性。但是zookeeper會(huì)出現(xiàn)一種情況,當(dāng)master節(jié)點(diǎn)因?yàn)榫W(wǎng)絡(luò)故障與其他節(jié)點(diǎn)失去聯(lián)系時(shí),剩余節(jié)點(diǎn)會(huì)重新進(jìn)行l(wèi)eader選舉。問題在于,選舉leader的時(shí)間太長(zhǎng),30~120s,且選舉期間整個(gè)zookeeper集群都是不可用的,這就導(dǎo)致在選舉期間服務(wù)癱瘓。在云部署的環(huán)境下,因網(wǎng)絡(luò)問題使得zookeeper集群失去master節(jié)點(diǎn)是較大概率會(huì)發(fā)生的事,雖然服務(wù)能夠最終恢復(fù),但是漫長(zhǎng)的選舉時(shí)間導(dǎo)致的注冊(cè)長(zhǎng)期不可用是不能容忍的
3、Eureka保證AP原則
Eureka優(yōu)先保證可用性。Eureka各個(gè)節(jié)點(diǎn)都是平等的,幾個(gè)節(jié)點(diǎn)掛掉不會(huì)影響正常節(jié)點(diǎn)的工作,剩余的節(jié)點(diǎn)依然可以提供注冊(cè)和查詢服務(wù)。而Eureka的客戶端在向某個(gè)Eureka注冊(cè)或是如果發(fā)現(xiàn)連接失敗,則會(huì)自動(dòng)切換至其他節(jié)點(diǎn),只要有一臺(tái)Eureka還在,就能保證注冊(cè)服務(wù)可用(保證高可用),只不過查詢的信息可能不是最新的(不保證強(qiáng)一致性)。除此之外,Eureka還有一種自我保護(hù)機(jī)制,如果在15分鐘內(nèi)超過85%的節(jié)點(diǎn)都沒有正常的心跳,那么Eureka就認(rèn)為客戶端與注冊(cè)中心出現(xiàn)了網(wǎng)絡(luò)故障,此時(shí)會(huì)出現(xiàn)以下幾種情況:
1.Eureka不再?gòu)淖?cè)列表中移除因?yàn)殚L(zhǎng)時(shí)間沒收到心跳而應(yīng)該過期的服務(wù)
2.Eureka仍然能夠接受新服務(wù)的注冊(cè)和查詢請(qǐng)求,但是不會(huì)被同步到其他節(jié)點(diǎn)上(即保證當(dāng)前節(jié)點(diǎn)仍然可用)
3.當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),當(dāng)前實(shí)例新的注冊(cè)信息會(huì)被同步到其他節(jié)點(diǎn)中
因此,Eureka可以很好的應(yīng)對(duì)網(wǎng)絡(luò)故障導(dǎo)致部分節(jié)點(diǎn)失去聯(lián)系的情況,而不會(huì)像zookeeper那樣使整個(gè)注冊(cè)服務(wù)癱瘓
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- SpringBoot+Eureka實(shí)現(xiàn)微服務(wù)負(fù)載均衡的示例代碼
- SpringCloud Eureka服務(wù)發(fā)現(xiàn)實(shí)現(xiàn)過程
- SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)
- springboot2.0和springcloud Finchley版項(xiàng)目搭建(包含eureka,gateWay,F(xiàn)reign,Hystrix)
- Spring-cloud-eureka使用feign調(diào)用服務(wù)接口
- 細(xì)說Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式
- spring cloud eureka微服務(wù)之間的調(diào)用詳解
- Springcould多模塊搭建Eureka服務(wù)器端口過程詳解
相關(guān)文章
idea打不開雙擊IDEA圖標(biāo)沒反應(yīng)的快速解決方案
這篇文章主要介紹了idea打不開雙擊IDEA圖標(biāo)沒反應(yīng)的快速解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
詳解Java Bellman-Ford算法原理及實(shí)現(xiàn)
Bellman-Ford算法與Dijkstra算法類似,都是以松弛操作作為基礎(chǔ),Bellman-Ford算法是對(duì)所有邊都進(jìn)行松弛操作,本文將詳解Bellman-Ford算法原理及實(shí)現(xiàn),感興趣的可以了解一下2022-07-07
Java 8 動(dòng)態(tài)類型語(yǔ)言Lambda表達(dá)式實(shí)現(xiàn)原理解析
Java 8支持動(dòng)態(tài)語(yǔ)言,看到了很酷的Lambda表達(dá)式,對(duì)一直以靜態(tài)類型語(yǔ)言自居的Java,讓人看到了Java虛擬機(jī)可以支持動(dòng)態(tài)語(yǔ)言的目標(biāo)。接下來通過本文給大家介紹Java 8 動(dòng)態(tài)類型語(yǔ)言Lambda表達(dá)式實(shí)現(xiàn)原理分析,需要的朋友可以參考下2017-02-02
比較java中Future與FutureTask之間的關(guān)系

