Cassandra节点发生故障时的自动故障转移延迟

时间:2015-01-22 22:16:41

标签: c# cassandra nosql

我是Cassandra的新手。

我在两台Debian VMware计算机上创建了2个cassandra 2.1节点。在asp.net mvc中我使用过datastax驱动程序2.1.5,确实没有任何问题但是当我关闭或禁用其中一个节点上的网络时,应用程序似乎有5或10秒的延迟来自动连接其他节点

当两个节点启动时,查询在c#中运行 00:00:00.0620413 秒 并且当节点关闭时查询运行   00:00:10.0607187 秒。每个刷新页面延迟10秒,当两个节点运行时,查询在1秒以内执行。

我的代码:

Cluster cluster = Cluster.Builder()
            .AddContactPoints("192.168.0.1", "192.168.0.")
            .WithRetryPolicy(DowngradingConsistencyRetryPolicy.Instance)
            .WithReconnectionPolicy(new FixedReconnectionPolicy(0, 10))
            .WithLoadBalancingPolicy(
                new TokenAwarePolicy(new DCAwareRoundRobinPolicy()))
            .Build();

我在两个节点上的配置: cluster_name:'测试群集' num_tokens:256 seed_provider:    - class_name:org.apache.cassandra.locator.SimpleSeedProvider     参数:           - 种子:" 192.168.0.1,192.168.0.2" endpoint_snitch:SimpleSnitch

节点1中的

: listen_address:192.168.0.1 rpc_address:192.168.0.1

节点2中的

: listen_address:192.168.0.2 rpc_address:192.168.0.2


我的密钥空间: 创建KEYSPACE mykeyspace WITH REPLICATION = {' class' :' SimpleStrategy',' replication_factor' :2};

2 个答案:

答案 0 :(得分:1)

您的一致性水平是多少?如果您的一致性级别为1.您应该看到失败,因为其中一个节点在50%的情况下失效。但是由于数据存储驱动程序中的重试策略,它主要是在读取超时后获取数据。

但是为了发生读取超时,它首先必须向下行节点发送请求,因此我认为延迟增加。

由于默认的读取超时为10秒,您会看到延迟为10.如果这是您的常见情况,我会说您应该减少这个。

协调员应等待读取操作完成的时间 read_request_timeout_in_ms:10000

答案 1 :(得分:0)

我有同样的症状。问题结果是两个节点上的cassandra.yaml文件中指定的broadcast_rpc_address。它指向另一个集群。我的解决方案是将此IP更改为当前群集中某个节点的公共IP。