etcd協(xié)調(diào)服務(wù)、raft協(xié)議、GRPC協(xié)議的原理是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
etcd是將數(shù)據(jù)存儲(chǔ)在集群中的高可用k-v存儲(chǔ)。
允許應(yīng)用實(shí)時(shí)監(jiān)聽(tīng)存儲(chǔ)中的k-v變化。
能容忍單點(diǎn)故障,能夠應(yīng)對(duì)網(wǎng)絡(luò)分區(qū)。
(raft是一個(gè)分布式協(xié)議,管理的是日志;etcd管理的是k-v,把k-v放到日志里,kv就編程分布式集群了)
(調(diào)用者寫(xiě)入請(qǐng)求發(fā)給leader請(qǐng)求寫(xiě)入k-v,leader會(huì)將日志實(shí)時(shí)向follower們復(fù)制,leader不會(huì)立即返回給調(diào)用者,會(huì)馬上往集群follower做日志拷貝。當(dāng)日志被復(fù)制給N+1個(gè)節(jié)點(diǎn)后(即大多數(shù)),本地提交(也就是告訴客戶(hù)端提交成功),返回給調(diào)用者(客戶(hù)端),為什么復(fù)制給N+1,而不是2N+1后就告訴客戶(hù)端成功了呢?這就是大多數(shù)協(xié)議,也就是抽屜理論的重要表現(xiàn))
(一旦完成提交,leader會(huì)周期性把自己的提交信息告訴所有follower,這樣,其他follower也會(huì)完成它們的本地提交(這是異步行為,不需要同步,只需要確保日志復(fù)制給大多數(shù)了就可以)。官方給出的寫(xiě)入性能是:1000次每秒)
(raft協(xié)議本身就是在寫(xiě)日志。第1行是leader節(jié)點(diǎn)的日志,后面是4個(gè)是follower,也就是總共5個(gè)節(jié)點(diǎn)。日志是隨著請(qǐng)求順序追加,這里5個(gè)節(jié)點(diǎn)的大多數(shù)是3個(gè)節(jié)點(diǎn)。其中1-7已經(jīng)被復(fù)制給了3個(gè)節(jié)點(diǎn)(大多數(shù)),這些是一定可以被提交不會(huì)丟失的,因?yàn)橐呀?jīng)復(fù)制給大多數(shù)了。8總共只有兩個(gè)節(jié)點(diǎn)有,8后面其他的更夸張。有的連3,4,5都沒(méi)有,這一般是leader和follower之間產(chǎn)生了網(wǎng)絡(luò)延遲,然而,沒(méi)關(guān)系,只要復(fù)制給大多數(shù)就不會(huì)丟了。所以真?zhèn)€日志的提交已經(jīng)到了第7個(gè)日志)
(
第一個(gè)leader幸運(yùn)是f,f寫(xiě)入了3條數(shù)據(jù)(標(biāo)識(shí)為1的綠色塊),并成功復(fù)制給了所有節(jié)點(diǎn),然后f宕機(jī)了又馬上重啟。
因?yàn)殄礄C(jī),而f曾經(jīng)是leader,于是重新選舉,踩了狗屎很幸運(yùn),f又成了leader。f又提交了3條記錄(標(biāo)識(shí)為2的紫色塊),但它沒(méi)有復(fù)制給集群中的其他節(jié)點(diǎn)(可能f剛成為leader沒(méi)來(lái)得及復(fù)制給其他節(jié)點(diǎn)又掛掉了)。
f宕機(jī)后重啟,又踩了狗屎成為了第三任leader,寫(xiě)入5條數(shù)據(jù)(下標(biāo)為3的橙色塊),沒(méi)來(lái)得及復(fù)制有宕了。
然后第四任leader幸運(yùn)的是e,e寫(xiě)入了4條數(shù)據(jù)(下標(biāo)為4的×××塊),但它作為leader期間,只把前面兩條(下標(biāo)為4的×××塊)數(shù)據(jù)復(fù)制給大多數(shù)節(jié)點(diǎn),后兩個(gè)沒(méi)來(lái)得及復(fù)制就宕了......
)
(leader寫(xiě)入數(shù)據(jù),但只復(fù)制給了一個(gè)follower,其他由于網(wǎng)絡(luò)原因沒(méi)復(fù)制,所以無(wú)法提交,無(wú)法給客戶(hù)端應(yīng)答,客戶(hù)端繼續(xù)等待...)
(raft協(xié)議是底層原理,etcd將k-v寫(xiě)入storage才是真的。當(dāng)復(fù)制給大多數(shù)后,leader就告訴客戶(hù)端:你的事已經(jīng)辦好了)
(當(dāng)old leader重啟后,它發(fā)現(xiàn)已經(jīng)有了一個(gè)新leader,并且它的數(shù)據(jù)是落后于new leader的,所以new leader會(huì)把a(bǔ)=2復(fù)制給old leader,而old leader會(huì)發(fā)現(xiàn),原來(lái)的a=1沒(méi)有復(fù)制給大多數(shù)(未提交狀態(tài)),而a=2已經(jīng)完成了大多數(shù)復(fù)制,所以a=2會(huì)覆蓋掉a=1。所以在集群中a=2而不是1)
(etcd支持通用的http+json協(xié)議,但性能較低。sdk內(nèi)置GRPC協(xié)議,性能很高。GRPC是谷歌開(kāi)源的RPC協(xié)議,是基于http2協(xié)議。我們用的etcd就是基于GRPC的。我們通過(guò)sdk操作etcd中的k-v)
(能實(shí)現(xiàn)像redis一樣的時(shí)間過(guò)期)
(用有序的key模擬出目錄的效果。也就是只要定位到/feature-flags,就能根據(jù)它找到類(lèi)似該目錄下的所有目錄(其實(shí)是key))
(即便key1=value3覆蓋了之前的key1=value1,在etcd中也會(huì)有key1=value1這個(gè)歷史版本(也就是revision=1)。然而我們只關(guān)心最新的數(shù)據(jù),可以用compact命令完成刪減)
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。
當(dāng)前標(biāo)題:etcd協(xié)調(diào)服務(wù)、raft協(xié)議、GRPC協(xié)議的原理是什么-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://jinyejixie.com/article4/dcijoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站、服務(wù)器托管、商城網(wǎng)站、品牌網(wǎng)站制作、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容