4

ここで私の理解が間違っている可能性があります。私が理解しているように、Couchbase はスマート クライアントを使用して、クラスター内で書き込みまたは読み取りを行うノードを自動的に選択します。私が理解していないのは、このデータが書き込まれたり読み取られたりすると、他のすべてのノードにもすぐに書き込まれるということですか? その場合、ノードに障害が発生した場合、Couchbase は現在の操作/キーに対して「マスターとしてマーク」されたノードとは異なるノードを使用することをどのように認識しますか? ノードの 1 つに障害が発生した場合、データが失われますか?

Couchbase Server Manual の次の文は、データを失うような印象を与えます (これにより、Couchbase は高可用性の要件には不向きになります)

  • より大きなノードが少ないと、ノード障害が発生した場合のアプリケーションへの影響が大きくなります

お時間をいただきありがとうございます:)

4

2 に答える 2

4

デフォルトでは、データがcouchbaseクライアントに書き込まれるsuccessと、そのデータが1つのノードのメモリに書き込まれた直後にクライアントが戻ります。その後、couchbase はそれをディスクに保存し、レプリケーションを行います。

ほとんどのクライアント ライブラリでデータを確実にディスクに永続化したい場合は、それを可能にする関数があります。これらの機能を利用して、データが別のノードに複製されることを保証することもできます。この機能は と呼ばれobserveます。

1 つのノードがダウンした場合は、failovered にする必要があります。Auto failoverサーバー設定でタイムアウトが設定されている場合、Couchbaseサーバーは自動的にそれを行うことができます。つまり、3 つのノードのクラスターがあり、保存されたデータに 2 つのレプリカがあり、1 つのノードがダウンした場合、データは失われません。2 番目のノードに障害が発生しても、すべてのデータが失われることはありません。最後のノードで利用できます。

1 つのノードMasterがダウンしてフェールオーバーすると、もう一方の生きているノードは になりMasterます。クライアントでは、クラスター内のすべてのサーバーを指すため、あるノードからデータを取得できない場合、別のノードからデータを取得しようとします。

また、自由に使えるノードが 2 つある場合は、2 つの別々のカウチベース サーバーをインストールし、XDCR (クロス データセンター レプリケーション) を構成し、HA プロキシなどでサーバーの可用性を手動で確認できます。そうすれば、接続するIP(プロキシのIP)が1つだけになり、生きているサーバーから自動的にデータが取得されます。

于 2013-06-13T07:22:54.857 に答える
3

Couchbase が HA システムに適したシステムであることを願っています。

それがどのように機能するかを簡単に説明しましょう。5 ノードのクラスターがあるとします。クライアント API/SDK を使用するアプリケーションは、クラスターのトポロジー (およびトポロジーの変更) を常に認識しています。

クラスターでドキュメントを設定/取得する場合、クライアント API はサーバーと同じアルゴリズムを使用して、ドキュメントを書き込むノードを選択します。したがって、クライアントは CRC32 ハッシュを使用してノードを選択し、このノードに書き込みます。次に、クラスターは 1 つ以上のレプリカを他のノードに非同期的にコピーします (構成によって異なります)。

Couchbase には、その時点でドキュメントのアクティブなコピーが 1 つしかありません。そのため、一貫性を保つのは簡単です。したがって、アプリケーションはこのアクティブなドキュメントから取得および設定します。

障害が発生した場合、サーバーにはいくつかの作業があり、障害が (自動的に、または監視システムによって) 発見されると、「フェイルオーバー」が発生します。これは、レプリカがアクティブとして昇格され、以前のように動作できることがわかっていることを意味します。通常、ノードのリバランスを実行して、クラスターのバランスを適切に調整します。

あなたがコメントしている文は、ノードの数が少ないほど、同じ数のリクエストを少数のノードにルーティングする必要があるため、障害/リバランスの場合の影響が大きくなるということです。うまくいけば、データを失わないでください;)

この作業方法に関する非常に詳細な情報は、Couchbase CTO ブログ ( http://damienkatz.net/2013/05/dynamo_sure_works_hard.html ) で確認できます。

注: 私は Couchbase で開発者エバンジェリストとして働いています。

于 2013-06-24T13:34:26.680 に答える