【发布时间】:2021-05-22 17:06:55
【问题描述】:
我正在运行 OS Cassandra 3.11.9 和 Datastax Java 驱动程序 3.8.0。我有一个 Cassandra 键空间,它有多个用作查找表/搜索索引的表。每当我收到对端点的新 POST 请求时,我都会解析对象并将其插入相应的 Cassandra 表中。我还将插入插入到每个相应的查找表中。 (每个对象 10-20 个)
当向系统摄取大量数据时,我一直在驱动程序中遇到 WriteTimeoutExceptions。
我尝试通过引入 Apache Camel 并将所有语句放入 Session 可以处理的队列中,将插入请求序列化到查找表中,但这没有帮助。 使用 Camel,由于异常现在发生在 Camel 线程中,因此测试继续运行,而不是在第一个异常上失败。最终,测试似乎让 Cassandra 崩溃了。 (但 Cassandra 日志中没有任何内容)
我还尝试关闭查找表,而是将每个对象插入主表 15 次(以模拟类似数量的写入,就好像我打开了查找表一样)。这次测试无一例外地通过了,这让我觉得表的数量很大。
大量 (2k+) 的 Cassandra 表是否是代码异味?我们应该重新架构还是只投入更多资源?日志中没有显示任何指示性内容,主要是关于表格数量等的一些状态 - 没有例外)
Datastax Java 驱动程序可以像这样多线程使用吗?它说它是线程安全的。
【问题讨论】:
标签: cassandra datastax-java-driver