技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Akka のClusterを調べてみる

前回写経して中身を確認してみたが、正直サンプル見たほうが理解が早かった。

https://github.com/akka/akka/blob/master/akka-samples/akka-sample-cluster/src/main/scala/sample/cluster/simple/SimpleClusterApp.scala
https://github.com/akka/akka/blob/master/akka-samples/akka-sample-cluster/src/main/scala/sample/cluster/transformation/TransformationSample.scala
https://github.com/akka/akka/blob/master/akka-samples/akka-sample-cluster/src/main/scala/sample/cluster/factorial/FactorialSample.scala
https://github.com/akka/akka/blob/master/akka-samples/akka-sample-cluster/src/main/scala/sample/cluster/stats/StatsSample.scala

前回の 続、Akka勉強する - 謎言語使いの徒然 で写経したののが SimpleClusterApp だったわけだ。

  • SimpleClusterApp : クラスタリングの相互接続と参加を明示するだけのもの
  • TransformationSample : バックエンドクラスタ(処理本体) と フロントエンドクラスタ(リクエスト・処理を行うクラスタ)に分かれての相互ActorRef参照登録と実行(バックエンドクラスタにノードが増えるたびに BackendRegistration メッセージでフロントを叩いて通知し、フロントエンドで TransformationJob を受け取ると、内部で保持したバックエンドに forward していく構造)
  • FactorialSample : Frontend と Backend が同一 jar としてデプロイされてる前提で、設定ファイルでActorが稼働開始するクラスタノード数の指定をしているようだ。ここの「How To Startup when Cluster Size Reached」
  • StatsSample : クラスタに対応したルータのサンプル(Cluster Aware Routers)

おかげで無事にリモートクライアントの目途がついた。