Skip to main content

MQ

Why?

高吞吐、低耦合、异步通信和可靠传输

高吞吐

面向大规模数据传输

kafka

  1. 吞吐量大,每秒可以处理上百万条消息
  2. 可以水平扩展

低耦合

MQ作为一个pub-sub的系统部件,允许两个子系统解耦

  • 比如,B系统需要基于A系统的每一条记录生成相关信息,可以接入MQ,不需要两个系统有强耦合接口

可靠传输

消息数据可以持久化,不易丢失

Kafka

  • 消息默认是持久化到磁盘

  • 可设置消息保留时间(如 7 天、永久等)

  • 支持副本机制,保证消息不丢失

  • 即使消费者宕机,也可以在下次启动时从上次消费的位置继续处理

异步通信

同步调用(如 REST API)会阻塞等待响应,而引入MQ可以使得

  • 生产者发送完消息即可返回,无需等待消费者处理结果。
  • 提高整体系统的响应速度和吞吐能力。

经典使用场景

  1. 日志处理系统
    1. 应用日志与日志处理平台解耦
  2. 数据同步系统
    1. DB数据同步到hive数据表中
  3. 离线计算系统
    1. flink流式处理
  4. 订单清结算
    1. 允许订单创建与清结算系统解耦
  5. 微服务架构通信
    1. 降低系统之间的耦合度