我必须如何使用Java API来促进故障切换?
我试图从java应用程序中使用Riak,如果集群中的一台机器出现故障,它就会开始使用其他机器。我用C#中的瓦楞铁驱动程序实现了这一点,但在java中似乎无法实现 我已经确保在PBClusterConfig中指定了多台Riak机器,即客户机“知道”集群中的所有机器 我这样设置我必须如何使用Java API来促进故障切换?,java,api,riak,Java,Api,Riak,我试图从java应用程序中使用Riak,如果集群中的一台机器出现故障,它就会开始使用其他机器。我用C#中的瓦楞铁驱动程序实现了这一点,但在java中似乎无法实现 我已经确保在PBClusterConfig中指定了多台Riak机器,即客户机“知道”集群中的所有机器 我这样设置PBClusterConfig: BClusterConfig config = new PBClusterConfig(maxConnections); for(RiakServerConfig server : serve
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();
然后,我的实际操作(仅读写)如下所示:
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:timeout从池获取连接许可证
关于如何使这项工作起作用,有什么想法吗?我相信还有一个解决办法。我在riak邮件列表中看到的一个推荐解决方案是安装并处理故障转移