簡體   English   中英

如何獲得整個Akka.net群集的更新狀態?

[英]How do I get an updated state of an entire Akka.net cluster?

我在akka.net群集中創建了一個監視節點,並且正在使用cluster.SendCurrentClusterState(Self)但並非立即可見所有節點,有時還會有一個節點離開群集,而當日志顯示該節點已正確刪除時,狀態表示該節點已啟動很長時間。

獲取整個akka.net群集的更新狀態的最佳/正確方法是什么?

當涉及集群狀態時,有兩個重要的屬性值得記住:

  1. 沒有全局集群狀態 目前,每個節點對集群的外觀都有自己的看法。 這是采用對等方法的自然效果(因此,沒有單個主節點可以設置任意狀態)。
  2. 群集狀態不會立即更新 建立所有狀態都是為了達到最終收斂,但是可能需要一段時間才能將當前的群集節點狀態變為其他狀態。

目前,最簡單的集群狀態是Cluster.Get(Context.System).State ,其中包含有關當前已知成員以及不可達節點的信息。

另一種方法是cluster.Subscribe(Self, typeof(ClusterEvent.IMemberEvent), typeof(ClusterEvent.IReachabilityEvent)) (當actor死亡時必須取消訂閱)。 這樣,您可以在群集狀態發生變化時得到通知。

關於確認刪除的節點所需的時間。 取決於“長”的含義,這可能表示某些錯誤。 在這種情況下,如果您可以通過repro步驟設置問題,那就太好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM