gpt4 book ai didi

java - 我必须如何使用 Java API 来促进故障转移?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:00 25 4
gpt4 key购买 nike

我正在尝试通过我的 Java 应用程序使用 Riak,如果集群中的一台机器出现故障,它就会开始使用其他机器。我在 C# 中使用 Corrugated Iron 驱动程序设法做到了这一点,但似乎无法在 Java 中运行。

我已经确定我在 PBClusterConfig 中指定了不止一台 Riak 机器,即客户端“知道”集群中的所有机器。

我这样设置 PBClusterConfig:

BClusterConfig config = new PBClusterConfig(maxConnections);
for(RiakServerConfig server : servers) {
PBClientConfig.Builder builder = new PBClientConfig.Builder();
PBClientConfig serverConfig = builder
.withHost(server.getHostname())
.withPort(server.getPort())
.build();

config.addClient(serverConfig);
}

那么我的实际操作(只读和写)是这样的:

client
.createBucket(bucket)
.withRetrier(DefaultRetrier.attempts(3))
.execute()
.store(key, value)
.withRetrier(DefaultRetrier.attempts(3))
.execute();

当 riak 集群正常时,这段代码可以工作,但是当其中一台机器出现故障时,几秒钟后我会收到以下错误:com.basho.riak.client.RiakRetryFailedException: com.basho.riak。 pbc.AcquireConnectionTimeoutException:从池中获取连接许可超时

关于如何使这项工作有任何想法吗?

最佳答案

我相信还有一个 outstanding issue regarding how the cluster client handles node failures .我在 riak 邮件列表上看到推荐的一种解决方法是安装例如HAProxy on the application server并让这个处理故障转移。

关于java - 我必须如何使用 Java API 来促进故障转移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com