Apache ZooKeeper は、小さなオブジェクト用の高可用性データストアの一種です。ZooKeeper クラスターは、データセット全体をメモリに保持するいくつかのノードで構成されます。データセットは「常に一貫性がある」と呼ばれるため、すべてのノードは常に同じデータを持ちます。
ドキュメントとブログ投稿によると、クラスター内のすべてのノードは読み取りに応答し、書き込みを受け入れることができます。
- 読み取りは常にノードによってローカルで応答されるため、クラスターとの通信は関係ありません。
- 書き込みは、指定された「リーダー」ノードに転送されます。このノードは、書き込み要求をすべてのノードに転送し、それらの応答を待ちます。ノードの少なくとも半分が応答すると、書き込みは成功したと見なされます。
質問: リーダーがノードの半分が応答するのを待つだけで十分なのはなぜですか? 誰かが更新を受け取らなかったノードの 1 つに接続すると、古い結果が得られます (ローカル値からローカル読み取りのみ)。