《重新定義Spring Cloud實(shí)戰(zhàn)》——2.1.3 服務(wù)發(fā)現(xiàn)技術(shù)選型
2.1.3 服務(wù)發(fā)現(xiàn)技術(shù)選型
Jason Wilder在2014年2月的時(shí)候?qū)懥艘黄┛汀禣pen-Source Service Discovery》(http://jasonwilder.com/blog/2014/02/04/service-discovery-in-the-cloud/),總結(jié)了當(dāng)時(shí)市面上的幾類服務(wù)發(fā)現(xiàn)組件,這里補(bǔ)充上consul以及一致性算法,如表2-1所示。
表2-1 服務(wù)發(fā)現(xiàn)組件對(duì)比
從列表看,有很多服務(wù)發(fā)現(xiàn)組件可以選擇,針對(duì)AP及CP,本書(shū)主要選取了Eureka及Consul為代表來(lái)闡述。關(guān)于Eureka及Consul的區(qū)別,Consul的官方文檔有一個(gè)很好的闡述(https://www.consul.io/intro/vs/eureka.html),具體如下:
Eureka Server端采用的是P2P的復(fù)制模式,但是它不保證復(fù)制操作一定能成功,因此它提供的是一個(gè)最終一致性的服務(wù)實(shí)例視圖;Client端在Server端的注冊(cè)信息有一個(gè)帶期限的租約,一旦Server端在指定期間沒(méi)有收到Client端發(fā)送的心跳,則Server端會(huì)認(rèn)為Client端注冊(cè)的服務(wù)是不健康的,定時(shí)任務(wù)會(huì)將其從注冊(cè)表中刪除。Consul與Eureka不同,Consul采用Raft算法,可以提供強(qiáng)一致性的保證,Consul的agent相當(dāng)于Netflix Ribbon + Netflix Eureka Client,而且對(duì)應(yīng)用來(lái)說(shuō)相對(duì)透明,同時(shí)相對(duì)于Eureka這種集中式的心跳檢測(cè)機(jī)制,Consul的agent可以參與到基于gossip協(xié)議的健康檢查,分散了Server端的心跳檢測(cè)壓力。除此之外,Consul為多數(shù)據(jù)中心提供了開(kāi)箱即用的原生支持等。
那么基于什么考慮因素可以選擇Eureka呢,主要有如下幾點(diǎn):
選擇AP而不是CP,這一點(diǎn)在后面的章節(jié)會(huì)闡述。
如果團(tuán)隊(duì)是Java語(yǔ)言體系的,則偏好Java語(yǔ)言開(kāi)發(fā)的,技術(shù)體系上比較統(tǒng)一,出問(wèn)題也好排查修復(fù),對(duì)組件的掌控力較強(qiáng),方便擴(kuò)展維護(hù)。
當(dāng)然除此之外,更主要的是Eureka是Netflix開(kāi)源套件的一部分,跟zuul,ribbon等整合的比較好。
Spring Spring Cloud
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。