0

IP アドレスを追加して接続すると、クライアントはすべてのサーバーの使用可能な IP アドレスを取得しますか?

または、クライアントは、そのうちの 1 つがダウンした場合に備えて、少なくとも 2 つの IP アドレスを知っている必要がありますか?

これは私がテストしてきたコードです(JAVA)

List addrList = new ArrayList();
 addrList.add("192.168.20.105:11211");
 addrList.add("192.168.20.106:11211");
 addrList.add("192.168.20.101:11211");

try {

List addr = AddrUtil.getAddresses(addrList);
 mbsClnt = new MemcachedClient (new BinaryConnectionFactory() , addr);

IP アドレスを 1 つだけ追加した場合、取得および設定操作を行っているときにサーバーがダウンします。クライアントは利用可能な他のサーバーに接続できますか? オブザーバーを追加して利用可能なサーバーを表示しても、何も表示されないためです (リストにサーバーを 1 つだけ追加した場合)。これは、接続の失敗を回避するために、できるだけ多くの IP アドレスを追加する必要があるということですか?

もう 1 つの質問は、IP アドレスを追加するときに、特定の vBucket にリンクされているポート番号を入力する必要があることです。すべてのクライアントが同じ vbucket を監視することでオーバーフローが発生しますか? もしそうなら、異なる vBucket を監視するためにクライアントのバランスを取るにはどうすればよいですか?

私の英語がうまく伝わらなかったらごめんなさい T^T.

どんな種類のアドバイスや回答も大歓迎です! ありがとう!

4

1 に答える 1

0

ここでの問題は、MemcachedClient で memcached コンストラクターを使用していることです。2.7.x 以下を使用している場合は、URI のリスト、バケット名、およびパスワードを受け取るコンストラクターを使用する必要があります。そのコンストラクターは Membase/Couchbase ノードに接続し、クラスター内のすべてのサーバーのリストを取得します。その後、ノードのリバランスまたはフェイルオーバーを行うと、Spymemcached は正しいことを行い、新しいノードに接続するか、クラスターを離れたノードへの接続をドロップします。

Spymemcached 2.8.x 以降では、実際にこの機能を削除し、Couchbase Client という新しいプロジェクトに配置しました。そのプロジェクトでは、上で述べたコンストラクターのみが見つかります。これにより、何をすべきかがより明確になります。現在、Couchbase Client 1.0.1 はビューをサポートしていませんが、次のリリースで追加される予定です。また、Couchbase Client はすべてのバージョンの Membase と互換性があります。

もう1つ。クラスタ内のすべてのノードのリストを取得するために必要な URI は 1 つだけですが、クラスタ内のサーバーと同じ数の URI を追加することをお勧めします。これは、URI で指定したノードがダウンすると、クラスターの更新を取得できなくなるため、クラスターへの接続が失われるためです。複数の URI を指定すると、Spymemcached/Couchbase クライアントは URI のリスト内の次のノードに接続しようとします。

于 2012-03-03T02:19:28.213 に答える