前几天我遇到了这个有趣的数据库,并在其官方网站上阅读了一些文档,我对 TiKV 中的 Raft Group 有一些疑问(here),
假设我们有一个大约有 100 个节点的集群,并且复制因子是 3,这是否意味着我们最终会得到很多微小的 Raft “气泡”,每个气泡只包含 3 个成员,它们进行领导者选举和“气泡”内的日志复制。
或者,我们只有一个包含 100 个节点的胖 Raft “buble”?
请帮忙解释一下,谢谢!
在这种情况下,这意味着您有 33 个分片(“气泡”),每个分片 3 个节点。
3 的复制因子在分布式系统中很常见。根据我的经验,数据库使用 3 的复制因子(在 3 个不同的位置)作为持久性和延迟之间的最佳点;6(在 3 个位置),当他们严重倾向于耐用性时;和 9 个(在 3 个位置),当他们永远不想丢失数据时。9 节点数据库非常稳定(基于 paxos/raft),我只看到它们用作 3 节点和 6 节点数据库的配置,它们可以使用更高性能的协议(尽管 raft 也非常高效)。
很多微小的 Raft “气泡”,每个气泡只包含 3 个成员,
上下文中的小 Raft 气泡是 TiKV 中的一个 Raft 组,由 3 个副本组成(默认情况下)。TiKV 中的数据自动分片到 Region 中,每个 Region 对应一个 Raft 组。为了支持大数据量,实现了Multi-Raft。因此,您可以将 Multi-raft 视为均匀分布在节点上的微小 Raft“气泡”。
我们只有一个包含 100 个节点的胖 Raft “buble”?
不,Raft 组不包含节点,它们包含在节点中。
更多详情请参见:什么是 TiKV 中的 Multi-raft