Cassandra连接的健康检查(使用hector)?

Han*_*ari 12 cassandra hector

对于我的应用程序的操作监视,我正在寻找类似于常用的"SQL连接验证"查询

选择1;

在Cassandra,使用Hector驱动程序.我尝试过像Cluster.getKnownPoolHosts()和.getConnectionManager().getActivePools()这样的事情.但是,只有当我真正尝试使用查询访问Cassandra时,它们的状态似乎才会不断更新.

我希望我的运行状况检查独立于任何需要存在的键空间或用户CF,因此只运行"虚拟"查询似乎很困难(针对什么?).当然,它不应占用大量内存或产生任何重大负载.

我可以以某种方式强制Hector更新其连接池状态而不运行真正的查询吗?

(顺便说一句:CQL甚至不接受"SELECT 1"作为有效查询.)

Eem*_*ola 14

使用CQL3,我使用以下查询:

SELECT now() FROM system.local;
Run Code Online (Sandbox Code Playgroud)

如果用户由于某种原因无法访问system键空间或local列族,那么摆脱FROM子句altogther以使其成为通用的将是很好的.但与其他答案一样,至少这不应该给出误报.

  • 该查询返回一个时间戳,我无法将其转换为任何 Java 类型。对我有用并返回字符串的替代查询是“SELECT release_version FROM system.local;” (2认同)

Han*_*ari 4

我当前使用的解决方案似乎是迄今为止最强大的解决方案(使用 Cassandra 1.1 和 1.2 进行测试)是对“system”的简单查询:

Query<String> query = Query.selectQuery("*", "system", null, 1, consistencyLevel, StringSerializer.get());

这并不完全是我想要的,因为它是一个“真实”查询,但另一方面它不会给出任何误报。