gpt4 book ai didi

cassandra - Cassandra 在丢弃突变时返回给客户什么?

转载 作者:行者123 更新时间:2023-12-05 03:00:59 31 4
gpt4 key购买 nike

当Cassandra端有“掉落的突变”时,它是否向调用客户端返回相应的失败?或者即使在服务器端丢弃相应的突变并导致数据丢失,它总是成功响应调用事务的调用客户端?

在一个特定实例中,当我们的 TPS 约为 80K/秒并且延迟增加了 4000+ ms 时,我们观察到大量丢弃突变(每秒约 6k 丢弃突变)。集群是6节点集群。现在不要跟我一起配置 node/cassandra yaml。一般来说,如何解决这个“掉落的突变”。奇怪的是,即使在稍后的时间点,我们也无法重现此行为。

最佳答案

写入时,如果有足够多的副本在 write_request_timeout_in_ms(默认为 2 秒)内响应,您将在客户端看到成功的响应。

因此请考虑您正在以复制因子 3 的一致性写入 QUORUM 的情况。当写入从客户端发送到协调器时,协调器向所有三个副本发送写入请求同时。如果 2 个副本能够在 write_request_timeout_in_ms 内响应,则协调器会将成功的响应发送回客户端。同时,如果第三个副本无法在 write_request_timeout_in_ms 内开始处理写入突变,它将丢弃该突变。

在这种情况下,客户端看不到突变被丢弃的事实,但从客户端的角度来看这没关系!您所要求的只是一个法定数量的节点来确认写入。

然而,从运营的角度来看,这是一个值得关注的问题。您的副本甚至无法开始处理突变,直到超时结束,这可不好!

这有多种可能的原因,垃圾收集抖动、硬件问题,或者您的集群可能只是配置不足。监测丢失的突变以识别这些情况是了解正在发生的事情的良好步骤。

如果您担心副本之间的一致性问题,cassandra 采用多种反熵机制来达到一致状态。如果在读取数据时发现不一致,读取修复将通过应用具有最高时间戳的单元格使副本在这些节点上进入一致状态。即使所需副本之间的数据确实匹配,仍然可以根据表配置的读修复机会触发读修复,以确保所有副本之间的数据一致。您还应该运行 scheduled repairs

最后请注意,如果没有足够的副本响应以满足您的一致性级别,您将看到 WriteTimeoutException 出现在客户端。这可能意味着您的副本正在删除突变,但情况不一定如此。他们本可以开始处理突变,但没有在超时内完成处理。在这种情况下,写入将应用于这些副本。

关于cassandra - Cassandra 在丢弃突变时返回给客户什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404635/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com