Akka.Net集群需要一个ActorSystem,但如果我有几个需要同步或异步协调的ActorSystems(分布式应用程序)呢?
如何处理共享消息库?也许最好不要共享任何东西(通用消息库除外)并使用动态消息,例如:DynamicJsonMessageBase。
如何处理服务发现?
背景:我正在使用Akka.Net设计微服务架构,该架构可能会使用Lighthouse进行发现,使用REST HTTP API作为后端代理/门户,并采用传输机制向非Actor服务发送/接收消息。
答案 0 :(得分:1)
通常,您的群集由多个actor系统组成。但是在Akka.NET中,集群可以是异构的,这意味着节点(演员系统)在执行的操作和加载的程序集方面可能彼此不同。要在这方面区分它们,您可以使用不同的角色集配置每个actor系统。
群集角色还可用于在更新群集内的代码时限制节点之间的通信 - 以便具有旧代码的节点不会尝试与更新的代码进行通信。这允许在不关闭群集的情况下执行群集的增量更新。
使用第三方提供商可以最好地实现服务发现,第三方提供商已经启用了这样的功能,即Consul,Azure Service Fabric,etcd或Zookeeper。