2015-06-05 55 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。排序適配器模式。