Akka.Net:两个或多个独立集群之间进行通信的最佳方法是什么?

时间:2016-10-23 21:01:38

标签: .net messages akka.net service-discovery akka.net-cluster

Akka.Net集群需要一个ActorSystem,但如果我有几个需要同步或异步协调的ActorSystems(分布式应用程序)呢?

如何处理共享消息库?也许最好不要共享任何东西(通用消息库除外)并使用动态消息,例如:DynamicJsonMessageBase。

如何处理服务发现?

背景:我正在使用Akka.Net设计微服务架构,该架构可能会使用Lighthouse进行发现,使用REST HTTP API作为后端代理/门户,并采用传输机制向非Actor服务发送/接收消息。

1 个答案:

答案 0 :(得分:1)

通常,您的群集由多个actor系统组成。但是在Akka.NET中,集群可以是异构的,这意味着节点(演员系统)在执行的操作和加载的程序集方面可能彼此不同。要在这方面区分它们,您可以使用不同的角色集配置每个actor系统。

群集角色还可用于在更新群集内的代码时限制节点之间的通信 - 以便具有旧代码的节点不会尝试与更新的代码进行通信。这允许在不关闭群集的情况下执行群集的增量更新。

使用第三方提供商可以最好地实现服务发现,第三方提供商已经启用了这样的功能,即Consul,Azure Service Fabric,etcd或Zookeeper。