栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Kafka为什么要抛弃ZooKeeper?

Kafka为什么要抛弃ZooKeeper?

首先我们需要明白zookeeper在kafka中作用
1、提供元数据的管理(如一些 Broker 的信息、主题数据、分区数据等等。)
2、Broker注册、Consumer注册。
3、分区中leader副本的选举。
4、生产者和消费者的负载均衡。
5、维护消费组和消费者之间关系及每个partition的消费信息。
抛弃ZooKeeper理由

1:维护成本更高

Kafka作为中间件,强依赖于另一个中间件,搭建kafk集群,需要先搭建zookeeper集群。
增加运维难度。

2、CP,强一致性

如果 ZooKeeper 集群的某个节点的数据发生变更,则会通知其它 ZooKeeper 节点同时执行更新,就得等着大家(超过半数)都写完了才行,这写入的性能就比较差了。
一般而言,ZooKeeper 只适用于存储一些简单的配置或者是集群的元数据,不是真正意义上的存储系统。
如果写入的数据量过大,ZooKeeper 的性能和稳定性就会下降,可能导致 Watch 的延时或丢失。
还有,ZooKeeper 也是分布式的,也需要选举,它的选举也不快,而且发生选举的那段时候是不提供服务的!
真实实例:
0.8之前版本的kafka的offset的值,都由zookeeper管理,当topic数量过多时,提交位移或者获取位移的时候都需要访问 ZooKeeper ,这量一大 ZooKeeper 就顶不住。
所在在0.9之后的版本引入可位移主题(__consumer_offsets),将位移的提交和获取当做消息一样来处理,存储在日志中,避免了频繁访问 ZooKeeper 性能差的问题。
移除zookeeper的kafka是如何的。
1、元数据的保存(利用log存储机制来保存元数据)
2、利用KRaft来实现选举

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号