zookeeper

作者: 小王ovo | 来源:发表于2021-06-23 22:19 被阅读0次

这一点看的2020的课程

我会两年交叉着看

linearzable(线性一致性)

即对一个一致性系统进行一些读写操作的时候,所有的操作保证一个顺序执行,且不会读取到改操作时间范围外的数据。
这不是一个系统设计的定义,而是通过观察日志得到的一个结果。

一些词的理解

total order(理解为整个集群保证的一个全局的顺序)
real-time(全局统一的逻辑时间,一般类似的raft中term之类的东西)

在一个线性系统中我们不应该看到任何过时的数据,如果看到了是因为多副本的情况下有些副本得到了最新的数据,但是有些没有,所以在raft中一定是所有的follow都获得日志条目,leader才算一次commit从而防止这种现象。

为啥高效?

1.异步
2.非强一致性(暂时不确定)

状态复制

和raft有些差别。当node/2的follow日志复制成功,leader就算一次commit并响应client。

任何节点都可处理读请求,不一定非得是leader(允许follower读所以这里的问题是可能会读取旧数据)

zk中的日志index被称为zx id。

这里的理解就是请求需不需要带上zx id,如果带上的话,follower就不会立即返回,因为此时follower可能还没有这个版本的数据需要等leader同步完之后才能给client返回。如果不带zx id那就立即返回当前拥有的最新的数据。(整体来说是对读的一个优化,是对线性一致性的要求的放宽)。

这个总结比我好多了泪目

https://zhuanlan.zhihu.com/p/216255262

相关文章

网友评论

      本文标题:zookeeper

      本文链接:https://www.haomeiwen.com/subject/ypnmyltx.html