kafka和zk的基本交互关系

1,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。

2,Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。

3,leader 处理 partition 的所有读写请求,与此同时,follower会被动定期地去复制leader上的数据。

4,如果leader发生故障或挂掉,一个新leader被选举并接收客户端的消息。Kafka确保从同步副本列表中选举一个副本为 leader。
5,Topic 分区被放在不同的 Broker 中,保证 Producer 和 Consumer 错开访问 Broker,避免访问单个 Broker造成过度的IO压力,使得负载均衡。

kafka依赖于zookeeper

kafka很多说不需要安装zk的是因为他们都使用了kafka自带的zk,至于kafka为什么使用zk,你首先要知道zk的作用,作为去中心化的集群模式。需要要消费者知道现在那些生产者(对于消费者而言,kafka就是生产者)是可用的。

所以kafka需要zk,在kafka的设计中就依赖了zk了。需要一个地方存元信息。zookeeper又是分布式,做配置管理比较好的,于是就用上了。没zookeeper的话,也需要一套机制存储元数据和交换集群信息的工具。
    kafka的官方文档有说明。zookeeper是为了解决分布式一致性问题的工具。至于kafka为什么使用zk,你首先要知道zk的作用, 作为去中心化的集群模式。需要要消费者知道现在那些生产者(对于消费者而言,kafka就是生产者)是可用的。
    如果没了zk消费者如何知道,如果每次消费者在消费之前都去尝试连接生产者测试下是否连接成功,那么效率问题怎么解决。所以kafka需要zk,在kafka的设计中就依赖了zk了。

kafka中zk的作用

zk相当于是kafka的一个基础设施,了解zk在kafka中的作用,可以对kafka的原理有进一步的了解,现在就开始学习这块的内容,首先从controller看起,这是zk中一个重要的组成:Controller 作为 Kafka Server端一个重要的组件,它的角色类似于其他分布式系统Master的角色,跟其他系统不一样的是,Kafka集群的任何一台Broker都可以作为Controller,但是在一个集群中同时只会有一个 Controlle是alive状态。在于分布式系统中,总会有一个地方需要对全局 meta 做一个统一的维护,Kafka 的 Controller 就是充当这个角色的。Controller 是运行在Broker上的,任何一台Broker都可以作为Controller,但是一个集群同时只能存在一个Controller,也就意味着Controller与数据节点是在一起的,Controller做的主要事情如下:

  • Broker 的上线、下线处理;
  • 新创建的 topic 或已有 topic 的分区扩容,处理分区副本的分配、leader选举;
  • 管理所有副本的状态机和分区的状态机,处理状态机的变化事件;
  • topic删除、副本迁移、leader切换等处理。

kafka和ZK的关系相关推荐

  1. kafka与zk的关系(一)

    一个典型的kafka集群中包含若干个Producer,若干个broker(一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个zk集群,kafka通过zk管理集群配置 ...

  2. Kafka与zk的关系及连接参数bootstrap.server的正确理解

    1.我们知道旧版Kafka,用的是zookeeper地址而非bootstrap.servers, 那么新版 kafka 消费者.生产者配置为何使用 bootstrap-servers 而不是 zook ...

  3. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装

    一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...

  5. 大数据处理工具Kafka、Zk、Spark

    搭建kafka和zk集群环境 安装环境 MAC操作系统VMware Fusion虚拟机3个centos7服务器 安装虚拟机 飞机票 安装虚拟机Centos系统并安装Docker过程记录 安装包下载 h ...

  6. 10-10-020-简介-kafka的ZK上面的存储

    文章目录 1.视界 1. kafka在ZK上都存储了什么呢? 2. ZkCli.sh命令下如图 3. 节点表格 3.节点信息 3.1 kafka根节点信息 3.2 topic注册信息 3.3 part ...

  7. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十二)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。...

    Centos7出现异常:Failed to start LSB: Bring up/down networking. 按照<Kafka:ZK+Kafka+Spark Streaming集群环境搭 ...

  8. ZK实现SASL认证+Kafka连接ZK

    ZK实现SASL认证+Kafka连接ZK 关键词:zk sasl kfaka 未授权认证 参考文档: 搭建Kafka集群时, 对ZooKeeper认证与权限控制 http://ohmycat.me/2 ...

  9. 【Kafka】在Kafka和ZK“分手”之前,来看看Kafka在ZK中到底保存了什么

    在<深入理解Kafka:核心设计与实践原理>一书中,介绍了Kafka的整体架构: Kafka将broker.topic.config等元数据信息存放在zookeeper中(但是随着Kafk ...

  10. 【Kafka】ZK、Kafka以及EFAK的安装、配置

    一.Zookeeper 版本:apache-zookeeper-3.8.0 配置: zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/ro ...

最新文章

  1. 操作系统中进程并发运行的过程_三种电磁流量计运行过程中常见故障解决详情!...
  2. 天冷了,大家如果有往年的不穿的衣服别扔,寄给需要的人好吗?
  3. oracle: to_char,to_date
  4. 团队作业10——复审与事后分析(Beta版本)
  5. 安卓手机python数据可视化_python 数据可视化
  6. Sring类型数组赋值
  7. 泛型类、泛型方法及泛型应用
  8. c#随机数生成编号_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法...
  9. Spring 框架教程
  10. Windows10下python3.5的sklearn库安装
  11. 大学课程很少有教怎么设计单片机开发板,进阶板更不用说
  12. masm for windows2015 下载安装
  13. 关于Docker镜像再封装的详细文档
  14. resin服务器中间件
  15. prolog与python_讲解:SENG201、Software、Python,Java/c++Web|Prolog
  16. 在VS2005和2008的对话框里,添加了一个MSCOMM通信控件,怎么mscomm.h和mscomm.cpp没有自动出现?
  17. SAP 软件价格体系及项目费用构成
  18. 深入学习三个月向大厂发起冲击
  19. python提取文件_Python文件读取常用方法
  20. 对爬取51job中用到的技巧的分析、记录

热门文章

  1. Python 批量修改文件名称测试
  2. 毒液组学-多组学关联分析大全
  3. 微信开门,给你简单极致的开门体验!
  4. 坐标旋转次序 欧拉角定义 左乘 右乘
  5. 扫盲:Java 后端开发常用的 10 种第三方服务
  6. 坚果云服务器地址,坚果云第三方应用授权WebDAV开启方法
  7. npm 安装参数中的 --save-dev 是什么意思
  8. linux中zip文件能转换tar,linux 怎么把rar转换成zip 或者 tar
  9. 图像有损压缩与无损压缩_图像:有损与无损压缩
  10. 台式计算机主板接口识别,硬件丨当前台式机主板接口知识普及与主板结构全讲解...