1 为什么要用MQ ?

消息队列是一种“先进先出”的数据结构
其应用场景主要包含以下3个方面

  • 应用解耦
    系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。
    使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回复后,补充处理存在消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。

  • 流量削峰
    应用系统如果遇到系统请求流量的瞬间猛增,有可能会将系统压垮。有了消息队列可以将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提到系统的稳定性和用户体验。
    一般情况,为了保证系统的稳定性,如果系统负载超过阈值,就会阻止用户请求,这会影响用户体验,而如果使用消息队列将请求缓存起来,等待系统处理完毕后通知用户下单完毕,这样总不能下单体验要好。
    处于经济考量目的:业务系统正常时段的QPS如果是1000,流量最高峰是10000,为了应对流量高峰配置高性能的服务器显然不划算,这时可以使用消息队列对峰值流量削峰

  • 数据分发
    通过消息队列可以让数据在多个系统更加之间进行流通。数据的产生方不需要关心谁来使用数据,只需要将数据发送到消息队列,数据使用方直接在消息队列中直接获取数据即可

2 MQ的优点和缺点

优点:解耦、削峰、数据分发
缺点包含以下几点:

  • 系统可用性降低
    系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响。
    如何保证MQ的高可用?
  • 系统复杂度提高
    MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。
    如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?
  • 一致性问题
    A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。
    如何保证消息数据处理的一致性?

3 各种MQ产品的比较

HM-RocketMQ1【课程大纲、MQ介绍】相关推荐

  1. 计算机与智能化专业课程,计算机与人工智能专业方向课程大纲介绍-Artificial Intelligence 人工智能(原创)...

    计算机与人工智能专业方向课程大纲介绍-Artificial Intelligence 人工智能 Course Goals ● To understand the various characteris ...

  2. python大纲图_Python课程大纲

    课程大纲被分成6个部分,每个部分又被分解为多个阶段, 而每个阶段包含了多个Try, Workshop, FactToFace, Apply. 这里只列出部分,和阶段: CHAPTER 0 : 预科[可 ...

  3. Python学习入门2:Python学习路线(课程大纲+Python视频教程+下载地址)

    Python学习路线(课程大纲+Python视频教程+下载地址) 目前Python已经成为最受欢迎的程序设计语言之一.Python的设计哲学是"优雅"."明确" ...

  4. 《软硬件接口》课程大纲

    <软硬件接口>课程大纲 Coursera课程 The Hardware/Software Interface是华盛顿大学提供的一门课程,其中汇编语言.进程结构.Java实现等章节内容我认为 ...

  5. 2017年java教材推荐_干货|2017年最新JavaEE课程大纲分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java如今已经是全球编程语言排民第一的语言,运用广泛,前景广阔,现在学习java,将来就业,升职加薪都会有保障.下面分享千锋2017年最新JavaEE课 ...

  6. python教程2019全套-Python学习路线2019升级版(课程大纲+视频教程+网盘资源下载)...

    2019最新Python全栈+人工智能学习路线升级版 全面涵盖前端.后端.爬虫.数据挖掘.人工智能等课程(课程大纲+视频教程+网盘资源下载)! 学习路线四大亮点: 1.人工智能三大主流框架全覆盖 2. ...

  7. python教程视频 网盘-Python学习路线2019版(课程大纲+视频教程+网盘资源下载)...

    2019最新Python全栈+人工智能学习路线升级版 全面涵盖前端.后端.爬虫.数据挖掘.人工智能等课程(课程大纲+视频教程+网盘资源下载)! 学习路线四大亮点: 1.人工智能三大主流框架全覆盖 2. ...

  8. python培训班课程大纲_Python课程大纲

    课程大纲被分成6个部分,每个部分又被分解为多个阶段, 而每个阶段包含了多个Try, Workshop, FactToFace, Apply. 这里只列出部分,和阶段: CHAPTER 0 : 预科[可 ...

  9. 大数据训练营课程大纲项目简介

    文章目录 课程大纲 模块一:大数据的"三驾马车":HDFS.MapReduce/YARN.HBase 模块二:大数据时代数据仓库实践:Hive 模块三:更快的数据处理引擎:Spar ...

  10. android 课程大纲,Android课程大纲解读.doc

    Android课程大纲解读 Android课程大纲 Android-Java基础(25天)Java开发环境搭建基础知识 JAVA环境的搭建 Hello World 小程序JAVA语法基础基本语法掌握关 ...

最新文章

  1. 深度报告:中国将主宰5G时代?华为中兴的最大机会来了
  2. Today:基于 Electron 和 Vue.js 的 GTD 应用
  3. sendto 返回errnor 1,错误码1 Operation not permitted
  4. Android --- 自定义ImageView 实现圆形图片
  5. php5.6 交叉编译,Cross-compile - 龙芯开源社区
  6. Linux上创建一个用户,并给该用户指定目录的权限,修改时区
  7. [golang]nil slice和empty slice的区别
  8. 华为宣布:免费培养8000名开发者! 学习免费!实验免费!考证免费!
  9. 【C语言】统计数字字符的个数(字符组)
  10. 统计学习中感知机的C++代码
  11. 模式识别 算法练习(一)——C均值算法
  12. 如何创建自己的本地高级URL缩短服务
  13. SAP BW学习之基础操作篇
  14. vue网页分享生成二维码微信扫一扫进行分享
  15. python中pow_Python中float的内置pow()和math.pow()之间的区别?
  16. 算法精解----log符号什么意思
  17. 阿里云疯狂促销 公有云之战刚鸣枪
  18. emui华为java2p_同属华为,却是两个相对独立的系统,Magic系统和EMUI区别在哪?...
  19. python中open()函数里中文处理
  20. 放假安排 自己MARK

热门文章

  1. 哇呼即时通讯软件与同行业开发软件对比有何不同?
  2. 原来华为手机黑科技这么多!打开这个开关,就能一键轻松隐藏秘密
  3. swift判断手机越狱代码和文件常用路径
  4. Drools 将DSLR转化为DRL
  5. Linux下lt8911exb调试总结
  6. Qt5之 简单的日志记录工具类
  7. 戒手机瘾神器?看这篇就够了
  8. C语言 获取Float小数位数
  9. PHP 阿里云发送短信
  10. ldconfig mysql_ldconfig详解