凌云时刻 · 技术

导读:这一节我们来认识一下在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从上手到实践:Kafka Java Consumer

Kafka从上手到实践:Kafka Java Producer

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系统

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

Kafka从上手到实践 - 初步认知:Zookeeper | 凌云时刻相关推荐

  1. Kafka+Storm+HDFS整合实践

    2019独角兽企业重金招聘Python工程师标准>>> 在基于Hadoop平台的很多应用场景中,我们需要对数据进行离线和实时分析,离线分析可以很容易地借助于Hive来实现统计分析,但 ...

  2. Kafka复习计划 - 客户端实践及原理(消费者组/位移/请求处理过程)

    Kafka复习计划 - 客户端实践及原理(消费者组/位移/请求处理过程) 前言 一. 消费组 1.1 Rebalance 重平衡 1.2 Coordinator 协调者 1.3 如何尽量避免消费者组重 ...

  3. 深入理解Kafka核心设计与实践原理_01

    深入理解Kafka核心设计与实践原理_01 01_初识Kafka 1.1 基本概念 1.2 安装与配置 1.3 生产与消费 1.4 服务端参数配置 01_初识Kafka 1.1 基本概念 一个典型的 ...

  4. 超详细 kafka 入门(最佳实践)

    今日推荐6年,终拿腾讯 offer! 都2021年了,你还在用Jenkins?赶快看看这些替代方案吧! 盘点 12 个 GitHub 上的高仿项目 CTO 说了,用错 @Autowired 和 @Re ...

  5. 《深入理解Kafka:核心设计与实践原理》笔误及改进记录

    2019年2月下旬笔者的有一本新书--<深入理解Kafka:核心设计与实践原理>上架,延续上一本<RabbitMQ实战指南>的惯例,本篇博文用来记录现在发现的一些笔误,一是给购 ...

  6. Apache Kafka 不需要管理员:删除 Apache ZooKeeper 的依赖

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 目前,Apache Kafka 使用 Apache ZooKeep ...

  7. 如何成为一名数据分析师:数据的初步认知

    作者 | 钟家福 杏仁医生数据工程师,关注数据分析与挖掘. 对所有从事数据相关工作的人而言,都有一个老生常谈的问题:数据认知!毕竟在真正开始分析.BI 报表开发或者建模前,对数据进行一定的审查和认知是 ...

  8. Python的初步认知与安装步骤 (小白必备)

    Python的初步认知与安装步骤 Python初步认知 安装步骤 基础代码测试(变量.数据类型) 运算符.条件结构.循环结构 思维导图 Python初步认知 Python简介 Python是一种跨平台 ...

  9. 类和对象(面向对象的初步认知)

    面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象.面向对象是解决问题的一种思想,主要依 ...

  10. 关于浏览器运行原理的初步认知

    在对浏览器运行原理的认知过程中我们首先需要精细的了解一些"概念" 这些"概念"也许理解起来很容易,但没有精细理解的时候很容易忽视 而在没有精细了解这些" ...

最新文章

  1. Mysql-study
  2. @Value@PropertySource@ConfigurationProperties注解使用
  3. jsp的jstl的foreach标签
  4. http --- 密码、密钥、对称(公开)密钥加密系统、数字签名、数字证书的一些概念
  5. 航天有关的计算机知识,这些关于神舟十二上的电脑硬核小知识,你知道吗?
  6. 442.数组中重复的数据
  7. 元宇宙游戏控制这几个因素,正确姿势解锁元宇宙游戏开发盈利痛点
  8. 大米云如何通过ssh连接云主机
  9. 耶耶!我进了全国网络管理员前50了
  10. android10 systemUI亮度调节分析
  11. 锤子使用手册 android,锤子爱好者的新手使用指南
  12. 水平凡 创建新的插件
  13. 龙芯IPC追平Zen2 稳步推进产业生态
  14. bp神经网络,多输入多输出,3层网络matlab程序
  15. 转:vue+canvas如何实现b站萌系登录界面
  16. 4K屏幕/高分辨率屏幕运行VMware虚拟机图标字体太小问题解决方案(linux系统)
  17. windows和Linux未来,一家之言:Windows系统的未来就是变成Linux的一部分
  18. Hbase2.3.5安装
  19. dede判断手机访问电脑端网站跳转代码
  20. java 行为树_行为树(Behavior Tree)【转载】

热门文章

  1. textarea 在 Chrome Safari FireFox 浏览器中禁用拖动和固定大小
  2. 关于DHCP的中继问题
  3. Logistic回归模型(C++代码实现)
  4. ActiveX控件dsoFramer的使用(word、excel、PPT)
  5. 微信公众号在调用扫一扫功能时,一维码(条形码)在直接返回结果时会在结果前带上EAN_8, EAN_13, CODE_25, CODE_39, CODE_128, UPC_A, UPC_E...
  6. 20165234 《Java程序设计》第八周学习总结
  7. 用Python爬虫爬取“女神吧”上的照片。
  8. View绘制详解(四),谝一谝layout过程
  9. canvas绘制圆和弧(三)
  10. 【Vegas原创】Oracle批量create、Lock user的方法