1. 简介2. 消息队列2.0 为什么需要消息队列 (MQ)2.1 传统消息队列的应用场景2.1.1 缓存/消峰2.1.2 解耦2.1.3 异步通信3. 消息队列两种模式3.1 点对点模式3.2 发布订阅
1. 简介
Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。
Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
2. 消息队列
目前企业中比较常见的消息队列产品主要有Kafka、ActiveMQ、RabbitMQ、RocketMQ等。
2.0 为什么需要消息队列 (MQ)
主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多, 从而触发 too many connection 错误, 引发雪崩效应。我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景当前比较常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka 等。
2.1 传统消息队列的应用场景
传统的消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信。
2.1.1 缓存/消峰
2.1.2 解耦
2.1.3 异步通信
3. 消息队列两种模式
3.1 点对点模式
- 一个生产者 ,一个消费者,一个topic 会删除数据
- 消费者主动拉取数据,消息收到后清除消息
3.2 发布订阅
- 多个生产者 消费者多个 相互对立 多个topic 不会删除数据
- 可以有多个topic主题(浏览、点赞、收藏、评论等)
- 消费者消费数据之后,不删除数据
- 每个消费者相互独立,都可以消费到数据