木筏日志条目中的操作应该是幂等的吗?

smx*_*qjl 8 distributed-system consensus paxos raft

在raft中,当节点重新启动时,它会尝试重做所有日志条目以赶上状态.但是如果节点在恢复阶段再次出现故障,节点会做两次操作.如果ops不是幂等的,那么这两次重做操作将违反状态机.

根据上面的描述,我的问题是,在实践中使用筏子的系统中使ops成为幂等的必要吗?

Mic*_*uff 3

以我的经验来看,Raft、Paxos和朋友们都是用来实现分布式状态机和数据库(这是分布式状态机)的。在这种情况下查看时,您真的、真的真的希望条目是幂等的;否则你的状态机迟早会出现分歧。

即使您使用无序队列(例如rabbit-mq或ActiveMQ),您也需要幂等性,因为它们的保证最多是至少一次交付

当然,没有什么可以阻止您拥有非幂等条目。除了,也许是设计审查。简而言之,我无法想到使用非幂等条目更好地为队列提供服务的一种场景。不是一个。