Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一致性算法的Java实现_Java - Fatal编程技术网

一致性算法的Java实现

一致性算法的Java实现,java,Java,我在一个分布式系统上工作,我必须实现一致性算法(pref.Paxos)。我正在寻找任何API,我可以使用它来达成共识。但我只能偶然发现提供这种设施的阿帕奇动物园管理员。但我不能使用ZK,因为当大多数服务器关闭时它会失败。这与我的问题无关。是否有其他API或开源项目可以帮助我避免从头开始执行代码?当大多数服务器停机时,你无法解决一致意见,除非你有某种方法绝对肯定地告诉我它们确实停机了,这是不可能的。因此,动物园管理员是正确的,因为它并没有向你承诺不可能的事情 请允许我解释一下。假设你有3台服务器。

我在一个分布式系统上工作,我必须实现一致性算法(pref.Paxos)。我正在寻找任何API,我可以使用它来达成共识。但我只能偶然发现提供这种设施的阿帕奇动物园管理员。但我不能使用ZK,因为当大多数服务器关闭时它会失败。这与我的问题无关。是否有其他API或开源项目可以帮助我避免从头开始执行代码?

当大多数服务器停机时,你无法解决一致意见,除非你有某种方法绝对肯定地告诉我它们确实停机了,这是不可能的。因此,动物园管理员是正确的,因为它并没有向你承诺不可能的事情

请允许我解释一下。假设你有3台服务器。其中一人怀疑剩下的两人失败了(例如,错过了一些心跳),继续独自决定协商一致的结果。如果其余两个没有失败,他们可能会做出不同的决定,从而导致不一致。这就是安全违规,也被非正式地称为“大脑分裂”问题

请注意,即使您有一个STONITH设备,它允许服务器关闭其他服务器,以前的情况也可能导致所有人都被关闭,从而使整个系统不可用。这是对活力的侵犯

最后,如果你有一个非常好的STONITH设备,它永远不会杀死最后一台服务器,你不需要一个算法来解决这个问题。只要用石头杀死所有人,让幸存的服务器成为领导者和决策者。这就是协商一致的执行


所以,请坚持使用动物园管理员。

您能告诉我们更多信息吗?例如,服务器总数、仲裁的最小服务器数以及您需要支持的最小服务器数?例如,有n个进程,只有当所有进程都同意时,它们才应该启动某些操作。如果其中一个拒绝,那么所有其他进程都应该等待。随后,应该再次尝试达成共识。我认为我们不需要一些预定义的服务器来完成这项任务。这个问题很可能会被解决,因为不清楚要问什么,也没有代码可以开始。建议您看看Guerraoui的书,其中包括实现分布式协议和通信算法的大量高质量Java代码。