Kafka
一.概述
1.定义
- Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue)
- Kafka是一个开源的分布式事件流平台
2.消息队列
- 应用:
- 同步处理
- 异步处理
- 优点:
- 解耦
- 可恢复性
- 缓冲
- 峰值处理
- 异步通信
- 消息队列两种模式:
- 点对点模式
- 消费者主动拉取数据,并在收到后清除。故一个消息仅能被消费一次
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GCBcKJsf-1625981231681)(C:\Users\Jzs\AppData\Roaming\Typora\typora-user-images\image-20210706194226978.png)]
- 发布/订阅模式
- 消息生产者将消息发布到topic中,消费者订阅消费该消息。
- 发布到topic的消息会被所有消费者订阅消费。消费后不清除消息。
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FI0f8Ed-1625981231682)(C:\Users\Jzs\AppData\Roaming\Typora\typora-user-images\image-20210706194403990.png)]
- 点对点模式
3.Kafka基础架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKk4nr3G-1625981231683)(C:\Users\Jzs\AppData\Roaming\Typora\typora-user-images\image-20210706194926673.png)]
-
Producer
生产者,向kafka broker中发送消息的客户端
-
Consumer
消费者,向kafka broker中拉取消息的客户端
-
Consumer Group(CG)
-
消费者组,由多个Consumer组成。
-
消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;(防止出现数据重复)
-
消费者组之间互不影响、所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
-
-
Broker
一台kafka服务器就是一个broker。一个kafka集群由多个broker组成,一个broker可以容纳多个topic
-
Topic
可以理解为一个队列,成产者和消费者面向的都是一个topic
-
Partition
一个topic可以分布到多个broker上,即一个topic可以分为多个Partition,每个Partition是一个有序的队列
-
Replica
副本,为保证不发展单点故障问题,kafka提供了副本机制,可以设置每个topic的每个分区有若干的副本。副本由一个leader和多个follower
-
leader
副本的"主",生产者和消费者处理的对象都是leader
-
follower
副本中的"从",实时同步leader。在leader故障时,保障数据安全,从多个follower中选择一个成为新年的leader
-