BT

Future、性能、依存性の低減など多くの改善がされたAkka 1.1リリース

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2011年5月16日. 推定読書時間: 4 分 |

原文(投稿日:2011/05/12)へのリンク

今日、Akka 1.0にいくつかの改善が加わったAkka 1.1がリリースされた。また、Scala 2.9(Akka 1.1 requires Scala 2.9)も今日リリースされた。両方とも現在はMartin Odersky氏とJonas Bonér氏の新しい会社Typesafeが管理している。同社はAkkaとScalaのトレーニングを提供すると同時にこの2つの技術を使った商用製品を提供している。integrated stackは同社の製品だ。

Akka 1.1 (akka-actor)はScala 2.9に依存しない。他の変更に加えて、Futureたくさんの作業がに対してたくさんの改善がなされた。発表によると、

- 限定継続を使ったFuture向けのデータフローAPI。これを使えば、実際はブロックしないが、見かけ上はブロックするように見えるコードが書ける。
- Futureは完全にモナドになった。したがってfor内包表記を利用できる。
- Futureはノンブロッキングメソッドを持つようになったので、ブロックなしでFutureの合成ができる。
- FutureはすべてのDispatcherからネイティブで実行できる。

関数型言語のプログラマはFutureがモナドになりmapflatMapメソッドを備え、for内包表記が使えるようになったと聞けば喜ぶだろう。ドキュメントによれば、

val f = for {
  a <- Future(10 / 2) // 10 / 2 = 5
  b <- Future(a + 1)  //  5 + 1 = 6
  c <- Future(a - 1)  //  5 - 1 = 4
} yield b * c         //  6 * 4 = 24

val result = f.get()

Scalaのfor内包表記はモナドなコードに対してHaskellのdoのように使える。例えば、処理を直列に並べるための簡単な方法として利用できる(モナドの簡単な紹介は"Monads Made Easy")。

InfoQはGotoCon Copenhagen 2011にてJonas  Bonér氏にAkka 1.1と将来の展望について話を聞いた。

InfoQ: Akka 1.1にはScala 2.9が必要ですが、なぜこうしたのですか。Scala 2.9の新しい機能を使っているのですか(どんな機能ですか)。Scala 2.8から2.9への移行でなにか問題にぶつかりましたか。

Scala 2.9.0は多くの点において2.8.xよりも優れています。私たちはバグフィックスや性能改善、新機能の恩恵を受けています。移行も大きな問題はありませんでした。スムーズに行えました。

InfoQ: Agentのawait/futureメソッドはどうですか。 awaitメソッドが返ったら現在のアクターを停止して再スケジュールしますか。

Agent.futureはアクターの現在の値を問い合わせるためにメッセージを送信します。これは!!!メソッドで行われます。このメソッドはFutureを伴ってすぐに返ります。
Agent.awaitはAgent.future.await.result.getの別名です。なのでブロッキングコールになります。Agent.futureは新しいノンブロッキングのFuture合成を利用できます。

InfoQ: Akka 1.1のデフォルトディスパッチャは1.0に比べてどの程度改善していますか。HawtDispatchは使いやすくなったり、高速になっていますか。

これは簡単には説明できません。繰り返し小さな改善を重ねてきたからです。HawtDispatchは決して早くなっていません。AkkaのHawtDispacherはAkkaのコアから取り除かれ、利用は非推奨になりました。低レベルのネットワークIOを実行するときだけは便利だと思います。下記は最新のベンチマークの結果です。

このベンチマークの結果の詳細はAkkaユーザリストでの議論を参照ください。

InfoQ
: Akka 2.0で計画されている大きな機能/変更はありますか。

ええ、商用のAkkaのクラスタサポートをオープンソース版に移植するべく鋭意開発中です。秋にリリースする予定のAkka 2.0に盛り込みたいと思っています。クラスタリング(リモーティングでも分散配置でも好きな呼び方でかまいませんが)は完全に構成作業に抽象化されます。つまり、ローカルのアクターだけを使ってクラスタリングするよう(外部から)構成したり、複製したりするだけでAkkaのアプリケーションが利用できるようになるのです。

また、下記は他の特徴です。

Akka 2.0では、
  • 透過的で柔軟なロードバランシング/ルーティング
  • 透過的で柔軟なクラスタリバランシング
  • 自動リプリケーションとノードクラッシュ時の自動フェールオーバ
  • 永続的なアクーターメールボックス
  • サブスクリプションベースのクラスタメンバシップサービス(ノードの無停止での追加/削除)
  • 高可用でスケーラブルなトランザクションログに基づくイベントソーシング
  • 高可用な構成の一括管理サービス
Akka 2.0移行は、
  • 計算グリッド/マップリデュース
  • データグリッド
  • 分散STM
Cloudy Akka(例えば、商用のアドオン製品)が監視や管理、プロビジョニング、ダッシュボードやEC2サポートのような運用を一手に引き受けるようになるでしょう。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT