2016-10-23 35 views
1

Akka.Net羣集需要單個ActorSystem,但是如果我有幾個需要同步或異步協調的ActorSystems(分佈式應用程序)會怎樣?Akka.Net:在兩個或多個獨立羣集之間進行通信的最佳方法是什麼?

如何處理共享消息庫?也許最好不要共享任何東西(除了通用消息庫)並使用動態消息,如:DynamicJsonMessageBase。

如何處理服務發現?

背景:我正在設計一個使用Akka.Net的微服務架構,它可能會使用Lighthouse作爲發現,REST HTTP API用於後端代理/門戶,並且包含一個傳輸機制,用於向非Actor服務發送/接收消息。

回答

1

通常你的集羣由多個角色系統組成。但是在Akka.NET中,集羣可能是異構的,這意味着節點(參與者系統)在執行操作和加載的組件方面可能會有所不同。爲了在這方面區分它們,您可以爲每個角色系統配置不同的角色集。

集羣角色也可用於更新集羣內代碼時限制節點之間的通信 - 以便具有較舊代碼的節點不會嘗試與更新的代碼交談。這允許在不關閉的情況下執行集羣的增量更新。

服務發現是使用第三方提供商實現的最佳實現,第三方提供商已經實現了Consul,Azure Service Fabric,etcd或Zookeeper等功能。

+0

我的理解是,只能在每個集羣的ActorSystem上存在。 – alturium

+0

所有參與者系統必須在羣集中共享相同的名稱。但是集羣本身應該能夠跨越多臺機器(否則它會是什麼集羣?)。在單個進程中只有一個「ActorSystem」是很難實現的。 – Horusiath

+0

問題是關於不在羣集內的羣集之間的通信或傳輸,這將遵循你的觀點。但我認爲你錯過了這個問題的重點。 – alturium

相關問題