Kafka学习笔记(一)

本文是Kafka学习笔记,介绍了Kafka消息队列内部实现原理,消费者获取数据有“pull”和“push”两种模式,说明了使用消息队列的好处。还阐述了Kafka架构特点,分析了生产过程的分区原则、写入流程及ACK应答机制,以及消费过程等内容。

 

Kafka学习笔记(一)

2019.07.11

1. Kafka消息队列内部实现原理

消费者可通过两种模式获取数据,一种是“pull”,主动拉取数据;一种是"push",将数据推送给所有订阅者。

第一种方式的缺点是需要实时监控数据有没有更新。

为什么需要消息队列?

  1. 解耦;
  2. 冗余;
  3. 扩展(集群的扩展性);
  4. 灵活性&峰值处理能力;
  5. 可恢复性;
  6. 顺序保证;
  7. 缓冲。

无论是Kafka集群,还是comsumer都依赖于zookeeper集群保存一下meta(例如当前consumer消费到的offset)信息。(producer不依赖zookeeper集群)

2. Kafka架构

1. 副本(follower)是不会对客户端请求进行响应的,只做备份(与zookeeper的leader、follower有所不同);

2. 同一个组的消费者不能消费同一个分区的数据;

3. Kafka缓存的数据是要落盘的;

4. Kafka副本数不能超过集群中节点数目;

5. 新版Kafka将offset信息维护在Kafka集群,而不用维护在zookeeper集群,这样可以提高效率。例如在启动console consumer时有一个参数是--bootstrap-server,在老版本里用的是--zookeeper-server,--bootstrap-server指定的是Kafka集群

3. Kafka生产过程分析

分区的原则:

副本:

producer写入流程:

上述写入流程ACK应答机制取得值是ALL,也就是leader和follower全部都写完再向producer发送ACK信息(ACK还可取值为0或1)。文字总结如下:

 

4. Broker保存消息

 

5. Kafka消费过程分析

 

 

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值