0

当我添加一个 IP 地址并建立连接时,客户端是否获取所有服务器的可用 IP 地址?

或者当其中一个出现故障时,客户是否需要知道至少 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 地址,并且在我执行获取和设置操作时服务器出现故障。客户端是否能够连接到其他可用的服务器?因为如果我添加一个观察者并看到可用的服务器,我看不到任何(如果我在列表中只添加一个服务器)这是否意味着我必须添加尽可能多的 IP 地址以避免连接失败?

另一个问题是,我可以看到,当我添加 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 客户端与所有版本的 Membase 兼容。

另一件事。您只需提供一个 URI 即可获取集群中所有节点的列表,但建议您添加与集群中的服务器一样多的 URI。这样做的原因是,如果您在 URI 中指定的节点出现故障,您将失去与集群的连接,因为您将无法获得集群更新。如果您指定了多个 URI,则 Spymemcached/Couchbase 客户端将尝试连接到 URI 列表中的下一个节点。

于 2012-03-03T02:19:28.213 回答