MQ五个作用点以及应用场景

一、异步通信

1、应用场景

  • 用户注册后发送短信/邮件用户提交注册信息后,系统需发送验证短信或欢迎邮件,但用户无需等待此步骤完成即可完成注册。
  • 电商订单支付后通知:支付成功后,异步通知库存系统扣减库存、物流系统生成运单、营销系统发放积分。

2、解决方案

  • 生产者快速响应:生产者将消息发送到 MQ 后立即返回成功,消费者异步消费消息(如发送短信)。

  • 提升吞吐量:通过异步化,主流程耗时从同步调用的 1 秒(发送短信)降低到 10 毫秒(仅发送消息)。

  • 典型产品:RabbitMQ(轻量级)、RocketMQ(高可靠)。

二、削峰填谷

1、应用场景

  • 秒杀活动:瞬时数万用户抢购商品,直接访问数据库会导致服务崩溃。

  • 直播互动高峰:主播抽奖时,大量用户同时发送弹幕或礼物请求。

2、MQ 的解决方案

  • 流量缓冲:将突发请求写入 MQ,后端服务按自身处理能力匀速消费(如每秒处理 1000 个请求)。

  • 避免服务过载:MQ 堆积消息(如积压 10 万条),服务逐步消费,防止数据库被打满。

  • 典型产品:Kafka(高吞吐)、RocketMQ(低延迟)。

三、系统解耦

1、应用场景

  • 订单系统与物流系统:订单生成后需通知物流系统生成运单,但物流系统升级不应影响订单系统。

  • 微服务间通信:用户服务修改用户信息后,通知积分服务、推荐服务同步数据。

2、MQ 的解决方案

  • 发布-订阅模式:订单系统发布消息到 MQ,物流系统订阅消息,双方无需感知彼此的存在。

  • 动态扩展:新增一个数据分析系统时,只需订阅订单消息,无需修改订单系统代码。

  • 典型产品:Kafka(多订阅者)、RabbitMQ(灵活路由)。

四、最终一致性

1、应用场景

  • 跨行转账:A 银行扣款后,通知 B 银行加款,需保证跨系统数据最终一致。

  • 电商下单扣库存:支付成功后,需保证订单状态与库存扣减一致。

MQ 的解决方案
  • 事务消息

    • RocketMQ 事务消息:先发送“半消息”到 MQ,执行本地事务(如扣款),事务成功则提交消息,失败则回滚。

    • 本地事务表:将消息和业务数据写入同一数据库事务,通过定时任务补偿投递消息。

  • 重试机制:若消费者处理失败,MQ 自动重试,直到成功或进入死信队列人工处理。

五、日志收集

1、应用场景

  • 用户行为分析:收集 App 或 Web 端用户点击、浏览日志,供大数据平台分析。

  • 系统监控:聚合多个微服务的运行日志(如错误日志、性能指标),统一存储到 Elasticsearch。

2、MQ 的解决方案

  • 高吞吐传输:Kafka 通过分区和批量写入,支持每秒百万级日志传输。

  • 数据持久化:日志消息持久化到磁盘,避免数据丢失。

  • 流式处理:结合 Flink、Spark 等流处理框架,实时分析日志(如实时统计 PV/UV)。

  • 典型产品:Kafka(日志场景首选)、Pulsar(分层存储)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何怀逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值