Apache Cassandra 以及 ALLOW FILTERING

主要观点:

  • 一位 Cassandra 工程师学徒在操作集群获取数据时,起初收到奇怪响应,通过破解 CQL 最终获得所需数据,但随后被 senior engineer 斥责不应使用 ALLOW FILTERING,因这导致了数据中心爆炸。
  • 讲述了 NEVER 使用 ALLOW FILTERING 的原因及一个可在生产中使用 ALLOW FILTERING 的特殊情况,即与仅针对一个分区的查询一起使用,并通过实际测试来测量其性能。
  • 详细介绍了在 AWS 中搭建三节点 Cassandra 集群,创建模拟用户分类的表,比较了带有和不带有 ALLOW FILTERING 的查询性能,包括在不同一致性级别下的测试结果。

关键信息:

  • 数据中心因 ALLOW FILTERING 导致爆炸,新年前夜 2017 年,图片展示了爆炸场景。
  • 可在生产中使用 ALLOW FILTERING 的情况是与仅针对一个分区的查询一起使用。
  • 在 AWS 中创建的表结构及模拟用户分类方式。
  • 测试了带有和不带有 ALLOW FILTERING 的查询在不同一致性级别下的性能,包括查询返回的行数、批次、耗时等。
  • 实际性能测试中,在 QUORUM 一致性下,带有 ALLOW FILTERING 的查询性能稍好于获取整个分区的查询,在一致性级别 ONE 下也有类似结果。

重要细节:

  • 开发并开源了 Ranger(数据生成器)和 Berserker(负载生成器)工具,用于生成有意义的测试数据。
  • 测试中使用的工具包括 Ranger、Berserker 和 cassandra-stress 等。
  • 详细展示了测试过程中的各种配置、查询结果及性能指标,如响应时间的直方图等。
  • 提到在测试中设置了 dc_local_read_repair_chance 为 0.0 并解释了其原因。
阅读 5
0 条评论