Akka博士谈论了各种看似相互关联的Akka技术,但并没有区分它们:
我的理解是,"Akka网络“只是一个模块/库,它使Akka能够通过TCP与远程参与者系统对话。Akka远程处理是另一个模块/库(不包含在核心Akka JAR中),它允许Akka使用绯闻协议。Akka集群是另一个使用这些绯闻协议的模块/库,它允许远程参与者系统以病毒/“服务发现”-esque的方式进行集群和共享状态更改。我对Akka ZeroMQ的理解是,它实现了与Akka集群相同的功能,除了使用ZeroMQ作为网络连接和协议的基础(而不是绯闻)。
因此,首先,如果我对这些不同模块/库的理解是不正确的,请从纠正我开始!
假设我在这里或多或少地达到了目标,那么我的主要关注点是,我可能会使用Akka集群(因此也是绯闻)让远程Actor 1 (RAS1)尝试与使用Akka ZeroMQ的远程Actor 2 (RAS2)通信。在这种情况下,我们使用的是两种完全不同的集群技术和协议,这是否意味着这两个远程系统不能相互通信,或者是否需要特别小心才能使它们彼此兼容?
发布于 2015-06-08 07:16:53
Akka Remoting允许一个演员在另一个机器上和另一个演员说话。要使Akka工作,您需要知道要交谈的参与者的特定IP地址(或主机名)、ActorSystem名称和Actor路径。在这2台机器中,ActorSystem名称可以是不同的。
Akka集群消除了您必须知道正在与之交谈的特定机器的问题(通过群集感知路由或通过侦听机器加入或离开集群的接待员)。集群感知路由还允许在集群中的任何机器上运行至少X个参与者实例。Akka集群使用绯闻协议来维护集群成员的列表。启用群集的应用程序必须知道至少一个主机的地址,该主机必须始终运行才能加入群集。有可能有2,3或更多,但想法是,至少其中一个必须总是上升。Akka聚类是建立在Akka远程处理之上的。
虽然我没有使用Akka ZeroMQ,但我认为它的工作原理类似于AMQP。我认为这更像是远程处理的一种替代方式,因为它可以让不同机器上的演员相互交谈,这样做的好处是没有任何演员需要知道任何其他机器的具体情况。但是,与远程处理一样,您需要手动创建接收消息的参与者,而集群则负责处理它(只要您正确地配置了路由器)。
关于你最后一个问题。对于集群来说,与Akka ZeroMQ交谈的最简单的方法是有一个(或几个?)集群中与ZeroMQ参与者对话的参与者(即,您实际上可以混合和匹配)。在集群中有一个侦听队列的参与者,并有另一个将消息发布到队列的参与者。一种适配器模式。
https://stackoverflow.com/questions/30674175
复制相似问题