我想确保 3 台服务器之间的一致性。
这是一个共识问题。
每个服务器都会监听用户并将收集到的数据保存在本地文件中。
我尝试使用 Rpc 将新数据发送到所有其他服务器但徒劳无功。
另外我想使用算法 paxos 来确保一致性。我只想知道我所做的解决方案是否是优化的解决方案,或者我可以使用 socket 或其他算法而不是像 raft 这样的 paxos。
我希望你能理解我的问题。
提前致谢 :)
最佳答案
首先你应该确定它是什么意思:每个服务器都在监听用户请求。接下来发生什么?这些服务器是立即在本地应用这些请求,还是将它们发送给领导者?
在第一种情况下——每个节点在本地应用更改并将它们发送到其他节点——这是一个多领导者复制。正如您可能猜到的那样,就值达成一致是具有挑战性的,因为两个不同的请求可能会更改不同的相同数据。这里几乎没有选项可以使系统最终保持一致,但这可能不是您想要的。
现在我们达成共识。总的来说,paxos/raft/etc 都是单主复制系统。其中一个节点将被选为领导者,其他每个节点最终将获得相同的事件序列——这将是共识部分。
我建议检查 raft 而不是 paxos - 两者都有很多库,但我发现 raft 更容易使用。
关于ubuntu - 分布式系统(RPC + Paxos),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72118442/