8

結果整合性のある分散データストア (私の場合は CouchDB) を使用するファームで Web アプリケーションを実行する場合、特定のユーザーが常に同じデータストア インスタンスに転送されるようにする必要がありますか?

任意の Web リクエストが任意のデータ ストアを使用できる別のアプローチでは、一貫性の問題 (再試行、チェックなど) に対処するためにかなりの複雑さが増すように思えます。一方、特定のセッションのユーザーが常に同じカウチ ノードに向けられている場合、一貫性の問題は主に「共有」ユーザー データに関係しているため、大幅に単純化されませんか?

ユーザーを誘導するための戦略にも興味がありますが、それは別の質問のために取っておきます (コメントを歓迎します)。

4

1 に答える 1

2

CAP 定理によると、分散システムは完全な一貫性 (すべてのノードが同時に同じデータを見る) または可用性 (すべての要求が応答を受け取る) のいずれかになります。パーティションまたはデータストア インスタンスの障害時には、一方を他方と交換する必要があります。


特定のユーザーが常に同じデータストア インスタンスに転送されるようにする必要がありますか?

理想的には、そうすべきではありません!与えられたインスタンスが失敗したとき、あなたは何をしますか? 分散データストアの主な機能は、ネットワークやインスタンスに障害が発生しても利用できることです。


特定のセッションのユーザーが常に同じカウチ ノードに向けられている場合、一貫性の問題は主に「共有」ユーザー データに関係しているため、大幅に単純化されませんか?

そうです、アーキテクチャはその方がはるかに単純になりますが、そのインスタンスが失敗した場合はどうしますか? 複数のインスタンスがクエリに応答できるようにするために、分散システムに多くのエンジニアリング作業が行われました。CouchDB についてはよくわかりませんが、Cassandra では一貫性モデルを選択できます。より高度な一貫性のために可用性をトレードオフする必要があります。クライアントは、デフォルトでラウンドロビン方式でサーバーを要求するように構成されており、負荷が分散されます。

Dynamo の論文を読むことをお勧めします。著者は、分散データベースの背後にある多くのエンジニアリングの詳細について説明しています。

于 2015-07-28T10:29:24.843 に答える