知识卡片
全序广播的两个安全属性与状态机复制
内容
全序广播(又称原子广播)是一种节点间交换消息的协议,要求同时满足两个安全属性:可靠交付(不丢消息,一条消息若送达任意一个节点,就必须送达所有节点)与全序交付(所有节点以完全相同的顺序接收消息)。它的关键特性是顺序在消息送达时就被固化——一旦某条消息已送达,就绝不允许把新消息追溯地插到它前面,这一点使全序广播比单纯的时间戳排序更强,因为时间戳排序允许”事后”调整相对顺序。可以把全序广播想象成一份不断追加的日志:所有节点按相同顺序读到相同的消息序列。它对数据库复制而言正好对症——如果每条消息代表一次写入,所有副本按相同顺序应用相同的写入,副本间就会保持一致(这个原理称为状态机复制);同样,若把每条消息当作一个确定性的存储过程事务,各节点按相同顺序执行,也能实现跨分区/副本的可串行化事务。ZooKeeper、etcd这类共识服务实际上就是全序广播的具体实现,这也暗示了全序广播与共识问题之间存在紧密的等价关系。
参考来源
- 位置:《数据密集型应用系统设计》第九章《一致性与共识》"全序广播"(源文件:_epub-src/ch9_split_000.html)
- 结论依据:原文定义全序广播的可靠交付与全序交付两个安全属性,说明顺序在送达时固化不可回溯插入,并指出该机制正是数据库复制(状态机复制)与可串行化事务所需要的,直接支撑本卡片结论。
- 原始内容:可靠交付:没有消息丢失……全序交付:消息以相同的顺序传递给每个节点……全序广播正是数据库复制所需的……这个原理被称为状态机复制。