Kafka概述
文章目录

一:Kafka的定义
Kafka传统定义
Kafka是一个分布式的基于发布订阅模式的消息队列(Message Queue),主要应用于大数据实时处理的领域
发布/订阅:发送者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息
Kafka的最新定义
Kafka是一个开源的分布式事件流平台
(Event Streaming Platform),被数千家公司用于高性能的数据管道,流分析,数据集成和关键任务应用
二:消息队列
目前企业中比较常见的消息队列产品主要有 Kafka、ActiveMQ、RabbitMQ、RocketMQ等
在大数据场景主要采用 Kafka 作为消息队列。在 JavaEE 开发中主要采用 ActiveMQ、RabbitMQ、RocketMQ
1:传统消息队列的应用场景
1.1:缓冲、削峰
1.2:解耦
1.3:异步通信
2:消息队列的两种模式
2.1:点对点模式
2.2:发布订阅模式
三:Kafka架构
- 为了方便进行扩展,一个topic分成为多个partition分区
- 配合分区的设计,提出消费者的概念,每组内的每一个消费者进行并行消费
- 为了提高可用性,为每一个分区增加了若干个副本
- ZooKeeper中记录了谁输leader,Kafka2.8.0以后可以配置不采用ZK
1:生产者 producer
消息生产者,就是向Kafka broker发消息的客户端
2:消费者 consumer
消息消费者,向Kafka broker取消息的客户端
3:消费者组consumer group
消费者组,由多个consumer组成。
消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。
所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者
。
4:服务器broker
一台Kafka服务器就是一个broker。
一个集群由多个broker组成。一个broker可以容纳多个topic
5:主题Topic
可以理解为一个队列,生产者和消费者面向的都是一个topic。
6:分区Partition
为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上
一个topic可以分为多个partition,每个partition是一个有序的队列
。
一个topic的每个分区partition都有若干个副本replica,一个Leader和若干个Follower。
- Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是Leader
- Follower:每个分区多个副本中的“从”,实时从Leader中同步数据,保持和Leader数据的同步。Leader发生故障时,某个Follower会成为新的Leader。