1. 程式人生 > >go任務調度3(etcd協調服務)

go任務調度3(etcd協調服務)

客戶端 協議 為什麽 節點 周期 隨著 lower 客戶 產生

etcd是將數據存儲在集群中的高可用k-v存儲。
允許應用實時監聽存儲中的k-v變化。
能容忍單點故障,能夠應對網絡分區。

技術分享圖片
技術分享圖片
技術分享圖片
(raft是一個分布式協議,管理的是日誌;etcd管理的是k-v,把k-v放到日誌裏,kv就編程分布式集群了)
技術分享圖片
(調用者寫入請求發給leader請求寫入k-v,leader會將日誌實時向follower們復制,leader不會立即返回給調用者,會馬上往集群follower做日誌拷貝。當日誌被復制給N+1個節點後(即大多數),本地提交(也就是告訴客戶端提交成功),返回給調用者(客戶端),為什麽復制給N+1,而不是2N+1後就告訴客戶端成功了呢?這就是大多數協議,也就是抽屜理論的重要表現)

技術分享圖片
(一旦完成提交,leader會周期性把自己的提交信息告訴所有follower,這樣,其他follower也會完成它們的本地提交(這是異步行為,不需要同步,只需要確保日誌復制給大多數了就可以)。官方給出的寫入性能是:1000次每秒)
技術分享圖片
(raft協議本身就是在寫日誌。第1行是leader節點的日誌,後面是4個是follower,也就是總共5個節點。日誌是隨著請求順序追加,這裏5個節點的大多數是3個節點。其中1-7已經被復制給了3個節點(大多數),這些是一定可以被提交不會丟失的,因為已經復制給大多數了。8總共只有兩個節點有,8後面其他的更誇張。有的連3,4,5都沒有,這一般是leader和follower之間產生了網絡延遲,然而,沒關系,只要復制給大多數就不會丟了。所以真個日誌的提交已經到了第7個日誌)
技術分享圖片

go任務調度3(etcd協調服務)