# 複製ステートマシン ## 定義 複製ステートマシン(Replicated State Machine, RSM)とは、複数のサーバーが同一のステートマシンの決定論的コピーを保ち、すべてのコピーが同一のコマンド列を同一順序で実行することで、一貫した状態と出力を保証する分散フォールトトレランス手法である。一部のサーバーがクラッシュしても稼働を継続できる。(Source: [[@2014__ATC__In Search of an Understandable Consensus Algorithm]]) **複製ログによる実装**: 各サーバーは同一コマンド列を格納するログを保持し、それをステートマシンが順に実行する。コンセンサスモジュールがログを一貫させることで RSM の安全性を実現する(Figure 1)。 **使用例**([[@2014__ATC__In Search of an Understandable Consensus Algorithm]] §2 より): - **GFS・HDFS・RAMCloud** のリーダー選出・設定情報管理(単一クラスタリーダーを持つシステムがメタデータ管理に使用) - **Chubby**・**ZooKeeper**(分散ロックサービス・コーディネーション) ## 横断的知見 - **RSM の適用範囲**: データベース本体の全データには RSM を適用しないケースが多い。Amazon Aurora はデータ複製に Paxos/Raft ではなくクォーラムベースのログ複製を使い、RSM はメタデータ・リーダー選出に限定する設計をとる。コンセンサスのコストが全データ書き込みパスに乗ると OLTP スループットが制約される。(Source: [[@2014__ATC__In Search of an Understandable Consensus Algorithm]], [[@2018__SIGMOD__Amazon Aurora - On Avoiding Distributed Consensus for I Os, Commits, and Membership Changes]]) ## 未解決の問い - RSM は「全ての入力が決定論的」という前提が必要だが、タイムスタンプ・乱数・外部 API 呼び出しを含むトランザクションを RSM 上で実行するためのベストプラクティスは確立されているか? - RSM と Multi-Version Concurrency Control(MVCC)の組み合わせで、どの一貫性レベル(線形化可能性・シリアライザブル等)まで達成できるか? ## 関連 - [[分散コンセンサス]] — RSM の複製ログを一貫させる根底メカニズム - [[リーダー選出]] — Raft において RSM 管理の責任を一点に集中させる仕組み ## 出典 - [[@2014__ATC__In Search of an Understandable Consensus Algorithm]](RSM の定義・複製ログ実装・実用例)