什么是 MultiRaft ?
什么是 MultiRaft
這里引用 Cockroach ( MultiRaft 的先驅(qū),出來(lái)的比 TiDB 早 )對(duì) MultiRaft 的定義:
In?CockroachDB, we use the?Raft consensus algorithm?to ensure that your data remains consistent even when machines fail. In most systems that use Raft, such as?etcd?and?Consul, the entire system is one Raft consensus group. In CockroachDB, however, the data is divided into ranges, each with its own consensus group. This means that each node may be participating in hundreds of thousands of consensus groups. This presents some unique challenges, which we have addressed by introducing a layer on top of Raft that we call?MultiRaft.
在?CockroachDB?中,我們使用?Raft?一致性算法來(lái)確保在機(jī)器發(fā)生故障時(shí)數(shù)據(jù)也能保持一致。在大多數(shù)使用?Raft?的系統(tǒng)中,如?etcd?和?Consul,整個(gè)系統(tǒng)只有一個(gè)?Raft?共識(shí)組。然而,在?CockroachDB 中,數(shù)據(jù)被分成不同的范圍,每個(gè)范圍都有自己的共識(shí)組。這意味著每個(gè)節(jié)點(diǎn)都可能參與成千上萬(wàn)個(gè)共識(shí)組。這就提出了一些獨(dú)特的挑戰(zhàn),我們通過(guò)在?Raft 之上引入一層?MultiRaft 來(lái)解決這些問(wèn)題。
簡(jiǎn)單來(lái)說(shuō),MultiRaft 是在整個(gè)系統(tǒng)中,把所管理的數(shù)據(jù)按照一定的方式切片,每一個(gè)切片的數(shù)據(jù)都有自己的副本,這些副本之間的數(shù)據(jù)使用 Raft 來(lái)保證數(shù)據(jù)的一致性,在全局來(lái)看整個(gè)系統(tǒng)中同時(shí)存在多個(gè) Raft-Group,就像這個(gè)樣子:
?
?
MultiRaft 需要解決的問(wèn)題
單個(gè) Raft-Group 在 KV 的場(chǎng)景下存在一些弊端:
(1) 系統(tǒng)的存儲(chǔ)容量受制于單機(jī)的存儲(chǔ)容量(使用分布式存儲(chǔ)除外)。
(2) 系統(tǒng)的性能受制于單機(jī)的性能(讀寫請(qǐng)求都由Leader節(jié)點(diǎn)處理)。
?
MultiRaft 需要解決的一些核心問(wèn)題:
(1) 數(shù)據(jù)何如分片。
(2) 分片中的數(shù)據(jù)越來(lái)越大,需要分裂產(chǎn)生更多的分片,組成更多 Raft-Group。
(3) 分片的調(diào)度,讓負(fù)載在系統(tǒng)中更平均(分片副本的遷移,補(bǔ)全,Leader 切換等等)。
(4) 一個(gè)節(jié)點(diǎn)上,所有的 Raft-Group 復(fù)用鏈接(否則 Raft 副本之間兩兩建鏈,鏈接爆炸了)。
(5) 如何處理 stale 的請(qǐng)求(例如 Proposal?和 Apply 的時(shí)候,當(dāng)前的副本不是 Leader、分裂了、被銷毀了等等)。
(6) Snapshot 如何管理(限制Snapshot,避免帶寬、CPU、IO資源被過(guò)度占用)。
要實(shí)現(xiàn)一個(gè) Multi-Raft 還是很復(fù)雜和很有挑戰(zhàn)的一件事情。
?
Raft論文翻譯:https://blog.csdn.net/qq_38289815/article/details/104314348
轉(zhuǎn)載自:https://my.oschina.net/u/2244142/blog/1609103
總結(jié)
以上是生活随笔為你收集整理的什么是 MultiRaft ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TLS/SSL 工作原理及握手过程详解
- 下一篇: 对象存储概述