对于 cockroachdb,是否有更好的 reads/writes 解释?

Is there a better explanation of reads/writes for cockroachdb?

背景:我有多年的Oracle经验。大约 3 年前,与 Cassandra/DSE 一起开始了分布式路径。我非常了解 Cassandra。在过去的一个月里,我多次听到 cockroachdb 被提及。所以现在,由于我熟悉 cassandra,所以我被抛出这个曲线球来查看。 cockroachdb 在其编写方式上听起来很像 cassandra - 客户端 CL 为 QUORUM(我不相信 cockroachdb 使用不可变文件,但更像是具有物理行(kv 对)的 RDBMS)。话虽这么说,我也非常了解 Cassandra 如何读取数据 - 但在 cockroachdb 的读取机制上没有任何真正好的 documentation/videos/discussions。

让我们假设这种情况:

3 个节点 - a、b 和 c
RF=3
leader(节点'a')收到写请求
写入 2 个节点('a' 和 'b' - 节点 'c' 已关闭)
领导确认写入
leader 关闭(节点 'a' 关闭),而节点 'c' 重新启动
领导者成为节点 'c'
read 用于先前写入的数据,高于

C没有找零,给客户端显示的是什么?它也做法定人数吗?如果是这样,它是否 "fix" 读取期间的数据?等等。在某些时候,"fixes" 数据。在 cassandra 中,更改会在删除前存储 3 小时(然后修复必须 运行)。蟑螂数据库呢? "lost changes" 如何发送到不可用的节点。

我认为这些级别的讨论没有得到很好的记录,或者至少对我来说没有。

-吉姆

您没有明确定义事情发生的时间,从而混淆了您的问题陈述——不清楚 A 是在 C 成为新领导者之前还是之后去世。

这很重要的原因是当节点 C 恢复时,它将无法参与领导者选举,除非它 "catches ups" 使用 raft 日志,到目前为止已提交的历史记录。在 C 拥有 A 和 B 拥有的所有数据之前,它不会成为新的领导者。

如果节点 A 在 C 赶上之前死亡,将不再有任何领导者,范围将变得不可用(read/writes 将停止)。

这说明了吗?