MQ - 消息系统

2023-12-05

消息系统

1、消息系统的演变

在大型系统中,会需要和很多子系统做交互,也需要消息传递,在诸如此类系统中,你会找到源系统(消息发送方)和 目的系统(消息接收方)。为了在这样的消息系统中传输数据,你需要有合适的数据管道。如下:

在这里插入图片描述
这种数据的交互看起来就很混乱,如果我们使用消息传递系统,那么系统就会变得更加简单和整洁。如下:
在这里插入图片描述

2、为什么要消息系统

2.1. 解耦合

2.2 异步处理 例如电商平台,秒杀活动。一般流程会分为:1: 风险控制 、2: 库存锁定 、3: 生成订单 、4: 短信通知 、5: 更新数据

2.3 通过消息系统将秒杀活动业务拆分开,将不急需处理的业务放在后面慢慢处理;流程改为:1: 风险控制 、2: 库存锁定 、3: 消息系统 、4: 生成订单 、5: 短信通知 、6: 更新数据

2.4 流量的控制 :1. 网关在接受到请求后,就把请求放入到消息队列里面 2.后端的服务从消息队列里面获取到请求,完成后续的秒杀处理流程。然后再给用户返回结果。优点:控制了流量 缺点:会让流程变慢

3、消息队列的两种模式

3.1、点对点模式
点对点模式下包括三个角色:消息队列、发送者 (生产者)、接收者(消费者)
消息发送者生产消息发送到queue中,然后消息接收者从queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息接收者不可能消费到已经被消费的消息。
在这里插入图片描述

点对点模式特点:
每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中);
发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;
接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;

3.2、发布/订阅模式
发布/订阅模式下包括三个角色:角色主题(Topic)、发布者(Publisher)、订阅者(Subscriber)
在这里插入图片描述

发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
发布/订阅模式特点:

每个消息可以有多个订阅者;
发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MQ - 消息系统 的相关文章

随机推荐

  • 基于SSM+VUE实现毕业设计流程管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 初识哈夫曼编码

    1 什么是哈夫曼编码 1 什么是编码 编码就是把一些信息比如文字文件 视频文件转成0101的一堆数字存储起来 这些数字就是编码 它们需要满足数字与字符的一一对应关系 当然还必须满足可以由这一堆数字转回到文件信息 这样的编码才是有意义的 2
  • FFmpeg在Centos服务器上离线安装(包含所需依赖)并实现拉取rtsp流与推送至rtmp服务器

    场景 Windows上使用FFmpeg实现rtsp视频流推流到RTMP流媒体服务器 EasyCVR流媒体服务器 Windows上使用FFmpeg实现rtsp视频流推流到RTMP流媒体服务器 EasyCVR流媒体服务器 rtsp 转流 CSD
  • Vue框架学习笔记——列表渲染:v-for

    文章目录 前文提要 代码正文 前文提要 本人仅做个人学习记录 如有错误 请多包涵 主要学习链接 尚硅谷Vue2 0 Vue3 0全套教程丨vuejs从入门到精通 代码正文 div ul li p name p age li ul div
  • 【MyBatisPlus】MyBatisPlus之id生成策略的方法

    MyBatisPlus之id生成策略的方法 在使用MyBatisPlus框架进行开发时 我们通常需要为实体类设计主键的生成策略 MyBatisPlus提供了多种主键生成策略 本文将介绍这些策略的用法 雪花算法策略 雪花算法是Twitter公
  • Qt designer中使用QSplitter创建推拉窗口,类似 Cobalt Strike 中主界面上下推拉的窗口

    参考链接 Qt designer中使用QSplitter创建推拉窗口 qt designer splitter CSDN博客 Qt Designer中如何添加QSplitter qtdesigner splitter CSDN博客 QSpl
  • 陶瓷材料硬度怎么测量?-科学指南针

    硬度是衡量材料力学性能的一 项重要指标 它是指物体抵抗外力进入其中的能力 即由于其他物体给与的外力与物体的形变尺寸之间的关系 陶瓷材料作为无机非金属材料的一个重要 类 取得了很大的发展 结构陶瓷以其高机械强度 高硬度 耐腐蚀性等忧点被广泛用
  • 基于java中SSM框架实现图书管理系统的设计演示【附项目源码+论文说明】

    基于java中SSM框架实现图书管理系统的设计演示 摘要 随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 羽毛球馆场地管理当然也不能排除在外 基于web的图书管理系统是以实际运用为
  • SQL语句大全—解决方案

    1 用order by select top 30 recid from A order by ricid 如果该字段不是自增长 就会出现问题 2 在那个子查询中也加条件 select top 30 recid from A where r
  • 陶瓷材料检测项目及标准-科学指南针

    陶瓷原材料是用纯天然或生成化学物质历经成型和高溫煅烧做成的一类无机非金属原材料 它具备高溶点 高韧性 高耐磨性能 耐空气氧化等优势 可作为构造原材料 刀具材质 因为陶瓷还具备一些独特的性能 又可做为新型功能材料 各检测组织针对陶瓷检测的新项
  • 8年测试老鸟从业心得:软件测试员最核心的竞争力究竟是什么?

    无论从事哪一个行业 核心竞争力都是绕不开的一个话题 提高核心竞争力是我们一生中的重要课题 它保障了我们不会被替代 即在竞争中别人都争不过你 只有你才做得到的某种能力 对于测试员而言 究竟何为这个岗位的核心竞争力 对于初入职场的我而言 着实困
  • 测试管理岗位的技能提升及管理应用有哪些?

    是否需要选择管理岗 建议 如果个人有机会成为管理岗 那就抓紧了 原因很简单 我认为市场的行业发展是这个样子的 专业化的技术人员一定是市场缺失的人才 但是相比较而言 管理者会更加被公司需要 同时 管理岗会让你在这个行业持续更长时间 薪资也相对
  • Docker 一些设置

    一 时间设置 如果容器已经运行了 docker exec it 容器名或id bash mkdir p usr share zoneinfo Asia exit docker cp usr share zoneinfo Asia Shang
  • APP测试设计要点

    app的安装与升级 升级中用户数据 设置 状态的保留 特别注意新版本已去掉的状态或设置 是否可以隔开版本覆盖安装 是否可以覆盖安装更低版本 卸载安装 安装目录清理 SD卡存储数据不被清理 在没有更新或网络时 需要给予用户正确的信息表达 如果
  • 你会使用图片格式转换工具免费方法吗?教你转换格式吧

    前两天在网上看见一个聊天记录 是一个博主小A发的和老板的对话 小A 老板 这是你让我制作的我们产品的动图 你看看可以吗 发送了一张GIF 老板 不错不错 这次做的很好看 下周一我们开会的时候要用到这个图片 你记得把它打印出来 到时候给我一份
  • 高效整理文件的技巧和方法

    在日常生活和工作中 我们经常需要处理大量的文件 包括文档 图片 视频等 如果不能有效地整理这些文件 不仅会浪费大量的时间和精力 还可能导致重要文件的丢失或难以找到 因此 掌握一些整理文件的技巧方法是非常必要的 本文将介绍一些高效整理文件的技
  • 《VirtualLab Fusion物理光学实验教程》好书分享

    目录 第一章 物理光学概念介绍 6 1 1 几何光学和光线追迹 6 1 2 物理光学和光场追迹 6 1 3 电场 磁场以及坡印廷矢量 8 1 4 振幅 相位及实部和虚部 9 1 5 振幅 相位与偏振 10 1 6菲涅尔公式 11 1 7 全
  • Nginx配置文件全解析【深度剖析细节】

    简介 Nginx就是一个高性能的Web服务器和反向代理服务器 它可以处理大量的并发连接 支持高速缓存 负载均衡 SSL TLS终止 HTTP 2协议等功能 本篇主要讲述nginx的核心配置以及配置分析和优化 能够应用到你企业生产中为目的 基
  • 被确诊为“不适合保研”了……

    写在前面 伴随着 读研热 同辈压力 内卷 焦虑也成为了我们这一代人中的热词 作为同年级里的佼佼者 大多数保研er们无时无刻都不紧绷着心里的那根弦 可能在那些为了大创辗转反侧 为了绩点不停刷夜 为了论文焦头烂额的时候 保研er也许会犹豫 自己
  • MQ - 消息系统

    消息系统 1 消息系统的演变 在大型系统中 会需要和很多子系统做交互 也需要消息传递 在诸如此类系统中 你会找到源系统 消息发送方 和 目的系统 消息接收方 为了在这样的消息系统中传输数据 你需要有合适的数据管道 如下 这种数据的交互看起来