【问题标题】:Cassandra datastax consistency level issueCassandra datastax 一致性级别问题
【发布时间】:2018-07-26 20:00:08
【问题描述】:

我正在为我的应用程序创建一个 cassandra 会话对象并为其创建一些准备好的语句。在每个准备好的语句上设置不同的一致性级别。

statement1 = session.prepare("SELECT key FROM foo WHERE key = ?");
statement1.setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM);

statement2 = session.prepare("SELECT key FROM foo WHERE key = ?");
statement2.setConsistencyLevel(ConsistencyLevel.QUORUM);

我们之前只有 statement1,cassandra 读取延迟小于 10 毫秒。 当我们添加 statement2 并从代码的一部分开始使用它时,每个 cassandra 调用的延迟增加到 250 毫秒。

这是 datastax 中的错误吗?有没有可能

statement2.setConsistencyLevel(ConsistencyLevel.QUORUM);

是否将整个会话的一致性级别设置为 ConsistencyLevel.QUORUM

我错过了什么傻事吗?

我正在使用 cassandra-driver-core-3.1.3.jar

【问题讨论】:

  • 了解您的担忧。您可以使用最新的 cassadra 驱动程序快速测试它吗?如果问题仍然存在,您可以在 cassandra 驱动项目中提出一个 jira。
  • 我只是查看API文档,setConsistencyLevel也返回statement对象,你能不能换成statement1 = session.prepare("SELECT key FROM foo WHERE key = ?").setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM)
  • QUORUM 需要整个集群的 Quorum,而 LOCAL_QUORUM 只需要本地数据中心的 quorum。如果您有一个多数据中心集群,这将涉及更多副本,并且需要跨数据中心进行通信。如果您的 DC 位于不同的地方(即美国和欧盟),您的延迟会相当高......
  • @AndyTolbert 明白你的意思,但问题是,如果有的话,为one 查询设置一致性级别可能会更新同一会话的all 查询的一致性级别。
  • 您确定您的所有查询都不使用 statement2 吗?在一个语句上设置 CL 不应影响另一个语句,这不是我所知道的驱动程序中的错误。

标签: java cassandra datastax-java-driver


【解决方案1】:

解决办法:

statement1 = session.prepare("SELECT key FROM foo WHERE key = ?");
statement2 = session.prepare("SELECT key FROM foo WHERE key = ?");

这两个准备好的语句完全相同,表示查询字符串相同:“SELECT key FROM foo WHERE key = ?

cassandra datastax 驱动器已进行优化。因此,当您创建第二条语句时,datastax 驱动程序会返回您第一条语句的引用。因此,

statement2.setConsistencyLevel(ConsistencyLevel.QUORUM);

最终在第一条语句上设置一致性级别。

解决这个问题的方法是在绑定语句而不是准备语句上设置一致性级别。

例如:

statement1 = session.prepare("SELECT key FROM foo WHERE key = ?");
BoundStatement boundStatement = new BoundStatement(statement1); 
boundStatement.setConsistencyLevel(ConsistencyLevel.QUORUM);

【讨论】:

    猜你喜欢
    • 2017-01-09
    • 2016-07-05
    • 2016-04-06
    • 2018-06-13
    • 2016-04-30
    • 2014-10-13
    • 2017-02-23
    • 2021-05-07
    • 2015-02-27
    相关资源
    最近更新 更多