
208
|
第
12
章
•
没有人可能获得多数选票。候选人将重置选举计时器,然后启动另一场选举。最终
会选出一个领导者。
任期编号为
N
的领导者
追随者 2 追随者 1
选举计时器到期
给自己投票
任期编号为
N
+1
的领导者
追随者
设置选举计时器 设置选举计时器
图 12-5:Raft 中的领导者选举
Raft
因其相对简单而吸引了用户的兴趣。它在多个需要共识的生产系统中实现,包括
Neo4j
和
YugabyteDB
数据库、
etcd
键值存储和分布式内存对象存储
Hazelcast
等。
12.4.3
强一致性实践
自
2011
年以来,分布式
SQL
数据库经历了快速发展,并首次提出了术语
NewSQL
(
https://oreil.ly/62Aji
)。这些数据库支持强一致性的方式在技术之间差异很大,让我们略
过细节,深入研究它们提供的一致性保证。在接下来的两小节中,我将简要强调两个当
代例子所采用的不同方法。
12.4.4 VoltDB
VoltDB
(
https://www.voltdb.com
)是最初的
NewSQL
数据库之一。它建立在无共享架构
之上,关系表使用分区键进行分片并跨节点复制。它通过在内存中维护表并将数据的快
照异步写入磁盘来实现低延迟。数据库大小限制在
VoltDB
节点集群中可用的总内存内。
VoltDB
主要部署在电信行业。
每个
VoltDB
表分区都与一个
CPU
内核关联。
CPU
内核负责执行其关联分区上所有的读
...