kafka-基础介绍
-
定义
传统定义: kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue), 主要用于大数据实时处理领域
最新定义: kafka是一个开源的分布式事件流平台(Event Streaming Platform), 被数千家公司用于高性能数据管道 流分析 数据集成和关键任务应用 -
发布/订阅
消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息 -
常用的消息队列
目前企业常用的消息队列 Kafka ActiveMQ RabbitMQ RocketMQ
在大数据场景主要使用kafka, 在JavaEE开发中主要使用ActiveMQ RabbitMQ RocketMQ -
传统消息队列的主要应用场景包括: 缓存/削峰 解耦和异步通信
-
消息对列的两种模式
点对点 : 由生产者将消息发送到消息队列,再由消费者主动获取数据,确认消息消费成功后队列删除该条消息
发布/订阅 : 可以有多个topic主题.生产者将不同的消息发送到多个主题,消费者消费数据后不删除数据,每个消费者互相独立,都可以消费到同一主题的数据,也可以消费到不同主题的数据
kafka的基础架构
- 生产者(producer) : 用来对接外部传进来的数据
- 消费者(consumer) : 用来消费kafka的数据
- 主题(Topic) : 存储各种数据的地方
- 数据分区(partition) :将topic中的数据分块存储
- 消费者组(group) : 将多个消费者放在同一个组内,用来消费同一个主题下的数据,组内每一个消费者分别对应一个数据分区
- 副本 : 若某个分区突然宕机导致数据异常或丢失,所以kafka可以给每个分区做副本备份,副本有leader和follower之分,消费者和生产者操作数据是只操作leader中的数据,当leader挂掉后,follower会成为新的leader提供数据
在kafka2.8.0之前会配合zookeeper使用,在2.8.0之后kafka逐渐抛弃zookeeper,变为可选使用