1

我是 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 节点管理时需要考虑哪些因素?

谢谢你的帮助。

4

1 回答 1

0

我也不是分布式计算专家,所以我的回答可能有问题,但无论如何。一切都取决于您的集群状态是什么以及您有什么要求。

如果你必须保证每个集群参与者之间状态的一致性,你最终会得到某种分布式共识机制,比如 zk、paxos 或 raft。

如果您需要高可用性,您将需要一些基于 gossip 的协议,并让您的应用程序意识到可能的数据不一致(就像 Riak 对它的 CRDT 数据类型和矢量时钟所做的那样)。

如果您不知道自己需要什么,我会选择第一个选项,因为从开发人员的角度来看这很容易。如果我清楚地理解第一个选项不再是一个选项,我会选择第二个选项;)

于 2015-08-26T17:37:59.937 回答