凌云时刻 · 技术
导读:这一节我们来认识一下在Kafka中有着超然地位的Zookeeper。
作者 | 计缘
来源 | 凌云时刻(微信号:linuxpk)
Zookeeper 初识
ZooKeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper的目标就是封装好复杂、易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper有以下一些特点:
Zookeeper的内部数据结构是树状结构的。
每个节点称为zNode。
每个zNode都有一个唯一路径(path)。
zNode分长久存在的和临时存在的。
每个zNode都可以存储数据。
zNode不能重命名。
每个zNode的任何变化都可以被监控。
所以Zookeeper作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,Zookeeper作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理,可以说,Zookeeper相当于带有通知机制的文件系统。
Role of Zookeeper in Kafka
Zookeeper在Kafka中的地位是超然的。它的主要作用有以下几点:
Zookeeper管理着Kafka集群中的若干个Broker,保存着一份完整的Broker列表。
维护Topic信息,比如Partitions、Replication Factor、ISR等。
Zookeeper帮助选举Partition的Leader.
当有任何变动时,由Zookeeper给Kafka发送通知,比如添加一个新的Topic、Broker挂掉了、删除Topic等等。
Zookeeper集群中也有Leader和Follower的概念。Leader负责写数据,Follower负责读数据.
存储Kafka集群ID。
存储访问控制列表(ACL,Access Control List)。控制Topic、Consumer Group、User等访问权限。
Size of Zookeeper
Zookeeper对于Kafka有一个很重要的投票选举功能。所以通常情况下Zookeeper集群最少使用三个Server。如果增加更多Server,那最好是奇数个Server(3,5,7,9,2N+1)。因为Zookeeper有一个特性,就是集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个Zookeeper Server,那么只要有1个Zookeeper Server宕机,整个集群就不能用了,因为1没有过半,所以我们要搭建奇数个Server,这样就可以保证最大允许1,2,3,4,N个Server宕机,而保证整个系统不受影响。
小结
这一章节带大家初步认知了Zookeeper是什么,以及他在Kafka中为何具有超然的地位。和Kafka CLI一样,Zookeeper也有命令行工具,下一章节将会进行Zookeeper CLI的介绍,希望可以给小伙伴们带来帮助。
END
往期精彩文章回顾
Kafka CLI:Reseting Offset & Config CLI
Kafka CLI:Consumer CLI & Producer CLI
Kafka CLI:Topic CLI & Producer CLI
Kafka从上手到实践 - 实践真知:搭建单机Kafka
Kafka从上手到实践 - 庖丁解牛:Consumer
Kafka从上手到实践 - 庖丁解牛:Producer
Kafka从上手到实践 - 庖丁解牛:Partition
Kafka从上手到实践 - 庖丁解牛:Topic & Broker
Kafka从上手到实践 - 初步认知:MQ系统
长按扫描二维码关注凌云时刻
每日收获前沿技术与科技洞见