当我添加一个IP地址并建立连接时,客户端是否会获得所有服务器的可用IP地址?
或者客户端是否需要知道至少两个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地址,当我在执行get和set操作时,服务器就会宕机。客户端是否能够连接到其他可用的服务器?因为如果我添加一个观察者并看到可用的服务器,我看不到任何服务器(如果我只在列表中添加一个服务器),这是否意味着我必须添加尽可能多的IP地址以避免连接失败?
另一个问题是,我可以看到,当我添加IP地址时,我必须输入链接到特定vBucket的端口号。让所有客户端观看同一个vbucket会不会造成溢出?如果是这样的话,我应该如何平衡客户端和观看不同的vBuckets?
对不起,如果我的英语没有真正理解您的T^T。
任何类型的建议或答案都将非常感谢!谢谢!
发布于 2012-03-03 10:19:28
这里的问题是您在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列表中的下一个节点。
https://stackoverflow.com/questions/9526607
复制相似问题