Cassandra群集故障处理
当接触节点死亡时,Cassandra的行为如何?我的意思是,Cassandra有“n”个节点的环形结构,如果客户机要访问第一个节点,但它已经死了。第一个节点在java客户机中指定。Cassandra群集故障处理,cassandra,Cassandra,当接触节点死亡时,Cassandra的行为如何?我的意思是,Cassandra有“n”个节点的环形结构,如果客户机要访问第一个节点,但它已经死了。第一个节点在java客户机中指定。 我无法理解处理失败的原因。有人能帮我吗?如果您只有一个节点,或者只指定一个节点,而该节点已关闭,则客户端将无法连接(显然);但通常情况下,客户端库(如Hector)将允许您指定一组节点并维护一个连接池,以连接任何可用节点 Hector更详细一些,但指定多个节点的最简单方法是在创建集群时在CassandraHostCo
我无法理解处理失败的原因。有人能帮我吗?如果您只有一个节点,或者只指定一个节点,而该节点已关闭,则客户端将无法连接(显然);但通常情况下,客户端库(如Hector)将允许您指定一组节点并维护一个连接池,以连接任何可用节点 Hector更详细一些,但指定多个节点的最简单方法是在创建集群时在
CassandraHostConfigurator
中传递一个以逗号分隔的主机列表:
String hosts=“node1.example.com:9160,node2.example.com:9160,node3.example.com:9160”;
Cluster Cluster=HFactory.getOrCreateCluster(Cluster_名称,新的CassandraHostConfigurator(hosts));
这取决于客户,不同的客户会做不同的事情来处理这个问题,但是对于大多数驱动程序,您可以提供多个联系点
Astyanax使用令牌发现来跟踪集群中的各个节点
主机供应商将连接池与动态主机注册表相关联。连接池将经常为此供应商轮询当前主机列表,并更新其内部主机连接池以说明新主机或已删除的主机
这是在设置上下文期间配置的:
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
...
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
.setConnectionPoolType(ConnectionPoolType.TOKEN_AWARE)
)
...
context.start();
我可以使用Hector客户端创建连接池吗?是否有任何教程提供有关使用Hector的连接池的信息?谢谢,所以,如果我们使用集群,显然我们应该使用连接池来管理故障。我是wright吗?@user2560319我仍然不知道您使用的是什么客户端,而且Astyanax和DataStax驱动程序仍然为您处理连接池!赫克托是个过时的司机,所以我会避开它。DataStax的驱动程序最适合处理故障,我建议您使用它,除非您需要使用Thrift协议。例如,如果您要创建一个基于CAN的系统,哪个驱动程序最适合处理故障并具有支持功能?请查看我之前的评论。。。DataStax的驱动程序每天都会更新,你可以在freenode IRC网络上的#cassandra聊天室找到驱动程序的开发人员。听起来很棒。谢谢你的建议。
Cluster cluster = Cluster.builder()
.addContactPoint("127.0.0.1")
.addContactPoint("127.0.0.2")
.addContactPoint("127.0.0.3")
.build();
Session session = cluster.connect();