チェーンレプリケーション

summary:

チェーンレプリケーション[Chain Replication]とは,高い可用性[Availability]と強い一貫性[Strong Consistency]を同時に保証する,プライマリ・バックアップ型のレプリケーション手法である.

この手法では,データのコピー[レプリカ]を直線的なチェーン構造に配置し,書き込み[Write]はチェーンの先頭[Head]から順番に伝播し,読み取り[Read]はチェーンの末尾[Tail]からのみ行うことで,一貫性を保証する.

チェーンレプリケーションは,主に2つの操作で構成される.書き込み[Write]においては,クライアントはチェーンの先頭ノード[Head]に書き込みリクエストを送信する.書き込まれたデータは順番に次のノードに伝播[Propagate]され,最終的にチェーンの末尾ノード[Tail]で確定[Commit]される.Tailが確定を確認したら,クライアントに書き込み成功[ACK]を返す.一方,読み取り[Read]においては,クライアントはチェーンの末尾ノード[Tail]のみからデータを読み取る.これにより,常に最新のデータを取得できるため,強い一貫性が保証される.

チェーンレプリケーションは,2004年にvan Renesse & Schneiderによって提案された.この提案により,分散ストレージのスケーラビリティを向上させつつ,一貫性を維持する方法としてこの手法が示された.

チェーンレプリケーションの利点としては,強い一貫性[Strong Consistency]が挙げられる.これはTailからのみReadを行うことで,書き込みが完全に確定したデータのみを返すことができるためである.また,高い可用性[Availability]を提供し,ノード障害が発生しても適切にリカバリすることができる.フェイルオーバーが容易であることも特徴であり,チェーンの途中のノードが落ちた場合でも,リーダー選出などの複雑なプロセスが不要で,チェーンの再構築のみで対応可能である.

一方,課題としては読み取り負荷の集中が挙げられる.全てのReadリクエストがTailノードに集中するため,スケーラビリティが低くなる傾向がある.書き込みの遅延も問題となり得る.これは書き込みがTailまで伝播しないと確定しないため,レイテンシが増加する可能性があるためである.また,ノード障害の処理においては,途中のノードが落ちた場合にチェーンの再編成が必要となる.

参照

  1. van Renesse, R., & Schneider, F. B.(2004). Chain replication for supporting high throughput and availability. Proceedings of the 6th USENIX Symposium on Operating Systems Design and Implementation(OSDI '04), 91-104.

    Mathematics is the language with which God has written the universe.





















    TDM ops:byte比 NOTゲート SM テンソルコア Jupyter