我已经开始使用Akka.NET,并且能够在远程系统上使用多个示例进行自部署(使用具有5个示例的循环池路由器进行部署)。但是,现在我希望能够将多个服务器链接在一起。目前我正在使用:
Local Actor --> Remote Actor --> 5 instances
然而我正在努力做这样的事情:
/--->Remote Actor #1 (server1.domain.com) --> 5 instances
Main Actor< --->Remote Actor #2 (server2.domain.com) --> 5 instances
\--->Remote Actor #3 (server3.domain.com) --> 5 instances
当Main Actor
有需要处理的消息时,它会以循环方式将其发送到Remote Actor 1
、2
、OR3
。然后,接收消息的远程执行元也以循环方式将其发送到其中一个示例。
从我所读到的内容来看,我 * 似乎 * 需要实现集群。但是,从我找到的文档中,我无法告诉如何用这种嵌套的循环处理来实现集群。它听起来更像是一个去中心化的网络,来自Main Actor
的消息将被传递到Remote Actor 1
、2
和3
,这绝对不是我想要的。
有没有办法用标准的Akka.NET NuGets来实现这个,或者我需要在Main Actor
中实现我自己的循环代码,以便向每个Remote Actor
的个体发送消息,然后让他们做他们自己的标准循环。
任何帮助或建议将不胜感激,因为我是相对新的使用这个图书馆。谢谢你提前。
2条答案
按热度按时间sf6xfgos1#
您不需要创建自己的循环代码。您几乎已经做到了这一点,只需要对代码进行一点调整。
你看过this了吗?你需要的是配置主机名。
I created this to better explain this to you
1.您可以从
Main Actor/Router
远程部署routers
1.您可以浏览这两页(Router with remote actors和How to use HOCON to configure your routers),以便更好地理解。
如果你不清楚,请告诉我!
nukf8bse2#
我认为@Mestical的回应是你想要的,但只是澄清一下:
1.您可以让主要参与者使用一个
Group
循环路由器来向您的子域上的远程参与者发送消息;1.这些远程参与者中的每一个都可以实现本地
Pool
循环路由器,以在N个相同的参与者之间本地地负载平衡工作。Group
路由器使用由其他人创建的ActorPath
到消息执行元,而Pool
路由器创建N个相同的子执行元。前者通常用于在Akka.Cluster / Akka.Remote上的ActorSystem
之间分发消息,而后者主要用于并行化工作。Akka.Cluster让您的
Group
路由器可以在运行时动态发现新节点(或者在旧节点终止时删除旧节点),而Akka.Remote需要在启动时将这些信息写入配置。换句话说,Akka.Cluster更具动态性。