TiKV 中的 "mult-raft" 是什么?

What is "mult-raft" in TiKV?

前几天我偶然发现了这个有趣的数据库,并在其官方网站上阅读了一些文档,我对 TiKV 中的 Raft Group 有一些疑问(here),

假设我们有一个大约有 100 个节点的集群,复制因子是 3,这是否意味着我们最终会得到很多微型 Raft "bubbles",每个都只包含 3 个成员,并且他们在 "buble".

中进行领导者选举和日志复制

或者,我们只有一个包含 100 个节点的 fat Raft "buble"?

请帮忙说明一下,谢谢!

在这种情况下,这意味着您有 33 个 分片 ("bubbles"),每个分片有 3 个节点。

3 的复制因子在分布式系统中很常见。根据我的经验,数据库使用 3 的复制因子(在 3 个不同的位置)作为持久性和延迟之间的最佳平衡点; 6(在 3 个位置)当他们严重依赖耐用性时;和 9 个(在 3 个位置)当他们 never-ever 想要丢失数据时。 9 节点数据库非常稳定(paxos/raft-based),我只看到它们用作 3 节点和 6 节点数据库的配置,它们可以使用性能更高的协议(尽管 raft 也非常高效) ).

a lot of tiny Raft "bubbles", each of them contains only 3 members,

你上下文中的 tiny Raft bubble 是 TiKV 中的一个 Raft group,由 3 个副本组成(默认情况下)。数据在 TiKV 中自动分片到 Region 中,每个 Region 对应一个 Raft group。为了支持大数据量,实现了Multi-Raft。因此,您可以将 Multi-raft 视为均匀分布在您的节点上的微型 Raft "bubbles"。

Check the image for Raft in TiKV here

we only have one single fat Raft "buble" which contains 100 nodes?

不,Raft组不包含个节点,它们包含在节点中。

详情请见:What is Multi-raft in TiKV