Gearpump の技術的な見どころ
Gearpumpの技術的な見どころ
Gearpumpはパフォーマンス、柔軟性、耐障害性、および反応が良いストリーミングプラットフォームで、多くの良い機能を持ちます。技術的な見どころには以下が含まれます:
あらゆる場所のactor
actorモデルは1973年にCarl Hewittによって提案された並行処理制御モデルです。actorモデルは内部で結合性があり、そしてactorの外側とは隔離されている小さなサービスのようなものです。actorはGearpumpの土台であり、それらはメッセージの送信、エラーの処理、活発さの監視をする機能を提供します。Gearpump はあらゆる場所でactorを使用します; クラスタ内の各エンティティはサービスとして扱うことができます。
確実に一回のメッセージ処理
確実に一回は以下のように定義されます: メッセージの効果はpersisted状態の中で1度だけ計算され、履歴内の計算エラーはそれ以降の計算に伝播しないでしょう。
トポロジー DAG DSL
ユーザはGearpumpに計算のDAGをサブミットすることができます。これはノードとエッジのリストを含み、各ノードはタスクのセットに並行化することができます。そして、GearpumpはDAG内の異なるタスクを自動的に異なるマシーンへスケジュールおよび分配します。各タスクはactorとして開始されるでしょう。これは長く実行している小さなサービスです。
フローの制御
Gearpump はフロー制御のための組み込みのサポートを持ちます。異なるタスク間で渡される全てのメッセージについては、フレームワークはupstreamタスクがダウンロードストリームのタスクを溢れさせないだろうことを仮定するでしょう。
端から端へのレイテンシは備わっていません
Gearpumpはメッセージレベルのストリーミングエンジンです。これはDAG内の各タスクが受け取ったメッセージをすぐに処理し、待たせる事無しにdownstreamにすぐにメッセージを配送することを意味します。Gearpumpは、データがソースの場合は、バッチを行いません。
高パフォーマンスメッセージの通過
賢いバッチの戦略を実装することで、Gearpumpは小さなメッセージの転送において非常に効果的です。4つのマシーンでのテストで、100バイトのメッセージサイズで全体のクラスタのスループットが秒間あたり1800万にまで到達することができました。
高可用性、無単一障害点
Gearpumpは高可用性のために注意深く設計されています。メッセージの喪失、ワーカーマシーンのクラッシュ、アプリケーションのクラッシュ、マスターのクラッシュ、brain-splitを考慮し、Gearpumpがエラーが起きたかもしれない時から回復するようにします。メッセージの喪失がある場合には、喪失したメッセージは再生されます; ワーカーマシーンがクラッシュ、あるいはアプリケーションがクラッシュした場合には、関係する計算タスクが新しいマシーン上で再スケジュールされるでしょう。マスターの高可用性のために、いくつかのマスターノードはAkkaクラスタを構成するでしょう; CRDT(フリーデータタイプの衝突)は状態を交換するために使われます。定数が満たされる間はマスターは機能し続けるでしょう。一つのマスターノードが故障すると、クラスタ内の他のマスターノードが取り替わり、状態は回復されるでしょう。
動的計算DAG
Gearpumpは、全体の計算のトポロジの再起動の必要無しに、実行時にユーザが動的にサブグラフを追加、削除、あるいは置き換えをすることができる機能を提供します。
順番がバラバラのメッセージを処理することができます。
スライディングウィンドウ上の動的平均のようなウィンドウ操作について、正確な結果を取得できるようにその時間ウィンドウ内で全てのメッセージを受け取るようにすることは重要です。しかし、抑圧や遅れてくるメッセージをどうやって扱いますか?Gearpumpは全てのメッセージのタイムスタンプの透かしを追跡してこの問題を解決します。つまり、Gearpumpはタイムウィンドウ内の全てのメッセージを受信したかどうかを知っています。
カスタマイズ可能なプラットフォーム
異なるアプリケーションはパフォーマンスマトリックスに関係する異なる要求を持ち、それらのいくつかは高スループットを必要とし、それらのいくつかは最終的なデータの一貫性を強く必要とするかも知れません; そして、ことなるアプリケーションは異なるリソースの要求プロファイルを持ち、いくつかは高CPUパフォーマンスを要求し、いくつかはデータのローカル性を必要とするかも知れません。Gearpumpは、ユーザが異なるパフォーマンスマトリックスの間を仲裁することができ、カスタマイズ化されたリソーススケジューリング戦略を定義することができます。
組み込みのダッシュボードUI
Gearpumpはクラスタを管理しアプリケーションをビジュアライズ化する組み込みのダッシュボードUIを持ちます。UIはバックエンドとの接続にREST呼び出しを使用するため、他のダッシュボード内に簡単に埋め込むことができます。
KafkaとHDFSのためのデータ接続
GearpumpはKafkaとHDFSのための組み込みのデータコネタタを持ちます。Kafkaコネクタについては、指定されたタイムスタンプからのメッセージの再生をサポートします。