【问题标题】:How to speeden up schema agreement in Cassandra?如何加快 Cassandra 中的模式协议?
【发布时间】:2016-12-17 11:44:22
【问题描述】:

我有一个开箱即用配置的 3 节点 2.x Cassandra 集群。我的 java 程序使用 datastax 驱动程序 (2.19) 通过一次执行一个 CQL/DDL 语句来创建模式。我发现很多时候模式更改需要数十秒才能使多个语句的模式一致。需要很长时间的语句几乎是随机的。

我正在寻找有关如何提高模式协议速度的提示。

注意:- 当我使用 cqlsh 创建架构时,速度非常快。

2016 年 8 月 12 日更新

我添加了以下代码来执行一条语句,然后等待模式协议,以便我可以更深入地了解等待的时间。

private void executeStatement(String statement, PrintStream out) throws DBInstallerException {
    int retries = 0;
    final ResultSet resultSet = session.execute(statement);

    if (!resultSet.getExecutionInfo().isSchemaInAgreement()) {
        for (; retries < TOTAL_WAIT_FOR_SCHEMA_AGREEMENT_IN_SECONDS; retries++) {
            Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
            if (cluster.getMetadata().checkSchemaAgreement()) {
                break;
            }
        }
    }

    if (retries >= TOTAL_WAIT_FOR_SCHEMA_AGREEMENT_IN_SECONDS) {
        throw new DBInstallerException("Failed to get schema agreement after " + TOTAL_WAIT_FOR_SCHEMA_AGREEMENT_IN_SECONDS + " seconds");
    } else {
        if (retries > 0 ) {
            out.println("INFO : Got schema agreement after " + retries + " retries");
        }
    }
}

很多时候,我将“Got schema agreement after”输出打印到控制台,重试次数可能多达 300 次。这对我来说没有意义。在一个基本上空闲的系统上执行任何架构更改怎么可能需要这么长时间。

【问题讨论】:

    标签: cassandra datastax-java-driver cqlsh


    【解决方案1】:

    这可能不是您问题的直接答案,但它可能会导致使用 datastax 驱动程序与 cqlsh 相比速度变慢。驱动程序效率低下,当客户端在不应该进行架构更改时 (JAVA-1120) 将执行每个与架构相关的语句的返回时间延迟 1 秒,从而消除架构刷新的抖动。

    如果可以,升级到 java-driver 3.0.3+ 将为您解决此问题。

    否则,您可以像这样禁用架构刷新去抖动:

    Cluster.builder()
      .withQueryOptions(new QueryOptions().setRefreshSchemaIntervalMillis(0))
      //... more builder options
      .build()
    

    【讨论】:

    • 我尝试了这两个选项,但没有看到加速。请注意,在执行 DDL 后,我看到架构协议有时需要几分钟。在我修改架构时,并没有进行很多数据读写。磁盘的平均等待时间也很短,所以我没有得到可能需要这么长时间的东西。似乎应该是驱动程序问题,但我无法确定是什么。
    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2015-11-16
    • 2011-12-10
    • 2012-07-31
    • 2017-02-13
    • 2015-08-29
    • 2021-05-02
    相关资源
    最近更新 更多