MQ
Why?
高吞吐、低耦合、异步通信和可靠传输
高吞吐
面向大规模数据传输
kafka
- 吞吐量大,每秒可以处理上百万条消息
- 可以水平扩展
低耦合
MQ作为一个pub-sub的系统部件,允许两个子系统解耦
- 比如,B系 统需要基于A系统的每一条记录生成相关信息,可以接入MQ,不需要两个系统有强耦合接口
可靠传输
消息数据可以持久化,不易丢失
Kafka
-
消息默认是持久化到磁盘
-
可设置消息保留时间(如 7 天、永久等)
-
支持副本机制,保证消息不丢失
-
即使消费者宕机,也可以在下次启动时从上次消费的位置继续处理
异步通信
同步调用(如 REST API)会阻塞等待响应,而引入MQ可以使得
- 生产者发送完消息即可返回,无需等待消费者处理结果。
- 提高整体系统的响应速度和吞吐能力。
经典使用场景
- 日志处理系统
- 应用日志与日志处理平台解耦
- 数据同步系统
- DB数据同步到hive数据表中
- 离线计算系统
- flink流式处理
- 订单清结算
- 允许订单创建与清结算系统解耦
- 微服务架构通信
- 降低系统之间的耦合度