我有一个 membase 主机集群,我还有一组 moxi 进程,运行在不同的机器上,所有这些都配置为与这个集群通信。
我的客户端正在使用 spymemcached,我正在尝试配置 MemcachedClient,以便它了解所有可用的 moxi 进程。这样,如果其中一个进程死亡,我希望 spymemcached 使用不同的 moxi 并继续向集群发送数据。
理想情况下,所有这些都应该在不丢失队列信息的情况下完成。
我正在玩两个 moxi 进程,但无法让它做我想做的事。
我已经调查了 http://groups.google.com/group/spymemcached/browse_thread/thread/d33ca15c0a928d37# 和 http://groups.google.com/group/spymemcached/browse_thread/thread/f7cc37fc509b70a6/cbb967e824a0ab04?hl=en&lnk=gst&q=redistribute#cbb967e824a0ab04 没有运气。
有人能告诉我这在 spymemcached 中是否可行吗?如果是这样,我应该如何配置它?
我正在使用 ConnectionFactoryBuilder 的不同配置。
ConnectionFactoryBuilder builder = new ConnectionFactoryBuilder();
builder.setFailureMode(FailureMode.Redistribute);
builder.setProtocol(Protocol.BINARY);
builder.setLocatorType(Locator.CONSISTENT);
builder.setMaxReconnectDelay(1);
builder.setTimeoutExceptionThreshold(2);
ConnectionFactory cf = builder.build();
最佳答案
我不确定,但是您不能在 spymemcached 配置中指定多个 moxi 服务器吗?
据我所知,moxi 支持 memcached 协议(protocol),spymemcached 允许与多个 memcached 服务器通信。这意味着 spymemcached 将根据一致性散列算法选择其中一个 moxi 服务器,这并不重要,因为最终 memcached 服务器无论如何都会被 moxi 进程选择。如果其中一个 moxi 进程挂掉,spymemcached 会自动切换到另一个 moxi 进程。