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)掛了或者存在問(wèn)題,而影響整個(gè)系統(tǒng)的正常運(yùn)作
對(duì)于分布式系統(tǒng)來(lái)說(shuō),出現(xiàn)網(wǎng)絡(luò)分區(qū)是不可避免的,因此分區(qū)容錯(cuò)性是必須要具備的,也就是說(shuō),CAP三者,P是必須的
2、Zookeeper保證CP原則
當(dāng)向注冊(cè)中心查詢(xún)服務(wù)列表時(shí),我們可以容忍注冊(cè)中心返回的是幾分鐘以前的注冊(cè)信息,但不能接受服務(wù)直接down掉不可用。也就是說(shuō),服務(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選舉。問(wèn)題在于,選舉leader的時(shí)間太長(zhǎng),30~120s,且選舉期間整個(gè)zookeeper集群都是不可用的,這就導(dǎo)致在選舉期間服務(wù)癱瘓。在云部署的環(huán)境下,因網(wǎng)絡(luò)問(wèn)題使得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è)和查詢(xún)服務(wù)。而Eureka的客戶(hù)端在向某個(gè)Eureka注冊(cè)或是如果發(fā)現(xiàn)連接失敗,則會(huì)自動(dòng)切換至其他節(jié)點(diǎn),只要有一臺(tái)Eureka還在,就能保證注冊(cè)服務(wù)可用(保證高可用),只不過(guò)查詢(xún)的信息可能不是最新的(不保證強(qiáng)一致性)。除此之外,Eureka還有一種自我保護(hù)機(jī)制,如果在15分鐘內(nèi)超過(guò)85%的節(jié)點(diǎn)都沒(méi)有正常的心跳,那么Eureka就認(rèn)為客戶(hù)端與注冊(cè)中心出現(xiàn)了網(wǎng)絡(luò)故障,此時(shí)會(huì)出現(xiàn)以下幾種情況:
1.Eureka不再?gòu)淖?cè)列表中移除因?yàn)殚L(zhǎng)時(shí)間沒(méi)收到心跳而應(yīng)該過(guò)期的服務(wù)
2.Eureka仍然能夠接受新服務(wù)的注冊(cè)和查詢(xún)請(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)過(guò)程
- 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ì)說(shuō)Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式
- spring cloud eureka微服務(wù)之間的調(diào)用詳解
- Springcould多模塊搭建Eureka服務(wù)器端口過(guò)程詳解
相關(guān)文章
Java中Random簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文詳細(xì)給大家介紹了Java中Random簡(jiǎn)介相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-06-06關(guān)于MyBatis plus條件構(gòu)造器的逐條詳解
什么是條件構(gòu)造器呢?簡(jiǎn)單來(lái)說(shuō),條件構(gòu)造器就是用來(lái)生成我們查數(shù)據(jù)庫(kù)的sql。它可以簡(jiǎn)化sql代碼的編寫(xiě),靈活、方便且易于維護(hù)2021-09-09Spring框架基于xml實(shí)現(xiàn)自動(dòng)裝配流程詳解
自動(dòng)裝配就是指?Spring?容器在不使用?<constructor-arg>?和<property>?標(biāo)簽的情況下,可以自動(dòng)裝配(autowire)相互協(xié)作的?Bean?之間的關(guān)聯(lián)關(guān)系,將一個(gè)?Bean?注入其他?Bean?的?Property?中2022-11-11Java雙向鏈表倒置功能實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Java雙向鏈表倒置功能實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Spring boot 使用JdbcTemplate訪問(wèn)數(shù)據(jù)庫(kù)
SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問(wèn)題而誕生的產(chǎn)物。本文重點(diǎn)給大家介紹spring boot 使用JdbcTemplate訪問(wèn)數(shù)據(jù)庫(kù),需要的朋友可以參考下2018-05-05Springboot集成restTemplate過(guò)程詳解
這篇文章主要介紹了Springboot集成restTemplate過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04關(guān)于Kill指令停掉Java程序的問(wèn)題
這篇文章主要介紹了Kill指令停掉Java程序的思考,主要探究kill指令和java的關(guān)閉鉤子的問(wèn)題,需要的朋友可以參考下2021-10-10使用Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類(lèi)
這篇文章主要介紹了使用Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類(lèi),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08關(guān)于synchronized的參數(shù)及其含義
這篇文章主要介紹了synchronized的參數(shù)及其含義詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10