フォールトトレランスとレプリケーション
フォールトトレランスとレプリケーションは、分散システムにおいて、一部のコンポーネントが故障しても、正しいサービスを提供し続けるための技術です。
Definition
フォールトトレランスとは、一部のコンポーネントに障害が発生しても、システムがその仕様を満たし続ける能力を指します。レプリケーション(計算またはデータの複数のコピーを維持すること)は、これを達成するための主要なメカニズムであり、コピーを適切に一貫性のある状態に保つためのプロトコルを必要とします。
Scope
この分野では、フォールトトレランスの基盤としての冗長性、信頼性の高いサービスを構築するためのステートマシンレプリケーションアプローチ、データレプリケーションとレプリケートされたデータを管理する一貫性モデル、CAP定理とパーティション下での一貫性・可用性のトレードオフ、そしてチェックポイントとロギングに基づくロールバックリカバリ技術を扱います。コンセンサスと順序付けの理論を、信頼性の高いシステムの構築に結びつけます。
Sub-topics
Core questions
- 冗長性は、信頼性の低いコンポーネントをどのようにして信頼性の高いサービスに変えるのでしょうか?
- レプリカはどのような一貫性を維持しなければならず、各レベルはレイテンシと可用性においてどのようなコストを伴うのでしょうか?
- ネットワークがパーティション化される可能性がある場合、根本的に保証できないことは何でしょうか?
- システムは障害発生後、どのようにして一貫性のある状態に回復できるのでしょうか?
Key theories
- ステートマシンレプリケーション
- 決定論的なサービスは、同じコマンドシーケンスを同じ順序で処理する同一のレプリカを実行することでフォールトトレラントになります。これにより、生き残ったレプリカが他のレプリカの障害を隠蔽することができます。
- CAP定理
- ネットワークがパーティション化される可能性がある場合、レプリケートされたサービスは、強い一貫性と可用性を同時に保証することはできません。設計者は、パーティション中にどちらを犠牲にするかを選択する必要があり、これはギルバートとリンチによって形式化されたトレードオフです。
- ロールバックリカバリ
- 定期的に状態をチェックポイントし、オプションでメッセージをログに記録することで、システムは障害が発生したプロセスを一貫性のあるリカバリラインにロールバックし、前方へリプレイすることで、計算全体を再起動することなく回復できます。
Clinical relevance
レプリケーションとフォールトトレランスは、クラウドストレージを永続的にし、サービスを高い可用性で提供するために不可欠です。ここで研究される一貫性モデルとCAPトレードオフは、本番環境で広く使用されているデータベース、オブジェクトストア、および協調サービスによって提供される保証を直接的に決定します。
History
シュナイダーによる1990年のチュートリアルは、レプリケーションに対するステートマシンアプローチを体系化しました。2002年にギルバートとリンチによって証明されたブルワーのCAP予想(2000年)は、NoSQL時代を形成した一貫性・可用性に関する議論の枠組みを提供しました。また、エルノザヒらの調査は、数十年にわたるロールバックリカバリ研究を統合しました。
Debates
- 強い一貫性と結果整合性
- 強い一貫性はアプリケーションの推論を単純化しますが、パーティション下では可用性を制限し、レイテンシを増加させます。結果整合性は、一時的な不一致を露呈するコストを伴いますが、可用性を最大化します。適切な選択はアプリケーションのセマンティクスに依存します。
Key figures
- Fred Schneider
- Leslie Lamport
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
Related topics
Seminal works
- schneider1990
- gilbert2002
- elnozahy2002
Frequently asked questions
- レプリケーションは常に信頼性を向上させますか?
- レプリカが一貫性を保ち、独立して故障する場合に限ります。適切に調整されていないレプリカは分岐して矛盾するデータを提供する可能性があり、相関する故障(共有電源、ソフトウェアバグなど)は冗長性を無効にするため、レプリケーションは適切な一貫性プロトコルと組み合わせる必要があります。