技術(shù)文章:分布式系統(tǒng)模式之Consistent Core
維護(hù)較小的集群可提供更強(qiáng)的一致性,以允許大型數(shù)據(jù)集群協(xié)調(diào)服務(wù)器活動(dòng),而無(wú)需實(shí)現(xiàn)基于 quorum 的算法。
問(wèn)題
線性化是最強(qiáng)的一致性保證,可以保證所有客戶端都能看到最新提交的數(shù)據(jù)更新。提供線性化以及容錯(cuò)功能需要在服務(wù)器上實(shí)現(xiàn)共識(shí)算法,例如 Raft,Zab 或Paxos。
盡管共識(shí)算法是實(shí)現(xiàn) Consistent Core 的基本要求,但客戶端交互的各個(gè)方面(例如客戶端如何找到leader,重復(fù)請(qǐng)求的處理方式等)都是重要的實(shí)現(xiàn)決策。關(guān)于安全性和活躍性,還有一些重要的實(shí)現(xiàn)注意事項(xiàng)。Paxos 僅定義共識(shí)算法,但是 Paxos 文獻(xiàn)中沒(méi)有很好地記錄其他實(shí)現(xiàn)方面的內(nèi)容。Raft非常清楚地記錄了各種實(shí)現(xiàn)方面以及參考實(shí)現(xiàn),因此是當(dāng)今使用最廣泛的算法。
當(dāng)集群需要處理大量數(shù)據(jù)時(shí),它需要越來(lái)越多的服務(wù)器。對(duì)于服務(wù)器集群,存在一些共同的要求,例如選擇特定的服務(wù)器作為特定任務(wù)的 master ,管理組成員信息,將數(shù)據(jù)分區(qū)映射到服務(wù)器等。這些要求需要強(qiáng)大的一致性保證,即線性化 。實(shí)現(xiàn)也必須是容錯(cuò)的。一種常見(jiàn)的方法是使用基于 Quorum 的容錯(cuò)共識(shí)算法。但是在基于 Quorum 的系統(tǒng)中,吞吐量會(huì)隨著集群的大小而降低。
解決方案
實(shí)現(xiàn)一個(gè)較小的3到5個(gè)節(jié)點(diǎn)的集群,該集群可提供線性化保證和容錯(cuò)能力。單獨(dú)的數(shù)據(jù)集群可以使用小型一致性集群來(lái)管理元數(shù)據(jù),并使用諸如 Lease 之類的機(jī)制來(lái)進(jìn)行集群范圍的決策。這樣,數(shù)據(jù)集群可以擴(kuò)展大量的服務(wù)器,但是仍然可以使用較小的元數(shù)據(jù)集群執(zhí)行某些需要強(qiáng)一致性保證的操作。
Figure 1: Consistent Core
一個(gè)典型的consistent core接口是這樣的:
public interface ConsistentCore {
CompletableFuture put(String key, String value);
List
Consistent Core至少提供了一種簡(jiǎn)單的鍵值存儲(chǔ)機(jī)制。它用于存儲(chǔ)元數(shù)據(jù)。
元數(shù)據(jù)存儲(chǔ)
使用諸如Raft之類的共識(shí)算法來(lái)實(shí)現(xiàn)存儲(chǔ)。它是“Replicated Write Ahead Log”實(shí)現(xiàn)的示例,其中復(fù)制由Leader and Followers處理,High-Water Mark用于跟蹤通過(guò)Quorum進(jìn)行的成功復(fù)制。
支持分層存儲(chǔ)
Consistent Core通常用于存儲(chǔ)數(shù)據(jù),例如:組成員身份或跨服務(wù)器的任務(wù)分配。一種常見(jiàn)的使用模式是使用前綴來(lái)限制元數(shù)據(jù)的類型。例如 對(duì)于組成員身份,keys 將全部存儲(chǔ)為/servers/ 1,server/2等。對(duì)于分配給服務(wù)器的任務(wù),keys可以為/tasks/task1,/tasks/task2。通常使用特定前綴讀取所有鍵數(shù)據(jù)。例如,要獲取有關(guān)集群中所有服務(wù)器的信息,將讀取所有帶有前綴/servers 的 keys。
用法示例如下:
服務(wù)器可以通過(guò)使用前綴/servers 創(chuàng)建自己的 key 來(lái)向 Consistent Core 注冊(cè)自己。
client1.setValue("/servers/1", "{address:192.168.199.10, port:8000}");
client2.setValue("/servers/2", "{address:192.168.199.11, port:8000}");
client3.setValue("/servers/3", "{address:192.168.199.12, port:8000}");
然后,客戶端可以通過(guò)讀取key前綴 /servers 來(lái)了解集群中的所有服務(wù)器,如下所示:
assertEquals(client1.getValue("/servers"), Arrays.a(chǎn)sList("{address:192.168.199.12, port:8000}",
"{address:192.168.199.11, port:8000}",
"{address:192.168.199.10, port:8000}"));
由于數(shù)據(jù)存儲(chǔ)的這種分層性質(zhì),[zookeeper],[chubby]之類的產(chǎn)品提供了類似于接口的文件系統(tǒng),用戶可以在其中創(chuàng)建具有父節(jié)點(diǎn)和子節(jié)點(diǎn)概念的目錄、文件或節(jié)點(diǎn)。[etcd3]具有扁平化的鍵空間,可以獲取一系列鍵。
處理客戶端交互
Consistent Core功能的關(guān)鍵要求之一是客戶端如何與 Consistent Core 交互。以下方面對(duì)于客戶端使用 Consistent Core至關(guān)重要。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
最新活動(dòng)更多
-
8月5日立即報(bào)名>> 【在線會(huì)議】CAE優(yōu)化設(shè)計(jì):醫(yī)療器械設(shè)計(jì)的應(yīng)用案例與方案解析
-
8月14日立即報(bào)名>> 【在線研討會(huì)】解析安森美(onsemi)高精度與超低功耗CGM系統(tǒng)解決方案
-
精彩回顧立即查看>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書(shū)》
-
精彩回顧立即查看>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
-
精彩回顧立即查看>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
精彩回顧立即查看>> OFweek 2025 具身機(jī)器人動(dòng)力電池技術(shù)應(yīng)用大會(huì)
推薦專題
- 1 AI產(chǎn)業(yè)的新高度!英偉達(dá)成為全球首家市值破4萬(wàn)億美元的公司
- 2 傳魏建軍與賈躍亭合作,長(zhǎng)城汽車(chē)出海美國(guó)
- 3 一文讀懂:到底什么是 “具身智能” ?
- 4 黃仁勛:與雷軍長(zhǎng)期合作,共探AI智駕
- 5 具身智能泡沫爭(zhēng)議下,華映資本尋找「穿越周期者」
- 6 中國(guó)平安們欲靠AI守“陣地”
- 7 官宣:智元機(jī)器人借殼上市,A股人形機(jī)器人第一股!
- 8 華為讓渡“三界”銷(xiāo)售主導(dǎo)權(quán),智界高管:終于能全力奔跑了
- 9 借仿生手實(shí)現(xiàn)突圍,國(guó)產(chǎn)靈巧手破局“不可能三角”
- 10 DeepSeek R2加持,中國(guó)AI與芯片產(chǎn)業(yè)迎來(lái)新一輪協(xié)同進(jìn)化