第7章 ステートフル・ストリーミング ステートフル・ストリーミング
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ステートフル・ストリーミングは、イベント駆動型マイクロサービスの最も重要なコンポーネントを支えるものである。「エンティティ・イベントからステートを実体化する」では、イベント・ストリームをローカル・ステートに実体化する原則を簡単に説明した。この章では、イベント駆動型マイクロサービスのステートを構築、管理、使用する方法について、より深く見ていく。
状態ストアとイベントストリームからの状態の実体化
定義から始めよう:
- 物質化された状態
-
ソースイベントストリームからのイベントの投影(不変性)
- 州店舗
-
サービスのビジネス・ステートが保存される場所(可変性)
両方のマテリアライズドステートとステートストアは、ステートフルなマイクロサービスでは必須であり、広範囲に使用されるが、両者を区別することが重要である。マテリアライズド・ステートはマイクロサービス・アプリケーションで一般的なビジネス・エンティティを使用できるようにするもので、ステート・ストアはビジネス・ステートと中間計算を格納するものである。
各マイクロサービスの設計では、サービスがデータをどこに保存するかも考慮しなければならない。ステートの保存とアクセスには、主に2つの選択肢がある:
-
内部的には、データはプロセッサと同じコンテナに格納され、メモリまたはディスクに割り当てられる。
-
外部とは、プロセッサーのコンテナの外、何らかの外部ストレージサービスにデータをストアすることである。これは多くの場合、ネットワーク経由で行われる。
図7-1は、内部および外部状態記憶装置の例を示している。
図7-1. 内部および外部ステート・ストア
内部ストレージか外部ストレージかの選択は、主にマイクロサービスのビジネス責任と技術要件に依存する。しかし、これら2つの選択肢をより深く評価する前に、変更ログの役割を検討する必要がある。
Changelogイベントストリームに状態を記録する
変更ログは、ステートストアのデータに加えられたすべての変更の記録である。これは、テーブルとストリームの二元性におけるストリームであり、状態のテーブルが個々のイベントのストリームに変換される。マイクロサービスインスタンスの外部で維持される状態の永続的なコピーとして、変更ログは図7-2に示すように状態を再構築するために使用することができ、イベント処理の進捗をチェックポイントする方法として機能する。
チップ
チェンジログは、以前の処理結果を保存しているため、復旧したプロセッサがすべての入力イベントを再処理せずに済むため、障害が発生したサービスの再構築作業を最適化する。
図7-2. 変更ログを有効にしたステート・ストア
Changelogストリームは、他のストリームと同様にイベントブローカーに格納され、前述のように、状態ストアを再構築する手段を提供する。状態を再構築するために必要なのは最新のキーと値のペアだけなので、Changelogストリームはコンパクトにする必要がある。 ...
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