【发布时间】:2018-05-08 14:57:57
【问题描述】:
我的目标是通过编写自定义 QueryHandler 实现来记录每个会话的唯一查询,因为在我们的案例中记录所有查询会导致性能下降。
考虑这种情况:如果用户使用 java 客户端连接到 cassandra 集群并执行“select * from users where id = ?” 100 次。 另一个用户从 cqlsh 连接并执行了 50 次相同的查询。所以在这种情况下我只想记录两个查询。为此,我每次登录都需要一个唯一的会话 ID。
Cassandra 提供了以下接口,所有请求都会在该接口中启动,但它的任何 api 都没有提供任何 sessionId 来区分上述情况中描述的两个不同会话。
org.apache.cassandra.cql3.QueryHandler
注意:我能够获取远程地址/端口,但我想要一些在用户登录时创建并在他断开连接时被销毁的 id。
【问题讨论】: