我正在使用新发布的 Akka.Net 1.0(恭喜发布!)所以这对我来说都是新的,但我很确定任何有 JVM Akka 经验的人也可以加入,因为在问题。
让我们考虑几个(例如,2个)单独的服务,它们是更大的系统/应用程序的一部分。这些服务通常做自己的事情,但有时需要跨服务调用。假设它Service 2
可以是独立的并且有一个GetStuff
动作。Service 1
有一个DoSomething
动作,它必须首先得到GetStuff
动作的结果。
当两种服务都可以单独部署到不同的机器上时,处理这种情况的首选方法是什么?
正如我所说,我对 Akka 了解不多,但是通过示例、文档和源代码挖掘,我发现了两个选项:
- 远程处理。在他们自己的服务中分离参与者系统,
Remoting
用于ActorSelection
从远程主机获取。它与Remoting docs example几乎相同,只是两个参与者系统将是相等的“客户”。 - 聚类。我正试图解决这个问题,我现在能想到的最多的是设置一个单独的集群服务,它只是设置集群系统,创建一个简单的侦听器参与者,以便种子节点可以正确初始化(?)。然后在他们自己的服务中创建的每个单独的参与者系统将以不同的角色加入到所述集群系统中。
也许还有另一种我不知道的解决方案......?
就个人而言,集群解决方案乍一看似乎更难掌握和设置,但也许有一些我现在看不到的显着优势。
重申一下,处理这种情况的首选方法是什么,我应该注意什么?