【发布时间】:2020-09-16 13:11:51
【问题描述】:
我阅读了 Couchbase 重新平衡文档 (http://blog.couchbase.com/rebalancing-couchbase-part-i),它写道:“客户端失去与集群的连接将尝试重新建立(可配置)。无论何时重新连接(第一次或不是),它都会获得最新的地图,即具有讽刺意味的是,理论上一个不稳定的网络可能只是有助于在重新平衡期间保持地图不断更新,但这是一个不同的讨论。”
我使用 Spymemcached 2.7.3,我该如何实现。
我举个例子:我的 Java 客户端添加两个服务器(10.0.0.40 和 10.0.0.15,使用 URL)连接到 Couchbase 集群。但实际上,当 10.0.0.40 宕机时,长连接并没有保持。我必须重新启动客户端才能切换到 10.0.0.15。我的客户端如何在 10.0.0.40 关闭时重新连接到 10.0.0.15 而无需重新启动我的应用程序。
更新:
我使用以下代码连接到 Couchbase 集群:
ArrayList<URI> listAddr = new ArrayList<>();
listAddr.add(new URI("http://10.0.0.40:8091/pools"));
listAddr.add(new URI("http://10.0.0.15:8091/pools"));
listAddr.add(new URI("http://10.0.0.16:8091/pools"));
client = new MemcachedClient(new BinaryConnectionFactory(), listAddr, "test", "test", "");
如果池 (40) 中的第一台服务器发生故障,我希望我的 java 客户端自动重新连接到池 (40,15,16) 中的另一台服务器以获取拓扑(当我的 java 客户端仍在运行时)。
我可以使用 spymemcahce 实现这个目的吗,或者我必须迁移到 Couchbase Java SDK。
【问题讨论】:
-
Couchbase Java 客户端基于 spymemcached 项目和 Couchbase, Inc. 的人员维护/贡献于 spymemcached。您会发现在 2.7.3 之后有许多更新可用于在此类情况下自动恢复。你没有说你从日志等中得到了什么行为,所以很难确定以后的版本之一解决了这个问题。您对日志记录有什么看法?
-
我已经更新了问题