自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Zookeeper和Eureka有哪些區(qū)別?

開(kāi)發(fā) 前端
在分布式系統(tǒng)的發(fā)展中,影響最大的莫過(guò)于CAP定理了,是分布式系統(tǒng)發(fā)展的理論基石。

 [[373700]]

CAP定理

在分布式系統(tǒng)的發(fā)展中,影響最大的莫過(guò)于CAP定理了,是分布式系統(tǒng)發(fā)展的理論基石。

 

  1. 2000年,加州大學(xué)的計(jì)算機(jī)科學(xué)家 Eric Brewer提出了CAP猜想
  2. 2002 年,麻省理工學(xué)院的 Seth Gilbert 和 Nancy Lynch 從理論上證明了 CAP 猜想,CAP猜想成為了CAP定理

「CAP定理,簡(jiǎn)單來(lái)說(shuō)就是分布式系統(tǒng)不可能同時(shí)滿足Consistency 一致性、Availability 可用性、Partition Tolerance 分區(qū)容錯(cuò)性三個(gè)要素」

Consistency 一致性

一致性的含義為,在節(jié)點(diǎn)的任意時(shí)刻,訪問(wèn)任意節(jié)點(diǎn)返回的數(shù)據(jù)是一致的。即Client端寫入一個(gè)數(shù)據(jù)后,Server端將數(shù)據(jù)同步到整個(gè)系統(tǒng),從而保證系統(tǒng)的數(shù)據(jù)都相同

 

Availability 可用性

可用性的含義為,集群能夠?qū)τ脩舻恼?qǐng)求給予響應(yīng)。

 

Partition Tolerance 分區(qū)容錯(cuò)性

分區(qū)容錯(cuò)的含義為,當(dāng)出現(xiàn)分區(qū)故障時(shí),系統(tǒng)仍要對(duì)外提供服務(wù)。分布式系統(tǒng)中,每個(gè)服務(wù)節(jié)點(diǎn)都是不可靠的,當(dāng)某些節(jié)點(diǎn)出現(xiàn)異常時(shí),或者節(jié)點(diǎn)之間的通訊產(chǎn)生異常時(shí),整個(gè)系統(tǒng)就產(chǎn)生了分區(qū)問(wèn)題,分布式系統(tǒng)中分區(qū)問(wèn)題是客觀存在的。

 

CAP權(quán)衡

CA

系統(tǒng)選擇CA,即不支持分區(qū)容錯(cuò),只支持一致性和可用性。意味著不允許出現(xiàn)分區(qū)異常,網(wǎng)絡(luò)一致處于理想狀態(tài)。但是分布式系統(tǒng)之間網(wǎng)絡(luò)異常是客觀存在的,如果避免了P,只能把分布式系統(tǒng)退回到單實(shí)例系統(tǒng)。

 

CP

因?yàn)榉植际较到y(tǒng)P是客觀存在的,所以我們要在CP和AP之間進(jìn)行抉擇。

在網(wǎng)絡(luò)分區(qū)發(fā)生時(shí),兩個(gè)分布式節(jié)點(diǎn)之間無(wú)法進(jìn)行通信,我們對(duì)一個(gè)節(jié)點(diǎn)進(jìn)行的修改操作將無(wú)法同步到另外一個(gè)節(jié)點(diǎn),所以數(shù)據(jù)的「一致性」將無(wú)法滿足,因?yàn)閮蓚€(gè)分布式節(jié)點(diǎn)的數(shù)據(jù)不再保持一致。除非我們犧牲「可用性」,也就是暫停分布式節(jié)點(diǎn)服務(wù),在網(wǎng)絡(luò)分區(qū)發(fā)生時(shí),不再提供修改數(shù)據(jù)的功能,直到網(wǎng)絡(luò)狀況完全恢復(fù)正常再繼續(xù)對(duì)外提供服務(wù)

「當(dāng)選擇CP時(shí),相當(dāng)于放棄系統(tǒng)的可用性,換取一致性」。zookeeper是選擇了CP的系統(tǒng)

在zookeeper集群中,有如下三種角色

 

角色 作用
Leader 事務(wù)請(qǐng)求的唯一調(diào)度者和處理者 (事務(wù)請(qǐng)求為除查詢之外的請(qǐng)求)
Follower 處理非事務(wù)請(qǐng)求,參與Leader選舉投票
Observer 處理非事務(wù)請(qǐng)求,不參與選舉投票

在Leader服務(wù)器失效時(shí),會(huì)重新從Follower服務(wù)器中選舉一個(gè)新的服務(wù)器作為L(zhǎng)eader服務(wù)器?!冈谥匦逻x舉Leader服務(wù)器的過(guò)程中,事務(wù)請(qǐng)求會(huì)被掛起,選舉完Leader服務(wù)器之后才會(huì)執(zhí)行這些請(qǐng)求」。即為了保證一致性,放棄了系統(tǒng)的可用性

AP

 

「當(dāng)選擇AP時(shí),相當(dāng)于放棄系統(tǒng)一致性,換取可用性」。eureka是選擇了AP的系統(tǒng)

和zookeeper集群中有三種角色不同的是,eureka集群中每個(gè)節(jié)點(diǎn)扮演相同的角色,他們通過(guò)互相注冊(cè)的方式來(lái)感知對(duì)方的存在,當(dāng)有注冊(cè)信息時(shí),他們會(huì)同步給集群內(nèi)的其他節(jié)點(diǎn)。

下面我從源碼角度分析一下eureka是如何放棄一致性來(lái)保證可用性的(放心,不會(huì)放源碼的,說(shuō)一下大概思路。源碼也比較簡(jiǎn)單,有興趣的可以看我寫的博客https://blog.csdn.net/zzti_erlie/article/details/104088914)

 

eureka注冊(cè)中心的信息保存在AbstractInstanceRegistry類的成員變量中

  1. // AbstractInstanceRegistry 
  2. private final ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry 
  3.  = new ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>(); 

就是一個(gè)雙層map,這個(gè)雙層map也很好理解。最外層是服務(wù)名,里面是一個(gè)具體的實(shí)例名

當(dāng)有服務(wù)往eureka上注冊(cè)時(shí),注冊(cè)信息會(huì)被保存在map中,同時(shí)會(huì)把信息同步給其他的節(jié)點(diǎn)。此時(shí)有可能有些節(jié)點(diǎn)不可用了,或者網(wǎng)絡(luò)故障,并沒(méi)有收到信息,此時(shí)集群節(jié)點(diǎn)內(nèi)的信息可能是不一致的。

 

當(dāng)客戶端從某個(gè)eureka節(jié)點(diǎn)獲取信息失敗,或者注冊(cè)失敗,會(huì)自動(dòng)切換到另一個(gè)eureka節(jié)點(diǎn)。只要有一臺(tái)eureka節(jié)點(diǎn)可用,就能保證注冊(cè)服務(wù)可用。

Zookeeper和Eureka的區(qū)別

最后總結(jié)一下兩者的區(qū)別

  Zookeeper Eureka
設(shè)計(jì)原則 CP AP
優(yōu)點(diǎn) 數(shù)據(jù)最終一致 服務(wù)高可用
缺點(diǎn) 選舉leader過(guò)程中集群不可用 服務(wù)節(jié)點(diǎn)間的數(shù)據(jù)可能不一致
適用場(chǎng)景 對(duì)數(shù)據(jù)一致性要求較高 對(duì)注冊(cè)中心服務(wù)可用性要求較高

本文轉(zhuǎn)載自微信公眾號(hào)「Java識(shí)堂」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java識(shí)堂公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Java識(shí)堂
相關(guān)推薦

2024-10-23 15:50:41

虛擬化容器化

2021-05-28 06:19:22

ZooKeeperConsulNacos

2021-05-10 08:01:12

BeanFactoryFactoryBean容器

2020-01-10 10:58:34

ZooKeeperEureka注冊(cè)中心

2015-06-18 09:38:46

路由器交換機(jī)

2025-01-09 08:32:50

2025-02-06 13:19:31

RustPin系統(tǒng)

2024-10-22 09:59:36

虛擬化容器化系統(tǒng)

2019-02-22 05:23:36

VLANVXLAN網(wǎng)絡(luò)技術(shù)

2020-06-15 08:19:00

ZooKeeperEureka

2020-06-29 07:58:18

ZooKeeperConsul 注冊(cè)中心

2019-08-15 16:41:51

軟件工程物聯(lián)網(wǎng)信息安全

2015-09-07 09:23:07

推薦廣告系統(tǒng)

2011-11-07 09:31:20

大數(shù)據(jù)Hadoop

2021-07-22 09:00:00

SPAPWAWeb

2021-03-07 16:45:42

RPAAI機(jī)器人自動(dòng)化

2020-12-17 11:13:34

積木報(bào)表帆軟報(bào)表開(kāi)源1.0-beta

2018-03-02 10:19:51

超融合架構(gòu)傳統(tǒng)IT架構(gòu)

2020-03-09 20:56:19

LoRaLoRaWAN無(wú)線技術(shù)

2023-01-04 11:41:31

微服務(wù)SOA架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)