2014-01-21 64 views
29

我已經在單個JVM上使用Akka開發了我的應用程序。現在我想在許多機器上分配工作負載。我開始閱讀文檔並感到困惑。Akka中的羣集和遠程處理之間的區別

有兩種方法可以通過羣集和遠程處理來分配Akka應用程序。 我沒有得到兩者之間的區別。 如果我理解正確二者在配置不包括本身相互因爲一個需要使用的演員參考不同的供應商:

akka.remote.RemoteActorRefProvider 
akka.cluster.ClusterActorRefProvider 

那麼,什麼是用例?當我選擇一個而不是另一個時?

也許集羣是類似於遠程處理的超集,或者也許是其他方式?

回答

32

它們不是相互排斥的,因爲集羣是在遠程處理之上實現的。遠程處理的主要特徵是ActorRefs的位置透明。集羣增加了分佈式成員。直接使用遠程調用很少有用,對於大多數用例來說,羣集是首選。

+10

「直接使用遠程調用很少有用,對於大多數用例來說,羣集是首選。」 - 這對於添加到文檔肯定是一件好事。 – sourcedelica

+10

是的。尤其是,您可以在AKKA網站上找到解決問題的一些解決方案 - 「HowTo:Common Patterns」,它只專注於遠程處理。我相信這些是在引入聚類之前編寫的,說實話,這使得人們不知道要走什麼路。 – almendar

5

總是最好看的代碼

https://github.com/akka/akka/blob/c2983c7225eeaa035af99e0affeb5f5c841668c4/akka-cluster/src/main/scala/akka/cluster/ClusterActorRefProvider.scala

private[akka] class ClusterActorRefProvider ... extends RemoteActorRefProvider 

首先ClusterActorRefProvider的僅僅是擴展的集羣阿卡加入的RemoteActorRefProvider

核心功能遠程處理是:

  • 羣集範圍故障檢測
  • 路由器與魯特斯組&池功能

,你會發現所有這些插件的源代碼的味道。

相關問題