Akka Project
Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors
サイト右に書いてある特長を読んでみると、
Simpler Concurrency
記述容易なTransactional Actorsによる並列プログラミング
Event-driven Architecture
ブロックしない非同期イベント駆動アーキテクチャ
True Scalability
マルチコア、分散マシンでスケールアウト
Fault-tolerance
Actorノードの階層構造を使った、障害時の自動回復
Transparent Remoting
プログラムから透過的なリモートActor
Scala & Java API
スタンドアロンでもAppサーバでも使える。
いろんなモジュールと統合できるよ。
という特徴をもったフレームワークだそうです。
ウチみたいな小規模SIerがこんなもん調べてどうするっって感じがしますが、後述のサンプルを見てわかるように、ActorとPersistenceがきれいに統合されているので、これだけでも使う価値アリかなと思います。
JavaAPIが用意されている点も結構ミソだと思っていて、
メッセージングシステムを組みたいけどSOA的うんざり系フレームワークは使いたくない!といったときの選択肢の一つとして検証するのも良いと思います。
スケールするかどうかは今のところあまり興味がないですが、流行りなので勉強しておこうかな、くらい。
Akka本体は不要。まずは、simple-build-tool(sbt)を用意。
任意の空ディレクトリで、
※現在リポジトリにある最新jarは「Akka0.9.1+Scala2.8.0.RC3」の組み合わせです。バージョンに注意してください。
次の2つのファイルを作成する。
sbtプロンプトで環境を整える。
ここまで用意した環境で、チュートリアルをやってみます。
Akka:Getting Started
前述で用意したAkka Project Scala Consoleに、上から順番にコードを貼り付けていきます。
Scala Actorを触ったことがない人が読み進めるのはつらいと思うので、書籍やサンプルなど参照。
チャットサンプルの実装方法について説明があります。
Akka:Getting Startedにはimportが抜けていたりバグがあったりしますが、動くソースコードは、
http://github.com/jboner/akka/tree/master/akka-samples/akka-sample-chat/
にあるので(Akka Downloadにも含まれています)、ここでは写経しません。
まずさっさと実行してみます。
ChatServer.scala を、src/main/scala/sample/chat/に置きます。
実行する前にRedisを起動
サンプルでは、persistenceにKey-Valueストア-Redisを利用するので、ダウンロード・インストール・起動する。
自分はCygwinでmakeしましたが問題なく動作しました。
実行
sbt consoleを3つくらい起動します。
1つはチャットサーバとして起動
残りは、チャットクライアントとして起動。複数consoleで同じことやればチャットできる。
とりあえず動いて安心したので、また次のエントリで、
本チュートリアルで学習する範囲:
Actors
fault-tolerance using Actor supervision
remote Actors
Software Transactional Memory (STM)
persistence
の内容について、ちゃんと勉強(翻訳?)したいと思います。