我是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};
答案 0 :(得分:1)
您的一致性水平是多少?如果您的一致性级别为1.您应该看到失败,因为其中一个节点在50%的情况下失效。但是由于数据存储驱动程序中的重试策略,它主要是在读取超时后获取数据。
但是为了发生读取超时,它首先必须向下行节点发送请求,因此我认为延迟增加。
由于默认的读取超时为10秒,您会看到延迟为10.如果这是您的常见情况,我会说您应该减少这个。
协调员应等待读取操作完成的时间 read_request_timeout_in_ms:10000
答案 1 :(得分:0)
我有同样的症状。问题结果是两个节点上的cassandra.yaml文件中指定的broadcast_rpc_address。它指向另一个集群。我的解决方案是将此IP更改为当前群集中某个节点的公共IP。