zookeeper 只有一个leader节点负责写会不会压力大?

发布于 2022-09-12 03:45:55 字数 141 浏览 20 评论 0

  1. zookeeper 只有leader节点负责写, 会不会压力大?
  2. 读的时候怎么读, 是每个follower节点都可以负责读吗? 怎么保证读的数据是最新提交的? 万一某个follower节点不是最新的数据, 而被读取了怎么办?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还给你自由 2022-09-19 03:45:55

首先绝大部分业务,读要比写的操作多,而且相差的不是一点半点而是几个数量级。

说白了就是新增、修改、删除的次数要远远比查询的次数少,所以负责写的节点的压力一定是比负责读的节点压力小。

其次 ZK 其实并不是 Leader 负责写,而是由 Leader 负责通知其他 Follower 写。每个 Follower 也是可以接收写请求的,只不过自己先不执行写,而是要转发给 Leader,等 Leader 通知它写了、才开始写。这一点跟其他一些读写分离方案不太一样,比如 MySql 读写分离的只读节点压根就不接受写请求。

最后,ZK 写时有半数 ACK 机制,外加 ZAB 协议来确保写入时强一致的,就读取而言确实可能读到非最新数据,但其本身是单调读的,再加上提供了 Watch 功能,所以可以确保最终一致

所以你问怎么办?Watch 后再读一遍呗。

P.S. CAP 这玩意儿一般来说都是保 AP,C 的话选最终一致,有的甚至就没 C 了;CP 的话也有。但既要 AP 还要强一致的,就没有了。

P.S.P.S. ZK 当初有一些设计最后被证明不太合理,但出于兼容性等历史包袱的考虑,也只能这么着了。可以考虑用用后起之秀 etcd。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文