日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Consul和ZooKeeper的区别

發(fā)布時(shí)間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul和ZooKeeper的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Consul是一個(gè)在國(guó)外流行的服務(wù)發(fā)現(xiàn)和配置共享的服務(wù)軟件。本文翻譯自Consul的官方文檔,文中重點(diǎn)講述:在與主流同類(lèi)軟件ZooKeeper、Doozerd以及Etcd比較時(shí),Consul的優(yōu)勢(shì)所在。


ZooKeeper、Doozerd、Etcd在架構(gòu)上都非常相似,它們都有服務(wù)節(jié)點(diǎn)(server node),而這些服務(wù)節(jié)點(diǎn)的操作都要求達(dá)到節(jié)點(diǎn)的仲裁數(shù)(通常,節(jié)點(diǎn)的仲裁數(shù)遵循的是簡(jiǎn)單多數(shù)原則)。此外,它們都是強(qiáng)一致性的,并且提供各種原語(yǔ)。通過(guò)應(yīng)用程序內(nèi)部的客戶(hù)端lib庫(kù),這些原語(yǔ)可以用來(lái)構(gòu)建復(fù)雜的分布式系統(tǒng)。

Consul在一個(gè)單一的數(shù)據(jù)中心內(nèi)部使用服務(wù)節(jié)點(diǎn)。在每個(gè)數(shù)據(jù)中心中,為了Consul能夠運(yùn)行,并且保持強(qiáng)一致性,Consul服務(wù)端需要仲裁。然而,Consul原生支持多數(shù)據(jù)中心,就像一個(gè)豐富gossip系統(tǒng)連接服務(wù)器節(jié)點(diǎn)和客戶(hù)端一樣。

當(dāng)提供K/V存儲(chǔ)的時(shí)候,這些系統(tǒng)具有大致相同的語(yǔ)義,讀取是強(qiáng)一致性的,并且在面對(duì)網(wǎng)絡(luò)分區(qū)的時(shí)候,為了保持一致性,讀取的可用性是可以犧牲的。然而,當(dāng)系統(tǒng)應(yīng)用于復(fù)雜情況時(shí),這種差異會(huì)變得更加明顯。

這些系統(tǒng)提供的語(yǔ)義對(duì)開(kāi)發(fā)人員構(gòu)建服務(wù)發(fā)現(xiàn)系統(tǒng)很有吸引力,但更重要的是,強(qiáng)調(diào)開(kāi)發(fā)人員要構(gòu)建這些特性。ZooKeeper只提供一個(gè)原始的K/V值存儲(chǔ),并要求開(kāi)發(fā)人員構(gòu)建他們自己的系統(tǒng)來(lái)提供服務(wù)發(fā)現(xiàn)功能。相反的是,Consul提供了一個(gè)堅(jiān)固的框架,這不僅僅是為了提供服務(wù)發(fā)現(xiàn)功能,也是為了減少推測(cè)工作和開(kāi)發(fā)工作量。客戶(hù)端只需簡(jiǎn)單地完成服務(wù)注冊(cè)工作,然后使用一個(gè)DNS接口或者HTTP接口就可以執(zhí)行工作了,而其他系統(tǒng)則需要你定制自己的解決方案。

一個(gè)令人信服的服務(wù)發(fā)現(xiàn)框架必須包含健康檢測(cè)功能,并且考慮失敗的可能性。要是節(jié)點(diǎn)失敗或者服務(wù)故障了,即使開(kāi)發(fā)人員知道節(jié)點(diǎn)A提供Foo服務(wù)也是沒(méi)用的。Navie系統(tǒng)利用的是心跳、周期性更新和TTLs,這些系統(tǒng)不僅需要工作量與節(jié)點(diǎn)數(shù)量成線性關(guān)系,并且對(duì)服務(wù)器的固定數(shù)量提出了要求。此外,故障檢測(cè)窗口的存活時(shí)間至少要和TTL一樣長(zhǎng)。

ZooKeeper提供了臨時(shí)節(jié)點(diǎn),這些臨時(shí)節(jié)點(diǎn)就是K/V條目,當(dāng)客戶(hù)端斷開(kāi)連接時(shí),這些條目會(huì)被刪除。雖然這些臨時(shí)節(jié)點(diǎn)比一個(gè)心跳系統(tǒng)更高級(jí),但仍存在固有的擴(kuò)展性問(wèn)題,并且會(huì)增加客戶(hù)端的復(fù)雜性。與ZooKeeper服務(wù)器端連接時(shí),客戶(hù)端必須保持活躍,并且去做持續(xù)性連接。此外,ZooKeeper還需要胖客戶(hù)端,而胖客戶(hù)端是很難編寫(xiě)的,并且胖客戶(hù)端會(huì)經(jīng)常導(dǎo)致調(diào)試質(zhì)詢(xún)。

Consul使用一個(gè)完全不同的架構(gòu)進(jìn)行健康檢測(cè)。Consul客戶(hù)端可以運(yùn)行在集群中的每一個(gè)節(jié)點(diǎn)上,而不是擁有服務(wù)器的節(jié)點(diǎn),這些Consul客戶(hù)端屬于一個(gè)gossip pool,gossip pool提供了一些功能,包括分布式健康檢測(cè)。gossip協(xié)議提供了一個(gè)高效的故障檢測(cè)工具,這個(gè)故障檢測(cè)工具可以應(yīng)用到任意規(guī)模的集群,而不僅僅是作用于特定的服務(wù)器組。同時(shí),這個(gè)故障檢測(cè)工具也支持在本地進(jìn)行多種健康檢測(cè)。與此相反,ZooKeeper的臨時(shí)節(jié)點(diǎn)只是一個(gè)非常原始的活躍度檢測(cè)。因?yàn)橛辛薈onsul,客戶(hù)端可以檢測(cè)web服務(wù)器是否正在返回200狀態(tài)碼,內(nèi)存利用率是否達(dá)到臨界點(diǎn),是否有足夠的數(shù)據(jù)存儲(chǔ)盤(pán)等。此外,ZooKeeper會(huì)暴露系統(tǒng)的復(fù)雜性給客戶(hù)端,為了避免ZooKeeper出現(xiàn)的這種情況,Consul只提供一個(gè)簡(jiǎn)單HTTP接口。

Consul為服務(wù)發(fā)現(xiàn)、健康檢測(cè)、K/V存儲(chǔ)和多數(shù)據(jù)中心提供了一流的支持。為了支持任意存儲(chǔ),而不僅僅是簡(jiǎn)單的K/V存儲(chǔ),其他系統(tǒng)都要求工具和lib庫(kù)要率先建立。然而,通過(guò)使用客戶(hù)端節(jié)點(diǎn),Consul提供了一個(gè)簡(jiǎn)單的API,這個(gè)API的開(kāi)發(fā)只需要瘦客戶(hù)端就可以了, 而且,通過(guò)使用配置文件和DNS接口,開(kāi)發(fā)人員可以建立完整的服務(wù)發(fā)現(xiàn)解決方案,最終,達(dá)到避免開(kāi)發(fā)API的目的。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Consul和ZooKeeper的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。