前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >消息队列技术选型

消息队列技术选型

作者头像
JavaEdge
发布2022-11-30 15:05:35
2290
发布2022-11-30 15:05:35
举报
文章被收录于专栏:JavaEdge

MQ的使用场景

  • 异步化缓冲(最终一致性,柔性事务)

服务解耦

假设A系统发送数据到B、C、D三个系统,如果是选择接口调用发送

  • 若E系统也要这个数据
  • C系统现在不要了
  • 现在A系统又要发送第二种数据了

A系统负责人头秃中。。。A系统还要时刻考虑B、C、D、E四个系统若挂了咋办?我要不要重发?我要不要把消息存起来?

你的业务是否有有类似场景呢? 一个系统或模块,调用了多个系统或模块,互相调用很复杂,维护繁琐。 但其实这个调用是不需要直接同步调用接口的,若用MQ,可以考虑在你的项目里,使用MQ将其异步化解耦。

  • 甚至 redis 也可以

异步

削峰

每天3点到9点,A系统风平浪静,每秒并发请求数量就100。结果每次一到11点~3点,每秒并发请求数量突然会暴增到1w。但系统最大处理能力就只能是每秒处理1000个请求。

MQ的优缺点

系统可用性降低

系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用B、C、D三个系统的接口就好了,ABCD四个系统好好的,没啥问题 你加个MQ进来,万一MQ挂了咋整?MQ挂了,整套系统崩溃了,不就完了。

系统复杂性提高

硬生生加个MQ进来

  • 你怎么保证消息没有重复消费?
  • 怎么处理消息丢失的情况?
  • 怎么保证消息传递的顺序性?

一致性问题:A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,咋整?你这数据就不一致了。

所以MQ实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,最好之后,你会发现,妈呀,系统复杂度提升了一个数量级。但关键时刻,用还是得用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MQ的使用场景
    • 服务解耦
      • 异步
        • 削峰
        • MQ的优缺点
          • 系统可用性降低
            • 系统复杂性提高
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档