クライアントライブラリの作者は、それらのユーザーアプリケーションが、冗長性のため複数のCouchbaseクラスタ接続用URLを指定できるようにする必要があります。理想的には、ユーザーアプリケーションから、奇数個のURLを指定します。クライアントライブラリは、すべてのREST/JSONのURLからの応答を比較し、クラスタの大半が同等の設定となるのを確認することができます。同数のURLが競合するクラスタ設定を返す状況においては(クラスタ内にわずか2つのCouchbaseサーバがあり、ネットワーク分断によるスプリットブレインの問題がある場合など)、クライアントライブラリは正しくない(フェイルオーバされ、既にクラスタ外の)ノードに接続を試みるよりむしろ、ユーザに対しエラーを返すべきです。
libvBucket
Cライブラリには、これらの比較をサポートするために、2つの構成を比較するためのAPIが備わっています。ここからvbucket_compare()
関数を参照してください。
高度な手段として、クライアントライブラリは複数のREST/JSONストリームをオープンしておき、再構成イベントが発生した場合、ストリームされた構成設定間で前述の"多数決"比較を継続的に行うべきです。
また、クライアントライブラリは、そのREST/JSON応答から複数のクラスタノードについて"学ぶ"必要があります。たとえば、ユーザーは、マルチノードクラスタに一つのURLを指定している場合があります。その一つのノードからのREST/JSON応答には、クライアントライブラリが必要に応じて、個別にコンタクトできる他のすべてのノード一覧があります。これを利用すれば、クライアントライブラリが、たとえ最初のURL/ノードが失敗しても(クライアントライブラリが動いている限り)続行することができます。