1. Kafka定义
- 传统定义:kafka是一个分布式的基于发布/订阅模式的消息队列
- 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息
- 最新定义:kafka是一个开源的分布式事件流平台,被多家公司用于高性能、流分析、数据集成和关键任务应用
2. 传统消息队列应用场景
-
缓存/消峰
有助于控制和优化数据流经系统的速度,解决生产者和消费者处理速度不一致的情况
-
解耦
允许独立的扩展和修改两边的处理过程,只要确保它们遵守同样的接口约束 -
异步通信
允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候去处理它
3. 消息队列的两种模式
-
点对点模式
消费者主动拉取数据,消息收到后清除消息 -
发布/订阅模式
(1)可以有多个topic主题
(2)消费者消费数据后,不删除数据
(3)每个消费者相互独立,都可以消费到数据
4. kafka名词说明
- producer: 消息生产者
- consumer: 消息消费者
- consumer group: 消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内的一个消费者消费;但消费者组中的一个消费者可以消费多个分区;消费者组之间互不影响。
- Broker: 一台kafka服务器就是一个broker,一个集群由多个broker组成。
- topic:可以理解为一个队列,生产者和消费者面向的都是同一个topic
- partition(分区): 为实现扩展性,一个非常大的topic可以分布到多个broker(服务器)上,一个topic可以分为多个分区(partition),每个分区是一个有序的队列
- replica(副本):一个topic的每个分区都有若干个副本,即一个leader和若干个follower
- leader:每个分区多个副本的"主",生产者发送数据和消费者消费数据的对象都是leader
- follower:每个分区多个副本的"从",实时从leader中同步数据。保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader