第7章. ステートフル演算子とアプリケーション状態
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ステートフル演算子 とユーザ関数は、ストリーム処理アプリケーションの一般的な構成要素である。実際、ほとんどの非自明な演算子は、レコードや部分的な結果を記憶する必要がある。なぜなら、データはストリーム処理され、時間とともに到着するからだ。1Flinkの組み込みDataStream演算子、ソース、シンクの多くはステートフルで、レコードをバッファリングしたり、部分的な結果やメタデータを保持する。例えば、ウィンドウ演算子は、ProcessWindowFunction の入力レコードやReduceFunction の適用結果を収集し、ProcessFunction はスケジュールされたタイマーを記憶し、いくつかのシンク関数はトランザクションに関するステートを保持し、ジャストワンス機能を提供する。組み込み演算子や提供されるソースやシンクに加えて、FlinkのDataStream APIは、ユーザ定義関数の状態を登録、維持、アクセスするためのインタフェースを公開している。
ステートフル・ストリーム処理は、ストリーミング・アプリケーションのメンテナンスだけでなく、障害回復やメモリ管理など、ストリーム・プロセッサの多くの側面に影響を与える。第2章と第3章では、それぞれステートフル・ストリーム処理の基礎と、それに関連するFlinkのアーキテクチャの詳細について説明した。第9章では、ステートフルなアプリケーションを確実に処理するためのFlinkのセットアップと設定方法を説明する。第 10 章では、アプリケーションのセーブポイントの取得と復元、アプリケーションのリスケーリング、 アプリケーションのアップグレードなど、ステートフルなアプリケーションの演算子について説明する。
この章では、ステートフルなユーザ定義関数の実装に焦点を当て、ステートフル・アプリケーションの性能と堅牢性について議論する。具体的には、ユーザ定義関数の中でどのように定義し、どのように様々なタイプのユーザと対話するかを説明する。また、性能の側面と、関数のステートのサイズを制御する方法についても説明する。最後に、キー付きステートをクエリ可能に設定する方法と、外部アプリケーションからステートにアクセスする方法を示す。
ステートフル関数の実装
ステート管理」では、 、関数はキー付きステートと演算子ステートの2種類のステートを持つことができると説明した。Flinkはステートフル関数を定義するための複数のインタフェースを提供している。このセクションでは、keyed状態と 演算子状態を持つ関数がどのように実装されているかを示す。
ランタイムコンテキストでキー付きステートを宣言する
ユーザ関数 は、キー属性のコンテキストでステートを保存しアクセスするために、キー付きステートを採用することができる。Flinkは、キー属性の異なる値ごとに、1つのステートインスタンスを保持する。関数のキー付きステートインスタンスは、関数の演算子のすべての並列タスクに分散される。つまり、関数の各並列インスタンスは、キードメインのサブレンジを担当し、対応するステートインスタンスを保持する。したがって、キー付きステートは分散キー・バリュー・マップに非常に似ている。キー付き状態の詳細については、"状態管理 "を参照のこと。
キー付き 状態は、KeyedStream ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access