我有一个6节点的Cassandra集群,复制因子为3.在最近几天没有添加/删除/删除节点。我的应用程序有三个Kafka主题和四个Storm拓扑:
所有拓扑都是使用DataStax驱动程序版本2.1.7.1及其对象映射API在Java中实现的,Cassandra版本是2.2.3。
从周末回来,我注意到以下情况:
这看起来非常像一致性问题。我的所有读写查询都以一致性级别运行。我把它换成了法定人数。 (还有一点值得注意的是,为了让更改生效,我必须重新启动Storm。)之后所有内容都恢复正常,拓扑1写入事件,拓扑3读取它们,所有内容都一致,都很好。
BUT。
在应用一致性级别修复之前,我仍然缺少很多事件几个小时,即使用cqlsh手动查询具有一致性级别,我也不会在Cassandra中看到它们!
当在一致性级别1执行时,是否会错过插入,或者我可以在哪里查找根本原因?
提前致谢!
答案 0 :(得分:0)
回答自己 - 这与Cassandra及其一致性水平无关。实际上从卡夫卡到风暴的途中数据丢失了。那是因为这个页面:
http://kafka.apache.org/082/documentation.html
记录retention.ms属性的方式让我把毫秒与分钟混淆了! (详情请参阅此处:https://issues.apache.org/jira/browse/KAFKA-2751)因此,我的Kafka保留政策实际上设置为60毫秒而不是60分钟,并且数据在被Storm消耗之前就被Kafka消灭了。