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)
おかげで無事にリモートクライアントの目途がついた。