我正在golang中构建一个我希望容错的应用程序。我研究了不同的算法,例如RAFT和Paxos,以及它们在golang中的实现(etcd的筏,hashicorp的筏),但是我觉得对于我的特定用例来说,它们可能算是过高了。
在我的应用程序中,节点仅在待机状态下等待,并在领导者失败的情况下充当故障转移。我不需要在整个集群中复制任何状态。我需要的是以下属性:
如果节点是领导者:
如果节点不是领导者:
有什么建议吗?
似乎在我的特定情况下,我不是在寻找共识算法,而是在纯粹地进行领导者选举的算法。这是一个很好的堆栈溢出信息:What's the benefit of advanced master election algorithms over bully algorithm?