tdhso Asked: 2024-03-27 03:25:39 +0800 CST2024-03-27 03:25:39 +0800 CST 2024-03-27 03:25:39 +0800 CST Cassandra 写入传播到远程 DC 772 当对 Cassandra 的写入使用 LOCAL_QUORUM 时,原始 DC 上的协调器节点是否是远程 DC 的唯一传播器,或者如果协调器或其连接发生问题,其他节点/DC 是否可以共享该角色? cassandra 1 个回答 Voted Best Answer Mário Tavares 2024-03-27T04:38:41+08:002024-03-27T04:38:41+08:00 当写入查询提交到 Cassandra 时,无论其一致性级别如何,接收请求的本地协调器都会在其他每个数据中心中选择一个远程协调器来转发写入。因此,每个数据中心在从原始协调器接收到突变后将独立处理突变的复制。 如果本地协调器在将请求转发到其他数据中心之前变得不可用,Cassandra 没有替换它的机制,并且此类故障通常由驱动程序通过查询重试来处理。如果 DC 间写入由于连接问题而失败,则失败的突变将以提示的形式存储在协调器中,以便在连接问题解决后重放。 我还没有专门针对多个数据中心进行测试,但我认为这可能不正确的唯一奇怪的情况是使用记录的批次时。当使用记录的批处理时,2 个非协调器副本会存储批处理日志的副本,以便在协调器发生故障时重播。在某些方面,这些副本充当故障转移协调器,我相信它们将批处理日志重播到不同数据中心的副本,但尚未对其进行测试。 不管怎样,我想明确一点:这并不是使用记录批次的充分理由。协调器的开销可能会成为一个严重的问题,特别是在更新插入到多个分区时。
当写入查询提交到 Cassandra 时,无论其一致性级别如何,接收请求的本地协调器都会在其他每个数据中心中选择一个远程协调器来转发写入。因此,每个数据中心在从原始协调器接收到突变后将独立处理突变的复制。
如果本地协调器在将请求转发到其他数据中心之前变得不可用,Cassandra 没有替换它的机制,并且此类故障通常由驱动程序通过查询重试来处理。如果 DC 间写入由于连接问题而失败,则失败的突变将以提示的形式存储在协调器中,以便在连接问题解决后重放。
我还没有专门针对多个数据中心进行测试,但我认为这可能不正确的唯一奇怪的情况是使用记录的批次时。当使用记录的批处理时,2 个非协调器副本会存储批处理日志的副本,以便在协调器发生故障时重播。在某些方面,这些副本充当故障转移协调器,我相信它们将批处理日志重播到不同数据中心的副本,但尚未对其进行测试。
不管怎样,我想明确一点:这并不是使用记录批次的充分理由。协调器的开销可能会成为一个严重的问题,特别是在更新插入到多个分区时。