Kafka的核心组件及相关知识总结!!!

目录

一、概述

二、核心组件

1. Broker

2. Producer、Consumer

3.消费者组

4.Topic

5.Partition

6.Segment

7.Offset

三、数据存储机制

1.Kafka写入流程

2.Kafka读取流程

3.Segment

四、清理设置

五、消费原理

六、负载均衡

1.概述

2.生产者负载均衡

3.消费者负载均衡

七、一次性语义

1.概述

2.生产者一次性语义

3.消费者一次性语义

八、分区副本

1.AR、ISR、OSR    R: replication

2.HW、LEO

总结


一、概述

1、Kafka是美国领英公司产品、底层是Scala语言
2、Kafka是基于分布式的流式处理框架,主要用于实时分析
3、Kafka是基于发布订阅模式的消息队列,有生产者 消费者 主题  队列等
4、Kafka的官网:kafka.apache.org

二、核心组件

1. Broker

1. 搭建Kafka集群的每台主机被称为Broker
2. Kafka是主从结构,分为主Broker和从Broker,前者是由ZK选举得到,被称为Controller.
3. 如果主Broker宕机,则重新选举,主Broker负责管理和对外读写数据,从Broker只负责对外读写数据.

2. Producer、Consumer

Producer负责向Kafka生产消息
Consumer负责从Kafka消费信息

3.消费者组

1. 任何一个消费者必须属于某一个消费组.
2. 同一个组的消费者只能消费同一个Topic中不同分区的数据,也就是同一个组的消费者不能消费相同的数据,不能出现'抢食'现象.
3. 同一个消费组,一个消费者可以消费多个分区的数据,尽量让分区等于消费者数,这样效率最高.
4.消费者组中多个消费者可以实现并发消费,也就是同时消费,提高读写数据的速度和效率.
5.整个消费者中所有消费者的数据加起来是一份完整的数据.

4.Topic

1. 为了对数据进行分类,不同类型的数据被称为不同的Topic(主题).
2. Kafka中的Topic类似于HDFS中的一个文件.

5.Partition

1. 每个Topic可以被分为多个分区.
2. Kafka中的分区类似于HDFS中的一个Block块.
3. 每个分区都有多个副本.
4. Kafka的分区副本有主副本(Leader)和从副本(Follower),主副本负责对外读写数据,从副本负责和主副本保持数据同步.

6.Segment

1、为了更新的管理数据,Kafka每个分区的数据被切分成一个个Segment文件,一般一个Segment文件最大是一个G
2、为了更方便查询每一个Segment文件内容,Kafka会生成对应的索引文件
3、每个Segment对应两种【三个】文件
  xxxxxxxxx.log:  存储数据
  xxxxxxxxx.index  根据数据查找索引
  xxxxxxxx.timeindex:根据时间查找索引

7.Offset

1、Offset是每条数据在自己分区中的偏移量,也可以理解为每条数据的编号,从0开始
2、Offset是每个分区独立关系,比如每个分区都有offset为0的数据,分区之间的offset彼此独立
3、比如一个分区的数据上次被消费到offset=2的位置,下一次从offset+1=3的位置开始消费
4、如果没有offset,就有可能出现重复消费或遗漏消费的情况   

三、数据存储机制

1.Kafka写入流程

1. 生产者生产消息时,先去ZK获取对应分区Leader所在的主机位置.
2. 获得Leader所在位置之后,将消息发送给Leader副本所在主机.
3. Leader主机先将消息写入缓存,然后再写入Segment中的log文件.
4.  Leader主机写入成功之后,给生产者发送一个ACK应答
5. 每个Follower副本主机从Leader主机拉取数据写入自己的Segment文件.  

2.Kafka读取流程

1. 消费者从ZK获取分区Leader主机位置,从__consumer_offsets主题当前分区的offset信息.
2.消费者从Leader主机拉取数据.
3. Leader主机从Segment日志文件读取数据给消费者.
4. 消费者提交offset到__consum

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值