Membase的?这是如何运作的?

时间:2012-03-02 01:01:54

标签: membase spymemcached

当我添加IP地址并建立连接时,客户端是否获得所有服务器的可用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的PORT编号。让所有客户观看同一个vbucket会造成任何溢出吗?如果是这样,我应该如何平衡客户端以观看不同的vBuckets?

对不起,如果我的英语不是真的送你T ^ T。

任何形式的建议或答案都将非常感谢!谢谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是你在MemcachedClient中使用memcached构造函数。如果您使用的是2.7.x或更低版本,则需要使用带有URI列表,存储桶名称和密码的构造函数。该构造函数将连接到Membase / Couchbase节点并获取群集中所有服务器的列表。然后,如果重新平衡或故障转移节点,Spymemcached将做正确的事情并连接到新节点或删除到离开集群的节点的连接。

在Spymemcached 2.8.x及更高版本中,我们实际上删除了这个功能并将其放入一个名为Couchbase Client的新项目中。在该项目中,您将只找到我上面提到的构造函数。这应该使你应该做的更明显。 Couchbase Client 1.0.1目前不支持视图,但会在下一版本中添加。此外,Couchbase Client兼容所有版本的Membase。

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