cassandra 如何对多区域设置中的区域故障做出反应

How does cassandra reacts to a region failure in Multi-Region setup

我正在尝试了解多区域设置中的 cassandra。 假设我在 3 个 AWS 区域(A、B 和 C)中分别设置了一个 Cassandra 集群,如果某个区域出现故障(区域 C)。 整个地区的中断如何影响 Cassandra 查询。

  1. 如果我的读取和写入配置为 CL = LOCAL_QUORUM 中断会影响区域 A 和 B 中的事务。
  2. 如果读写都在 CL = EACH_QUORUM,区域 A 和 B 中 reads/writes 会失败吗?
  3. 如果区域 C 正在进行计划维护怎么办?

我建议您查看涵盖 Cassandra 工作原理的 DSE Architecture Guide。您需要记住几件事,例如,所有写入都发送到所有 DC 中的所有副本,与一致性级别无关,并且当节点短时间(默认情况下小于 3 小时)停机时,其他节点将收集 -称为提示,将在节点返回时重播更改。

中断的影响将取决于您使用的一致性级别,因此回答您的问题:

  1. 不,它不应该影响 DC A 和 B,直到你将 read_repair_chancedclocal_repair_chance 设置为非零 - 在以后的情况下你可能会点击 CASSANDRA-9753,那可能导致向远程 DC 发送请求;
  2. 是的,读写将失败 EACH_QUORUM。但是你可以使用 QUORUM 与 3 个 DC(当然取决于每个 DC 中的 RF),并允许一个完全下降;
  3. 关闭整个区域和失败是一样的,但是如果你一台一台地做,那么它可能会成功。