BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Akka Streamsによるリアクティブストリーム

Akka Streamsによるリアクティブストリーム

原文(投稿日:2014/04/21)へのリンク

Typesafeは,アクタを基本としたリアクティブストリーム(Reactive Streams)のオープンソース実装であるAkka Streamsの早期プレビュー版を発表した。リアクティブストリームはJava仮想マシン(JVM)上で,非ブロック形式のバックプレッシャを備えた非同期ストリーム処理の標準を提供しようという取り組みだ。非同期性は計算機リソースの並列使用を可能にするために,またバックプレッシャはデータ生成が利用側の処理を圧迫してシステム全体をダウンさせる潜在的可能性を防ぐために,それぞれ必要とされている。またリアクティブストリームは,Twitter, Oracle, Pivotal, Red Hat, Applied Duality, Typesafe, Netflix, Spray.io, Doug Leaといった企業の参加する,技術的なコラボレーションでもある。

ストリームベースの処理が増加している。例えばストリームビデオでは,数百万の同時ユーザのトランザクション処理や,ユーザの行動からリアルタイムにパターンを検出する処理などが行われている。リアルタイムコンテントにせよ,バルクデータ転送にせよ,ストリームデータ操作には特別な配慮が必要とされる。高速なソースデータが送信先の処理を圧迫しないよう,リソース消費を注意深くコントロールする必要があるからだ。リアクティブストリーム仕様が目標とするのは,静的型付けと高いパフォーマンスを備え,低レイテンシで,非ブロッキング形式のバックプレッシャを組み込みで装備する,非同期データストリームの標準を確立することである。非同期実行ステージ間のバックプレッシャを操作することで,数千のノードを備えたクラスタ上での分散ストリーム処理が可能になる。システムが能力限界に達するとオーバーフロー処理が起動されて,最終的には外部ソースのスローダウンあるいは破棄要求が実行される。

Akkaが開発するリアクティブストリーム仕様の実装であるAkka Streamsは,アクタをベースとした実行と分散,そして回復のためのメカニズムを備えている。巧妙なDSLでグラフ処理の体系化を実現し,それをアクタのネットワークとして構築するのだ。現行の実装ではすべてのステップをそれぞれのアクタ内で実行しているが,将来のリリースでは単一のアクタ内で実行するバッチ処理など,その他のバリエーションも追加される予定である。

Reactive Strems仕様により,適合性と相互運用性を備えた実装の開発が可能になる。現時点では3つの実装がドラフト仕様に準拠している。そのひとつは前出のAkka Streamsである。もうひとつがReactor Composableで,ドラフト仕様の実装にReactor 1.1から取り組んでいる。3つめの実装であるRxJavaでは,RxJava 1.0にサポートを含めるべく,プロトタイピングと検討が行われている。

実装を試してみたければ,Typesafe Activatorをダウンロードした上で,Akka Stream Scalaテンプレートを試してみるとよい。Java用のテンプレートも近日中に提供される予定だ。詳細はTypesafeによる公式発表の他に,ReadWriteの"Real-Time Data Streaming gets Standardized"を読んでほしい。2014年5月7日9:00(米国太平洋夏時間)に開催予定の"Introducing Reactive Streams"Webセミナに登録するのもよいだろう。

この記事に星をつける

おすすめ度
スタイル

BT