Akka とは何か?

Akka とは何か?

«resilient elastic distributed real-time transaction processing»

私たちは分散型で、並行性を持ち、障害耐性のある、スケーラブルなアプリケーションを正しく記述することは非常に難しいことだと確信しています。 ほとんどの場合それは間違ったツールと間違った抽象化のレベルを用いることが原因です。アクターモデルを用いて抽象化のレベルを引き上げ、スケラーブルでレジリエントかつ即応性を持つアプリケーション - 詳細は リアクティブマニフェスト を参照 - を構築するより良い基盤を提供します。 耐障害性のために "let it crash" モデルを採用します。このモデルで、通信産業では自己回復するアプリケーションと決して止まらないシステムを作ることに成功しています。 アクターは、分散透過性のための抽象化と、正しくスケールし耐障害性を持つアプリーケションを構築するための基礎も提供します。

Akka はオープンソースで、Apache 2 ライセンスで利用できます。

http://akka.io/downloads からダウンロードできます。

すべてのサンプルコードはソースに直接アクセスすることでコンパイルできることに注意してください。github にある Akka ドキュメントのサブプロジェクトである JavaScala を見てください。

Akka の特徴

アクター

アクターは以下を提供します。

  • 分散性、並行性、並列性のためのシンプルで高レベルの抽象化。

  • 非同期でノンブロッキング、かつ、高性能のメッセージ駆動プログラミングモデル。

  • とても軽量なイベント駆動処理(1 ギガバイトのヒープメモリにつき数百万のアクター)。

Scala または Java の章を見てください。

耐障害性

  • "let-it-crash" 方式による スーパーバイザー階層。

  • アクターシステムは、精密な耐障害性システムを提供するため複数の JVM にまたがることができます。

  • 自己回復と無停止を備えた高度な耐障害性を持つシステムを洗練された方法で記述できます。

耐障害性 (Scala) または 耐障害性 (Java) を見てください。

位置透過性

Akka の全ては分散環境で動作するように設計されています。全てのアクター同士の相互作用は純粋なメッセージパッシングで行われ、それはは全て非同期で行われます。

クラスタサポートの概要については Java または Scala のドキュメントを見てください。

永続化

アクターが積み重ねた状態の変更は必要に応じて永続化され、アクターが開始または再起動するときに再生されます。これは JVM のクラッシュや、他のノードへの移動が起きたときでさえも、アクターは自身の状態を復元できることを指します。

より詳細な内容については、 Java または Scala のそれぞれの章を見てください。

Scala と Java の API

Akka には Scala DocumentationJava Documentation の2種類の API があります。

Akka の様々な利用方法

Akka はツールキットであり、フレームワークではありません。特定のソースコードの構成に強制されることなく、その他のライブラリのようにビルドに統合できます。内部状態の適切なカプセル化をアクターのコラボレーションによって促進したシステムを表現するとき、ビジネスロジックとコンポーネント間通信が自然に分離されていることが発見できるでしょう。

Akka アプリケーションは一般的に以下の方法でデプロイします。

  • 通常の JAR ファイルとして、クラスパスや Web アプリケーションのライブラリに含めます。

  • sbt-native-packager によりパッケージ化します。

  • Lightbend ConductR を使ってパッケージ化とデプロイを行います。

商用サポート

Akka はLightbend 社による 開発と製品サポートを含む商用ライセンスも利用可能です。詳細は `こちら<http://www.lightbend.com/how/subscription>`_. にあります。

Contents