Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Akka 阿克卡集群冲突_Akka_Zeromq_Distributed Computing - Fatal编程技术网

Akka 阿克卡集群冲突

Akka 阿克卡集群冲突,akka,zeromq,distributed-computing,Akka,Zeromq,Distributed Computing,Akka文档讨论了各种看似相互关联的Akka技术,但没有对它们进行太多区分: 阿克卡网络 阿克卡远程处理 阿克卡聚类 Akka ZeroMQ模块 我的理解是,“Akka网络”只是一个模块/库,它使Akka能够通过TCP与远程参与者系统通信。Akka远程处理是另一个模块/库(不包含在核心Akka JAR中),它使Akka能够使用八卦协议。Akka Clustering是另一个模块/库,它使用这些八卦协议允许远程参与者系统聚集在一起,并以病毒式/服务发现式的方式共享状态更改。我对Akka Zer

Akka文档讨论了各种看似相互关联的Akka技术,但没有对它们进行太多区分:

  • 阿克卡网络
  • 阿克卡远程处理
  • 阿克卡聚类
  • Akka ZeroMQ模块
我的理解是,“Akka网络”只是一个模块/库,它使Akka能够通过TCP与远程参与者系统通信。Akka远程处理是另一个模块/库(不包含在核心Akka JAR中),它使Akka能够使用八卦协议。Akka Clustering是另一个模块/库,它使用这些八卦协议允许远程参与者系统聚集在一起,并以病毒式/服务发现式的方式共享状态更改。我对Akka ZeroMQ的理解是,除了使用ZeroMQ作为网络连接和协议的基础(而不是流言)之外,它实现了与Akka集群相同的功能

因此,首先,如果我对这些不同模块/库的理解不正确,请首先纠正我


假设我在这里或多或少达到了目标,那么我主要担心的是,我可能会让使用Akka集群的远程参与者系统1(RAS1)尝试与使用Akka ZeroMQ的远程参与者系统2(RAS2)通信。在这种情况下,我们使用的是两种完全不同的群集技术和协议,那么这是否意味着这两个远程系统不能相互通信,或者是否需要特别注意以使它们彼此兼容?

Akka远程处理允许一个参与者在不同的机器上与另一个参与者通信。要使Akka远程处理正常工作,您需要知道要与之交谈的参与者的特定IP地址(或主机名)、ActorSystem名称和参与者路径。ActorSystem名称在这两台计算机中可能不同

Akka集群消除了必须知道您正在与之交谈的特定机器的问题(通过集群感知路由或通过监听加入或离开集群的机器的接待员)。集群感知路由还允许在集群中的任何机器上运行最少X个actor实例。Akka集群使用Gossip协议来维护集群成员列表。启用群集的应用程序必须知道至少一个主机的地址,该主机必须始终运行才能加入群集。可能有2个、3个或更多,但想法是至少其中一个必须始终处于上升状态。Akka集群构建在Akka远程处理之上

虽然我没有使用过Akka ZeroMQ,但我认为它的工作原理与Akka AMQP类似。我更多地将其视为远程处理的一种替代方案,因为它使不同机器上的参与者能够相互交谈,其优点是,没有一个参与者需要知道任何其他运行参与者的机器的细节。但是,与远程处理一样,您需要手动创建接收消息的参与者,而通过集群,集群会处理这些参与者(只要您正确配置了路由器)

关于你的最后一个问题。我能想到的集群与Akka ZeroMQ对话的最简单方法是,集群中有一个(或多个?)参与者与ZeroMQ参与者对话(即,您实际上可以混合和匹配)。在集群中有一个参与者监听队列,另一个参与者将消息发布到队列。有点像适配器模式