gpt4 book ai didi

java - Cassandra Hector 负载均衡

转载 作者:行者123 更新时间:2023-11-30 06:34:28 29 4
gpt4 key购买 nike

我最近设置了一个有两个节点的 Cassandra 集群。复制因子设置为 2,如果两个节点都打开,它们似乎都运行良好。现在我怎样才能以这种方式使用 hector 以使其在至少一个节点启动时保持工作?截至目前,我有以下内容。

CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(
"localhost:9160,xx.xx.13.22:9160");
cassandraHostConfigurator.setMaxActive(20);
cassandraHostConfigurator.setMaxIdle(5);
cassandraHostConfigurator.setCassandraThriftSocketTimeout(3000);
cassandraHostConfigurator.setMaxWaitTimeWhenExhausted(4000);
Cluster cluster = HFactory.getOrCreateCluster("structspeech",
cassandraHostConfigurator);
Keyspace keyspace = HFactory.createKeyspace("structspeech", cluster);
....

假设如果主机 xx.xx.13.22 出现故障,那么我会在我的控制台中收到以下消息,并且在该节点出现之前我的所有插入都失败了。

Downed xx.xx.13.22(xx.xx.13.22):9160 host still appears to be down: Unable to open transport to xx.xx.13.22(xx.xx.13.22):9160 , java.net.ConnectException: Connection refused: connect

我的键空间是这样定义的

 update keyspace structspeech with placement_strategy = 
'org.apache.cassandra.locator.SimpleStrategy'
and strategy_options =[{replication_factor:2}];

我确信我遗漏了一些非常微不足道的东西,我们将不胜感激任何帮助。谢谢

最佳答案

默认情况下,Hector 使用 Quorum 的一致性级别,因此如果您的一个节点出现故障,则无法满足此级别。
当 RF = 2 quorum 意味着你需要读写两个节点,所以如果其中一个节点宕机你就无法执行。
这是一个很好的在线工具,可以演示 NRW(N = 复制因子,R = 读取一致性,W = 写入一致性)http://www.ecyrd.com/cassandracalculator/
要在写入/读取时更改一致性级别,例如 AllOneConsistencyLevelPolicy HFactory.createKeyspace(String, Cluster, ConsistencyLevelPolicy)

关于java - Cassandra Hector 负载均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6907878/

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