如何获得整个Akka.net集群的更新状态?

时间:2017-04-28 12:45:20

标签: c# akka.net akka.net-cluster

我在akka.net集群中创建了一个监控节点,我正在使用cluster.SendCurrentClusterState(Self),但并非所有节点都立即可见,有时节点也会离开集群,而日志表明节点已被正确删除,国家说节点已经运行了很长时间。

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

1 个答案:

答案 0 :(得分:0)

在集群状态方面,有两个重要的属性值得记住:

  1. 没有全局群集状态这样的东西。每个节点都有自己的视图,了解集群当前的状态。这是采用点对点方法的自然效果(因此没有单个主节点,可以设置任意状态)。
  2. 群集状态不会立即更新。构建所有状态以达到最终收敛,但是在将当前群集节点状态闲置到其他状态之前可能会有一些时间过去。
  3. 目前最简单的群集状态是Cluster.Get(Context.System).State,其中包含有关当前已知成员以及无法访问的节点的信息。

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

    关于确认删除节点所需的长时间。根据一个人的意思," long",这可能是一些错误的迹象。在这种情况下,如果您可以通过重复步骤设置问题,那就太棒了。