wan*_*907 2 distributed-system
谁能从高层次上讲一下主备和状态机复制之间的关系?
在我看来,主备是一种状态机复制。但它需要额外的机制来确保所有复制都在主节点上达成一致,这在通用状态机复制中是不必要的......
这样对吗?或者有什么想法吗?
主备复制和状态机复制有什么区别?
状态机是处理一系列请求的软件组件。对于每个已处理的请求,它可以修改其内部状态并生成回复。状态机是确定性的,因为在两次运行中它收到相同的请求序列,它总是进行相同的内部状态转换并产生相同的答复。
状态机复制系统是一个客户端-服务器系统,确保每个状态机副本执行相同序列的客户端请求,即使这些请求由客户端同时提交并由副本以不同的顺序接收。副本使用 Paxos 等共识算法就客户端请求的执行顺序达成一致。并发发送且时间重叠的客户端请求可以按任意顺序执行。如果领导者发生故障,执行恢复的新领导者可以随意对任何未提交的请求进行重新排序,因为该请求尚未完成。
对于主备份系统(例如 Zookeeper),副本同意增量(增量)状态更新的应用顺序,这些更新由主副本生成并发送给其追随者。与客户端请求不同,状态更新必须按照主节点的原始生成顺序应用,从主节点的原始初始状态开始。如果主节点发生故障,执行恢复的新主节点无法任意重新排序未提交的状态更新,或从不同的初始状态开始应用它们。
总之,状态更新协议(对于主备份系统)需要比客户端请求协议(对于状态机复制系统)更严格的排序保证。