2016-04-22 5 views
2

からの再投稿[email protected]Apache Apexはどのように背圧を処理しますか?

バックプレッシャー用のバッファーサーバーを利用しています。バッファー・サーバーはアプリケーションのクラッシュにどのように生き残りますか?バッファーサーバー自体が死んだ場合はどうなりますか? Apexは、バッファー・サーバーをバックアップしたときに下流オペレーターが最終的に上流のオペレーターに追いつくことを保証しますか?

答えて

2

バッファーサーバーは、オペレーター間でデータをストリーミングするために使用されるApexプラットフォーム内のpub-subメカニズムです。バッファー・サーバーは、常に上流の演算子と同じコンテナー内に存在します(コンテナ内の演算子の数に関係なく、コンテナ当たり1つのバッファー・サーバー)。上流の演算子の出力はバッファー・サーバーに書き込まれます。現在の演算子は、ストリームが接続されているときに、上流の演算子のバッファーサーバーからサブスクライブします。

オペレータが失敗した場合、上流のオペレータのバッファサーバは、共通のチェックポイントに達するまで、必要なデータ状態になります。上流の演算子が失敗した場合、その上流の演算子のバッファー・サーバーはデータ状態などを持ちます。最後に、入力演算子が失敗した場合(上流のバッファー・サーバーを持たない場合)、入力演算子はデータ状態を再生する責任があります。外部システムに応じて、入力オペレータは再生のために外部システムに依存するか、共通のチェックポイントに達するまでデータの状態を維持します。

何らかの理由でバッファーサーバーに障害が発生すると、バッファーサーバーをホストしているコンテナーが失敗します。したがって、コンテナ内のすべての演算子とその下流の演算子は、最後の既知のチェックポイントから再展開されます。

関連する問題