[用户在YugabyteDB社区板上发布的问题]
我想研究一下时钟同步的准确性如何影响YugabyteDB的性能。你通常是如何在内部测试这些东西的?
发布于 2022-04-07 10:43:26
为了回答您的问题,我们使用Jepsen测试来验证正确性,这会引入时钟偏差问题(作为它引入的更多故障集的一部分)。这份报告很古老,但它解释了要点:https://blog.yugabyte.com/yugabyte-db-1-2-passes-jepsen-testing/ (参见“容忍时钟倾斜的边界推送”)
YugabyteDB使用单调和HLC的组合,以确保它对时钟倾斜具有更强的弹性。注意,-max_clock_skew_usec配置标志控制集群中任意两个节点之间允许的最大时钟偏差,默认值为50 of。凯尔在他的报告中提到了这一点(在这些引语中强调的是我的):YugabyteDB使用Raft,这确保了通过Raft日志的所有(写)操作的线性化。出于性能方面的原因,YugabyteDB会立即从任何木筏领袖处读取返回本地状态的信息,使用领袖租约来确保安全。使用CLOCK_MONOTONIC进行租赁(而不是使用CLOCK_REALTIME)可以使YugabyteDB免受某些类时钟错误的影响,例如闰秒。在碎片之间,YugabyteDB使用一种复杂的方案,涉及混合逻辑时钟(HLCs)。Yugabyte将这些时钟耦合到筏子日志上,编写HLC时间戳来记录条目,并使用这些时间戳来推动新领导人的HLC。这种技术消除了几个地方,不同步的时钟可能允许一致性冲突。
https://stackoverflow.com/questions/71780683
复制相似问题