Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”。
Kafka简介
Kafka是一种分布式的,基于发布/订阅的消息系统,主要有如下设计目标:
- 以常数时间提供消息持久化能力
- 高吞吐率
- 支持分区,分布式消费,同时保证分区内消息顺序传输
- 同时支持离线和在线数据处理
- 支持在线水平扩展
引入消息队列的作用
- 异步,消息队列提供异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。
- 解耦,消息队列在处理过程中充当系统间交互的接口层,解耦也带来了扩展性的提升
- 削峰填谷
- 可恢复性
- 顺序保证,保证分区内消息的有序性
Kafka架构
- Broker Kafka集群中的机器被称为broker
- Topic 管理消息的类别
- Partition 分区,每个Topic包含1个或多个分区
- Producer 生产者
- Consumer 消费者
- Consumer Group 每个Consumer属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)
- Leader&Follower Topic中的每一个日志分区都一定会有一个Broker担任该分区的Leader,其他Broker担当该分区的follower