RocketMQ(消息中间件)

news2025/1/13 17:31:24

目录

一、为什么会出现消息中间件?

二、消息中间件是干嘛的?

三、应用解耦

四、流量削峰

五、异步处理

1.串行方式:

2.并行方式:

3.引入消息队列:

 六、RocketMQ的架构及概念


一、为什么会出现消息中间件?

Http请求默认采用同步请求方式,基于请求与响应模式,在客户端与服务器进行通讯 时,客户端调用服务端接口后,必须等待服务端完成处理后返回结果给客户端才能继续执行,这种情况 属于同步调用方式。如果服务器端发生网络延迟、不可达的情况,可能客户端也会受到影响,为了解决这个问题,消息中间件就产生了。


二、消息中间件是干嘛的?

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统 的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递

 


三、应用解耦

如果系统的耦合性越高,容错性就越低,以电商应用为例,用户创建订单后, 如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障 或者因为升级等原因暂时不可用,都会造成下单操作异常!

使用消息队列解耦,系统的耦合性就会下降了,比如物流系统发生故障, 需要几分钟才能修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统恢复后,补充处理存在 消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。

举例说明:

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户下单成功

库存系统:订单下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行
                        库存操作

假如:在下单时库存系统不能正常使用,也不影响正常下单,因为下单后,订单系统写入消息

    队列就不再关心其他的后续操作了。实现了订单系统与库存系统的应用解耦。


四、流量削峰

应用系统如果遇到系统请求流量的瞬间猛增,有可能将系统压垮,有了消 息队列可以将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提高系统的稳定性

 举例说明:

秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为了解决这个问题,一般需要 在应用前端加入消息队列。


五、异步处理

用户注册后,需要发注册邮件和注册短信 传统的做法有两种

1.串行方式:

将注册信息写入数据库成功后,发送注册邮件,再发送注册短信,以上三个任务全部完成 后,返回给客户端

2.并行方式:

将注册信息写入数据库成功后,发送注册邮件的同时发送注册短信,以上三个任务完成 后,返回给客户端;与串行的差别是并行的方式可以提高处理的时间

3.引入消息队列:


 六、RocketMQ的架构及概念

Broker(邮递员) :Broker是RocketMQ的核心,负责消息的接收,存储,投递等功能

NameServer(邮局) :消息队列的协调者,Broker向它注册路由信息,同时Producer和Consumer向其获取路由信息

Producer(寄件人) :消息的生产者,需要从NameServer获取Broker信息,然后与Broker建立连接,向Broker发送消息

Consumer(收件人) :消息的消费者,需要从NameServer获取Broker信息,然后与Broker建立连接,从Broker获取消息

Topic(地区) :用来区分不同类型的消息,发送和接收消息前都需要先创建Topic,针对Topic来发送和接收 消息

Message Queue(邮件) :为了提高性能和吞吐量,引入了Message Queue,一个Topic可以设置一个或多个Message Queue,这样消息就可以并行往各个Message Queue发送消息,消费者也可以并行的从多个 Message Queue读取消息

Message: Message 是消息的载体。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv-人脸识别

对https://blog.csdn.net/weixin_46291251/article/details/117996591这哥们代码的一些修改 import cv2 import numpy as np import os import shutil import threading import tkinter as tk from PIL import Image, ImageTkchoice 0# 首先读取config文件,第一行…

国内8个能用AI赚钱的在线兼职渠道整理

hi,同学们,我是赤辰,本期是赤辰第3篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!即将迎来新学期了,今天就来聊聊学生党如何应用AI技能通过兼职,赚取生活费,这里指…

使用HTTPS模式建立高效爬虫IP服务器详细步骤

嘿,各位爬虫小伙伴们!想要自己建立一个高效的爬虫IP服务器吗?今天我就来分享一个简单而强大的解决方案——使用HTTPS模式建立工具!本文将为你提供详细的操作步骤和代码示例,让你快速上手,轻松建立自己的爬虫…

【枚举区间+线段树】CF Ehu 152 E

Problem - E - Codeforces 题意: 思路: 感觉是个套路题 对区间计数,按照CF惯用套路,枚举其中一个端点,对另一个端点计数 对于这道题,枚举右端点,对左端点计数 Code: #include &…

Form.Item创建自定义表单

一、概述 Antd是一个非常强大的UI组件库,里面的Form表单组件也基本能满足我们大多数场景。但是也有需要自定义表单的场景。 Vue2里我们使用v-model,结合子组件的model属性,来实现自定义组件的双向绑定。 Vue3里我们使用v-model,…

没有苹果开发者账号能否创建ios证书-最新

​ 目录 摘要: 引言: 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: 总结: 摘要: 本文介绍了在没有Mac电脑的情况下,使用appuploader工具生成iOS证书和描…

高通QualComm、MTK耦合测频段工具和综测校准工具的自由定制 与工厂Mes对接、使用PowerMeter测量等

一.MTK耦合工具V1.3 20220409 MTK芯片 1.逻辑: 打开软件,扫码SN,自动连接,连接成功后 1).开启强发(强发参数 LTE频段 1、3、5、7、28) 2).读测量值 3).结果判定&#xff…

【计算机组成 课程笔记】3.2 算数运算和逻辑运算的硬件实现

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 3 - 2 - 302-门电路的基本原理(11-39--)_哔哩哔哩_bilibili 现代计算机的CPU和其他很多功能部件都是基于晶体管的集成电路,想要了解计算机组成的基本原理,还是需要有…

电脑报错提示xinput1_3.dll缺失怎么办?xinput1_3.dll丢失的简单恢复方案

今天,我将为大家分享一个与我们日常工作息息相关的话题——xinput1_3.dll丢失的4种解决方法。在我们的日常工作和生活中,电脑出现问题是常有的事,而xinput1_3.dll丢失则是其中较为常见的一种问题。那么,什么是xinput1_3.dll?它为…

C盘扩容遇到的问题(BitLocker解密、)

120G的C盘不知不觉的就满了,忍了好久终于要动手了。 尽管电脑-管理--磁盘管理里可以进行磁盘大小调整,但由于各盘都在用,不能够连续调整,所以选用DiskGenius。 # DiskGenius调整分区大小遇到“您选择的分区不支持无损调整容量” …

undolog

一、原子性 ACID:通过undolog保证原子性 二、undolog 如何做 把回滚时所需的东西都给记下来: 1、插入一条记录时,至少要把这条记录的主键值记下来,回滚的时候只需要把这个主键值对应的记录删掉就好了。 2、删除了一条记录&…

10 行代码能做什么?

10 行代码能做什么? 写一串 SQL Join,统计全渠道市场营销的 ROI 用 JS 画个饼图,展示最有效的广告投放策略 用 Python 写段算法,分析销量骤降的原因是什么 …… 数据出错了,写个对数脚本 -_-|| AI 时代,…

AI图像行为分析算法 opencv

AI图像行为分析算法通过pythonopencv深度学习框架对现场操作行为进行全程实时分析,AI图像行为分析算法通过人工智能视觉能够准确判断出现场人员的作业行为是否符合SOP流程规定,并对违规操作行为进行自动抓拍告警。OpenCV是一个基于Apache2.0许可&#xf…

管理类联考——逻辑——汇总篇——知识点突破——形式逻辑——联言选言——定义

角度——本质定义 联言 联言命题是断定两种或两种以上事物情况同时存在的命题,用“A并且B”表示,逻辑符号为A ∧ B。 若“A ∧ B”为真,表明A是真的,同时B也是真的。 【定义】联言命题是表示若干判断同时成立的命题。 【刻画】…

Java与其他编程语言比较分析,编程语言选择与优点、缺点和适用场景详解

原文地址:Java与其他编程语言比较分析,编程语言选择与优点、缺点和适用场景详解 Java 擅长可移植性和可靠性,Python 擅长通用性和简单性,JavaScript 擅长 Web 开发,C 擅长性能,Go 擅长效率。网址:yii666.c…

网御星云-上网行为管理系统bottomframe.cgi接口存在SQL注入

一、免责声明: 本次文章仅限个人学习使用,如有非法用途均与作者无关,且行且珍惜;由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号望雪阁及作者不为此…

OS 内存使用和分段

磁盘很大但是内存很小,当进程一堵塞的时候,就把进程一放入磁盘,然后进程二进去。进程三睡眠的时候在把二和三交换,所以载入之后重定位不太行 GDT是整个操作系统的段表,多个进程的 LDT时某个进程的段表

SpringBoot 博客网站

SpringBoot 博客网站 系统功能 登录注册 博客列表展示 搜索 分类 个人中心 文章分类管理 我的文章管理 发布文章 开发环境和技术 开发语言:Java 使用框架: SpringBoot jpa H2 Spring Boot是一个用于构建Java应用程序的开源框架,它是Spring框架的一…

Spring版本与JDK版本演变

Java各版本变更核心API Java8 lambada表达式函数式接口方法引用默认方法Stream API 对元素流进行函数式操作Optional 解决NullPointerExceptionDate Time API重复注解 RepeatableBase64使用元空间Metaspace代替持久代(PermGen space) Java7 switch 支…

哈希表与有序表

哈希表与有序表 Set结构 key Map结构 key-value 哈希表 哈希表的时间复杂度都是常数项级别的,但常数较大 增删改查的时间都是常数级别的,与数据量无关 当哈希表存储的值是基础数据类型(Integer - int),哈希表中内…