在筏中,当节点重新启动时,它将尝试重做所有日志条目以 catch 该状态。但是,如果节点在恢复阶段再次出现故障,则该节点将执行两次操作。如果操作不是幂等的,则两次重做操作将违反状态机。
根据上面的描述,我的问题是,在实践中使筏在系统中具有幂等性是否必要?
最佳答案
以我的经验,Raft,Paxos和 friend 被用来实现distributed state machines和数据库(这是一个分布式状态机)。在这种情况下查看时,您真的,真的真的真的希望条目是幂等的;否则,您的状态机将早于分歧。
即使您使用的是无序队列(例如rabbit-mq或ActiveMQ),您也需要幂等,因为它们的保证最多为,至少一次交付。
当然,没有什么可以阻止您拥有非幂等项。除了,也许是设计审查。简而言之,我无法想到一种情形,在该情形下,使用非等幂条目可以更好地服务队列。不是一个。