Rocketmq学习之路(一)从生产上的问题引出MQ

news2024/11/25 7:02:28

前言:

从来没有真正弄明白mq是什么,只知道他有消峰,异步,解耦的作用。但是在日常开发工作中,就是简单的生产者发送消息,消费者接受消息。所以,从今天开始。我要吃掉这个技术。

一.这该死的订单系统

说到订单系统,大家一定会想到,不就是用户购买商品。订单系统从数据库中库存减少这样的操作嘛,再复杂一点就是要告诉xx物流来拿货,发快递。再复杂一点就是给用户发送消息告诉用户下订单已经成功了。再复杂一点就是支持退货,库存再加回来。再复杂一点就是用户下单购买商品,你给用户发一些红包啦,券啦。再复杂一点就是类似于双十一这种短时间有大量用户下订单的操作。

但是上面说的一些操作,其实藏匿着很多危机,比如告诉物流拿货,第三方物流系统接口挂掉了,那岂不是你下不了订单?比如退货,你这边库存已经加回来了,但是第三方支付系统告诉你退款失败。用户岂不是财货两空?再比如退货,你的红包之类的是不是得收回?双十一qps夸夸往上增,服务器挂掉了怎么办?

二.同步异步的概念

同步:就是从用户下订单开始 添加订单记录,减库存,发券,通知物流公司发货。这些操作都是一步步来的。比如添加订单记录用了10ms,减库存用了10ms,发券用了10ms,调用物流公司接口用了20ms.这个接口一共用了50ms

异步的概念,就是不用等上一个操作做完,下一个操作就可以执行。

三.mq的作用

其实mq就是用来干这件事情的,把发券,通知物流公司发货,抗下双十一这种大量请求的场景

都可以通过mq来解决上述问题。对应发券就是异步操作,通知物流公司发货就是跟第三方接口解耦,抗下双十一多请求就是消峰。

四.mq的选型

现在常见的mq一般有3种:rabbitmq,rocketmq,kafka  他们四个各有各的好多,也各有各的缺点。

我们在做技术选型的时候,要思考下面几个问题?

1.他会不会丢数据?

2.同等机器下,他能支持多少qps?

3.社区活不活跃?

4.可不可以部署集群环境

5.支持一些基本功能么(延时消息,事务消息,消息堆积,消息回溯,死信队列)?

mq选型对比
名称优势劣势吞吐量
rabbitmq保证数据不丢失,支持死信队列,可以部署集群吞吐量比较低,加机器比较困难,开发语言erlang,无法读懂他的源码每秒几万
rocketmq保证高可用,通过配置可以保证数据不丢失,支持高级特性,基于java开发,很容易读懂源码官方文档相对不足每秒10W
Kafka性能高,可用性高丢失数据每秒10多w

五.rocketmq的架构原理

1.mq如何集群化部署支持高并发访问?

一台rocketmq最多能10W并发,如果这时候有大量的请求发送过来怎么办?我们可以部署在多台机器上,然后只要让几十万请求分散到不同机器上即可。

2.mq如果要存储海量数据应该怎么做?

海量数据是通过分布式存储的方式来进行存储的,每台机器上的rocketmq进程一般称之为broker,每个broker会收到不同的消息,然后会把消息存储在本地的磁盘文件中。

这样的话,假设你有1亿条消息,然后有10台机器部署了RocketMQ的Broker,理论上不就可以让每台机器存储1000万条消息了吗?
3.broker宕机了怎么办?
Rocketmq主从架构以及多副本策略来解决这个问题
Broker是由Master和Slave两种角色的 一主一从。
Master收到消息会同步给Slave 这样Slave就会有跟Master一样的数据了。
4.怎么知道访问哪个Broker?
对于生产者或者消费者是不知道要把消息发送到哪个broker上面的,rocketmq为了解决这个问题,提出了NameServer的概念。然后Broker会把自己的信息注册多NameServer上面去。如下图

 

对于生产者或者消费者来说如果他要发送消息到broker上也要通过NameServer来获取

 

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

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

相关文章

word解决文字与公式mathtype不对齐

修改字体和段落里面的这两个。

每日学术速递5.23

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Tree of Thoughts: Deliberate Problem Solving with Large Language Models 标题:思想树:用大型语言模型有意识地解决问题 作者:Shunyu Yao, …

每日学术速递5.24

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Reprompting: Automated Chain-of-Thought Prompt Inference Through Gibbs Sampling 标题:重新提示:通过 Gibbs 采样的自动思维链提示推理 作者&#xff1…

《java核心卷Ⅰ》读书笔记

🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…

数据结构基础内容-----第四章 栈与队列

文章目录 栈栈的定义站的抽象数据类型两栈共享空间栈的作用递归的定义 栈运算 队列循环队列队列链式存储结构及实现 栈 栈的定义 栈(Stack)是计算机科学中的一种抽象数据类型,它是一个只能在一端进行插入和删除操作的线性数据结构。栈按照后…

tomcat what

tomcat是什么 对于tomcat是什么有什么作用。曾经看到一个大神是这样解释tomcat的,现在分享给大家 内容大体是: 我家有一台机器,可以把石头变成金子。你快递给我一箱石头,让我把它们变成一箱金子再快递给你。 这个机器就是web项…

【Python从入门到进阶】21、爬虫相关概念介绍

接上篇《20、HTML页面结构的介绍》 上一篇我们正式进入了Python爬虫的实战教程,主要讲解了要爬取的HTML页面的结构。本篇我们来介绍爬虫的相关概念。 一、什么是互联网爬虫 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个…

如何自己搭建chatgpt镜像网站

前沿 总所周知,访问以及注册chatgpt都是比较困难的,如何能畅游chatgpt而不受魔法的限制呢?还好openai给出了非常不错的api能使我们快速搭建一个镜像网站 准备工作 首先得准备一台服务器 这里推荐使用海外vps来进行搭建,缺点就是…

java基础入门-16-【阶段项目(综合练习doudizhu游戏)】

Java基础入门-16-【阶段项目(综合练习&doudizhu游戏)】 25、阶段项目(综合练习&doudizhu游戏)斗地主小游戏斗地主游戏1(控制台版)步骤一:准备牌步骤二:洗牌步骤三:发牌步骤四:看牌步骤五:给牌进行排序(两种方式排序)方式一:利用序号进行排序方式二:给每一…

阻焊设计~焊盘阻焊开窗、阻焊桥

阻焊设计 焊盘阻焊开窗 阻焊开窗应比焊盘尺寸大6mils以上(单边3mils),见下图: 阻焊桥 a) 相邻的SMD焊盘,SMD焊盘和插件孔、SMD焊盘和过孔、过孔与过孔之间需要保留阻焊桥;最小阻焊桥宽度2mils &#x…

vue3.0与vue2.0

一、生命周期的变化 1.vue2.响应式架构 2.vue3.0 响应式架构图 Vue3.0响应式框架在设计上,将视图渲染和数据响应式完全分离开来。将响应式核心方法effect从原有的Watcher中抽离。这样,当我们只需要监听数据响应某种逻辑回调(例如监听某个text属性的变化…

每日学术速递5.28

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Improving Factuality and Reasoning in Language Models through Multiagent Debate 标题:通过多主体辩论改进语言模型中的事实性和推理 作者:Yilun Du,…

创建型设计模式02-工厂方法模式

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 工厂方法模式 1、工厂方法模式介绍 工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式…

MAC中文版 FCPX V10.6.6 专属视频剪辑后期工具安装教程

Final Cut Pro X简介 Final Cut Pro X又名FCPX,是MAC上非常不错的视频非线性剪辑软件,它剪辑速度超凡,具有先进的调色功能、HDR 视频支持,以及 ProRes RAW,让剪辑、音轨、图形特效、整片输出,支持主流的摄像机格式,是专业视频剪辑领域的王者…

Java经典笔试题—day14

Java经典笔试题—day14 🔎选择题🔎编程题🍭计算日期到天数转换🍭幸运的袋子 🔎结尾 🔎选择题 (1)定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所…

【数据湖仓架构】数据湖和仓库:范式简介

是时候将数据分析迁移到云端了——您选择数据仓库还是数据湖解决方案?了解这两种方法的优缺点。 数据分析平台正在转向云环境,例如亚马逊网络服务、微软 Azure 和谷歌云。云环境提供了多种好处,例如可扩展性、可用性和可靠性。此外&#xff0…

SpringMVC bean加载控制 -- SpringMVC入门保姆级教程(二)

文章目录 前言二、SpringMVC bean 加载控制1.bean加载控制2.添加Spring开发环境3.SpringMVC bean加载控制4.SpringMVC bean控制相关知识点 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能…

丝印设计~丝印内容、大小、距离、排列,位置

丝印设计 丝印的内容包括: a) PCB的名称/PCB的版本号 b) 元器件外形框 c) 元器件的序号 d) 元器件的极性和方向标志 e) 条码框 f) 插入PCB的名称(母板) g) 插针的位置序号 h) 安装孔位置代号 i) 元器件第1脚的位置代号 j) 过板方向 k) 光纤盘…

分治入门+例题

目录 🥇2.3.2 合并排序 🥇2.3.3 快速排序 🌼P1010 [NOIP1998 普及组] 幂次方 🌳总结 形象点,分治正如“凡治众如治寡,分数是也”,管理少数几个人,即可统领全军 本质&#xff…