Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra群集故障处理_Cassandra - Fatal编程技术网

Cassandra群集故障处理

Cassandra群集故障处理,cassandra,Cassandra,当接触节点死亡时,Cassandra的行为如何?我的意思是,Cassandra有“n”个节点的环形结构,如果客户机要访问第一个节点,但它已经死了。第一个节点在java客户机中指定。 我无法理解处理失败的原因。有人能帮我吗?如果您只有一个节点,或者只指定一个节点,而该节点已关闭,则客户端将无法连接(显然);但通常情况下,客户端库(如Hector)将允许您指定一组节点并维护一个连接池,以连接任何可用节点 Hector更详细一些,但指定多个节点的最简单方法是在创建集群时在CassandraHostCo

当接触节点死亡时,Cassandra的行为如何?我的意思是,Cassandra有“n”个节点的环形结构,如果客户机要访问第一个节点,但它已经死了。第一个节点在java客户机中指定。
我无法理解处理失败的原因。有人能帮我吗?

如果您只有一个节点,或者只指定一个节点,而该节点已关闭,则客户端将无法连接(显然);但通常情况下,客户端库(如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();