Sagaパターン
Saga Pattern
さーがぱたーん
マイクロサービス間にまたがるトランザクションを、一連のローカルトランザクションとそれぞれの補償トランザクションで管理するパターン。コレオグラフィ方式(イベント駆動)とオーケストレーション方式がある。分散トランザクションの代替手法。
Related
他の資格での定義
Related
関連キーワードの用語
すでにコミットした処理の効果を、逆向きの処理を実行して打ち消すトランザクション。複数のサービスやデータベースにまたがる処理を1つのトランザクションとしてロックできないときに、途中で失敗したら、完了済みの処理ごとに用意した補償トランザクション(予約の取消し、返金など)を実行して整合性を取る。Sagaパターンで使われる。
複数のサービスにまたがる処理の整合性を保つため、各サービスの処理をTry(資源の仮押さえと業務上の検査)、Confirm(仮押さえした内容の確定)、Cancel(仮押さえの取消し)の3つの操作に分けて実装する方式。調整役が全サービスにTryを依頼し、すべて成功したらConfirmを、1つでも失敗したらCancelを指示する。2相コミットメントに似た手順を業務処理として実現するもので、データベースのロックを長く持ち続けずに済む。
端末からの要求に対してリアルタイムにトランザクション処理を行う方式。OLTP。データベースの一貫性を保ちながら、多数の短いトランザクションを高速に処理する。ACID特性の保証が重要。
トランザクション処理が満たすべき4つの特性。原子性(Atomicity:全て実行か全て取消)、一貫性(Consistency:整合性の維持)、独立性(Isolation:他の処理との非干渉)、永続性(Durability:確定結果の永続保存)。
複数のプロセスやトランザクションが共有資源に同時にアクセスする際、データの不整合を防ぐための制御機構。楽観的ロックと悲観的ロックの2種類があり、デッドロックの回避も考慮する必要がある。
Googleが開発した高性能なRPCフレームワーク。Protocol BuffersによるデータのシリアライズとHTTP/2による多重化通信を特徴とする。マイクロサービス間の通信に適し、双方向ストリーミングもサポートする。
