Kafka基本概念

        此篇文章不做过多用法上的指导,将从kafka的逻辑层面、物理层面的组成部分进行剖析。以下是此篇文章论述的思维导图。

逻辑

生产者

           生产者也就是生成消息。它会通过主线程进行消息的产生,加入到双端队列中;通过Sender线程进行消息的真实发送。

主线程

        经过拦截器、序列化器、分区器加入到每个分区对应的双端队列中(每个分区对应多个队列由一个个RecordBatch组成,RecordBatch由一条条消,队列息组成)

Sender线程

  1. 从双端队列的头部获取ProducerBatch
  2. 封装为<Node,List<ProducerBatch>>,最后转化为<Node,Request>
  3. 发送给Producer之前会缓存<NodeId,Deque<Request>>,其实是为了保存未响应的请求

Broker

        逻辑层面broker就是存储分区的副本数据。

消费者

消费方式

点对点:消费者组只有一个消费者

订阅:消费者组多个消费者

位移

        位移保存:位移会被保存在kafka中的_consumer_offsets的topic中

        位移提交:分为自动提交和手动提交,自动提交可能会造成重复消费或者消息丢失问题。

物理

Broker机器

存储消息的机器

事务/再均衡协调器

  1.  kafka会通过groupId(如果事务的话就通过事务id)对consumer_offsets分区数进行取余。
  2. 通过该值确定具体的分区。
  3. 找到分区的Leader副本所在的机器,该broker机器就是协调器

Kafka的控制器

        通过zk会选举出Kafka的控制器,控制器负责集群的管理。比如:副本故障重新选Leader副本;分区的ISR变化,通知集群内机器;分区重分配等

Zookeeper集群

  • 通过zk集群选举出唯一的控制器(临时节点)。
  • 还会创建一个控制器纪元的节点(持久化节点),该值维护控制器的选举纪元。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直奔跑的小犀牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值