2015-06-05 54 views
5

一下各种看似相互关联的阿卡技术的阿卡DOC会谈没有他们之间的区别很大:阿卡集群冲突

  • 阿卡网络
  • 阿卡Remoting的
  • 阿卡聚类
  • 的阿卡ZeroMQ模块

我的了解是“Akka Networking”只是一个模块/库,它使Akka能够通过TCP与远程参与者系统通话。 Akka Remoting是另一个模块/ lib(不包含在核心Akka JAR中),它让Akka使用Gossip协议。 Akka Clustering是另一个模块/ lib,然后使用这些Gossip协议来允许远程参与者系统聚集在一起,并以病毒式/“服务发现”式的方式来改变变化。而我的理解阿卡ZeroMQ的是,它实现了同样的事情阿卡集群,除非使用ZeroMQ作为网络连接和(而不是绯闻)协议的基础。

因此,首先,如果我的这些不同的模块/库的理解是不正确的,请纠正我开始了!假设我在这里或多或少处于目标位置,那么我的主要担忧是我可能使用Akka Clustering(因此Gossip)尝试与远程Actor系统2(RAS2)进行通信的远程演员系统1(RAS1)它使用Akka ZeroMQ。在这种情况下,我们使用的是两种完全不同的集群技术和协议,那么这是否意味着不能相互说,还是需要采取特殊照顾这两个远程系统,使它们互相兼容?

回答

1

阿卡Remoting是什么让一个演员到另一个演员讲不同的机器上。要使Akka Remoting正常工作,您需要知道要与之通话的演员的特定IP地址(或主机名),演员系统名称和演员路径。 ActorSystem名称在两台机器上可以不同。

阿卡聚类带走不必知道你在说具体机器的问题(通过群集的路由或通过监听设备加入或离开集群接待员)。集群感知路由还允许在集群中的任何计算机上运行最少的X角色实例。 Akka集群使用Gossip协议来维护集群成员列表。启用集群的应用程序必须知道至少一台必须始终运行才能加入集群的主机的地址。可能有2,3个或更多,但是这个想法是,他们中的至少一个必须总是起来。 Akka集群建立在Akka Remoting之上。

虽然我还没有与阿卡ZeroMQ工作,我认为它的工作方式类似于阿卡AMQP。我更多地将它看作Remoting的替代品,因为它使不同机器上的演员能够相互交流,其优点是没有任何演员需要知道任何其他演员正在运行的机器的具体情况。但是,与Remoting一样,您需要手动创建接收消息的参与者,而使用集群时,集群会照顾它(只要您已正确配置路由器)。

关于你最后一个问题。我可以想到Cluster最简单的方式与Akka ZeroMQ对话,就是在Cluster中有一个(或几个)actor与ZeroMQ actors交谈(即,你可以实际混合和匹配)。在群集中有一个侦听队列的actor,并有另一个将消息发布到队列中的actor。排序适配器模式。