我是Erlang的新手以及分布式计算。我们是一个小团队,正在尝试构建一个小型消息服务器。我们正在研究如何管理集群状态 - 我们在Erlang开源项目中遇到了一些自定义实现,例如Riak,rabbitMq,ejabbered和Vernemq。
似乎Erlang社区正在使用gossip协议进行集群管理 - 我看到关于RabbitMQ的最新帖子(https://groups.google.com/forum/#!searchin/rabbitmq-users/gossip $ 20protocol / rabbitmq-users / jvQQy30kLTI / hIDFw94SddQJ
我的问题是 - 除了八卦协议之外,还有其他方法可以进行群集管理吗?还有什么是八卦协议的开源erlang实现。在考虑erlang节点管理时需要考虑哪些因素?
感谢您的帮助。
答案 0 :(得分:0)
我也不是分布式计算专家,所以我的答案可能有问题,但无论如何。 一切都取决于您的群集状态以及您有什么要求。
如果您必须保证每个群集参与者之间的状态一致性,您将最终得到某种分布式共识机制,如zk,paxos或raft。
如果您需要高可用性,您将需要一些基于八卦的协议,并让您的应用程序了解可能的数据不一致(例如Riak使用它的CRDT数据类型和矢量时钟)。
如果你不知道你需要什么,我会选择第一个选项,因为从开发人员的角度来看这很容易。如果我清楚地了解第一个选项不再是一个选项,那么会选择第二个选项;)