0

我在我的 akka.net 集群中创建了一个监控节点,我正在使用cluster.SendCurrentClusterState(Self),但并非所有节点都立即可见,有时节点也会离开集群,虽然日志显示节点已正确删除,但状态显示节点已准备就绪很长时间。

获取整个 akka.net 集群的更新状态的最佳/正确方法是什么?

4

1 回答 1

0

当涉及到集群状态时,有两个重要的属性值得记住:

  1. 没有全局集群状态之类的东西。每个节点对集群目前的外观都有自己的看法。这是点对点方法的自然效果(因此没有可以设置任意状态的单个主节点)。
  2. 集群状态不会立即更新。构建所有状态以达到最终收敛,但可能需要一段时间才能将当前集群节点状态传递给其他节点。

目前最简单的集群状态是Cluster.Get(Context.System).State包含有关当前已知成员以及无法访问的节点的信息。

另一种方法是cluster.Subscribe(Self, typeof(ClusterEvent.IMemberEvent), typeof(ClusterEvent.IReachabilityEvent))(当演员死亡时必须取消订阅)。通过这种方式,您可以在集群状态更改出现时收到通知。

关于确认删除节点所需的长时间。根据“长”的含义,这可能是一些错误的迹象。在这种情况下,如果您可以设置重现步骤的问题,那就太好了。

于 2017-04-30T07:03:39.947 回答