Rocket MQ 架构介绍

文章目录

  • 为什么选择Rocket MQ
  • 基本概念
  • 优点
  • 缺点
  • 架构图
  • 编程模型
    • 发送者发送消息固定步骤
    • 消费者消费消息固定步骤

为什么选择Rocket MQ

  Rocket MQ是阿帕奇顶级的开源项目,由阿里开发并开源。它的研发背景是Active MQ与Kafka不能很好的解决当时的业务场景。官网上是这么描述的:

   在阿里孕育 RocketMQ 的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量
的上升,源自我们的消息传递集群的压力也变得紧迫。根据我们的研究,随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,
但效果并不理想。于是我们尝试了流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性
方面,详见下文。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的消息用例,覆盖从传统的pub/sub场景到高容量的实时
零误差的交易系统。

基本概念

名词描述
Producer(生产者)消息的生产者,一般是系统中的一个功能模块
Consumer(消费者)消息的消费者,一般是系统中的一个功能模块
Name server 命名空间用于维护Broker与Topic的信息,提供轻量级的Broker路由服务
Broker实际处理消息存储、转发等服务的核心组件
Topic区分消息的种类,用于路由消息
Message QueqeTopic的分区,用于并行发送和接收消息

优点

  • 异步:可以提高系统的响应速度,吞吐量。比如现在的菜鸟驿站/快递柜,快递员只需把快递送到驿站/快递柜即可送下一个快递,不用等A客户拿到快递后,再去给B客户拿快递。
  • 解耦:快递员是一个独立的角色,负责派送包裹,而不需要直接与收件人进行实时交互。快递员可以通过查询系统或从调度中心获取待派送的包裹信息,然后根据包裹上的地址信息进行派送。
  • 削峰:超市618,双十一都会有大促活动。超市可以采用分时段入场、预约购物或提前安排活动等措施,将顾客的到达时间分散在更长的时间段内,从而减少高峰时段的拥堵和排队等待时间。

缺点

  • 系统稳定性降低:引入新的外部依赖,对系统稳定性有影响,如果MQ宕机不可用,会导致整个系统不可用
  • 系统复杂度变高:MQ是异步的,需要考虑消息如何不丢失?消息不重复消费?如何保证顺序消费等
  • 数据一致性问题:假设A系统发出消息,B,C两个系统来消费。B消费成功,C消费失败,此时如何处理?

架构图

image.png

编程模型

发送者发送消息固定步骤

  1. 创建producer,确定生产者组名
  2. 指定name server地址
  3. 启动producer
  4. 创建消息对象,指定主题topic,tag和消息体
  5. 发送消息
  6. 关闭producer

消费者消费消息固定步骤

  1. 创建消费者Consumer,确定消费者组名
  2. 指定name server地址
  3. 订阅主题topic 和 tag
  4. 设置回调函数,处理消息
  5. 启动消费者consumer

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JavaWeb+SpringBoot+Vue在线拍卖系统的设计和实现

基于JavaWebSpringBootVue在线拍卖系统系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 …

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(一)——创建Glue

1 通过Athena查询s3中的数据 此实验使用s3作为数据源 ETL: E extract 输入 T transform 转换 L load 输出 大纲 1 通过Athena查询s3中的数据1.1 架构图1.2 创建Glue数据库1.3 创建爬网程序1.4 创建表1.4.1 爬网程序创建表1.4.2 手动创建表 1…

机器学习基础介绍

百度百科: 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 …

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析

3 serverless数据分析 大纲 3 serverless数据分析3.1 创建Lambda3.2 创建API Gateway3.3 结果3.4 总结 3.1 创建Lambda 在Lambda中,我们将使用python3作为代码语言。 步骤图例1、入口2、创建(我们选择使用python3.7)3、IAM权限(…

控制台打印如来佛图像

代码 System.out.println(" _ooOoo_ \n"" o8888888o \n"" 88 \".\" 88 …

银河麒麟v10系统SSH远程管理及切换root用户的操作方法

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一…

手把手教你玩转ESP8266(原理+驱动)

在嵌入式开发中,无线通信的方式有很多,其中 WIFI 是绕不开的话题。说到 WIFI 通信,就不得不提 ESP8266了。 ESP8266 是一款高性能的 WIFI 串口模块,实现透明传输。只要有一定的串口知识,不需要知道 WIFI 原理就可以上…

bugsplat64.dll文件丢失的多种详细有效解决方法

一、bugsplat64.dll是什么? bugsplat64.dll是Windows操作系统中的一个动态链接库文件,它包含了一些用于错误报告和调试的功能。当程序运行时遇到错误时,系统会调用bugsplat64.dll来收集错误信息并将其发送给开发人员进行修复。因此&#xff…

vm虚拟机固定IP

最近使用vm虚拟机 ,可用了一段时间ip就自动变化,于是去网上看了不少教程,但很多都没用。 1.编辑配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改BOOTPROTO为static加入属性IPADDR,设置你想要设置的ip配置GATEWAY与DNS1 不配置GA…

ubuntu16.04升级openssl

Ubuntu16.04 默认带的openssl版本为1.0.2 查看:openssl version 1.下载openssl wget https://www.openssl.org/source/openssl-1.1.1.tar.gz 编译安装 tar xvf openssl-1.1.1.tar.gz cd openssl-1.1.1 ./config make sudo make install sudo ldconfig 删除旧版本 su…

ES-环境安装(elasticsearch:7.17.9,kibana,elasticsearch-head)

ES 环境搭建 1 拉取镜像 常用三件套 docker pull kibana:7.17.9 docker pull elasticsearch:7.17.9 docker pull mobz/elasticsearch-head:52 启动镜像 elasticsearch 安装 这里可以先不挂载文件启动一波,然后把容器里的文件拷贝出来 docker run -p 19200:9200 …

如何选择一款安全可靠的跨网安全数据交换系统?

随着网络和数据安全的重视程度增加,为了有效地保护内部的核心数据资产,普遍会采用内外网隔离的策略。像国内的政府机构、金融、能源电力、航空航天、医院等关乎国计民生的行业和领域均已进行了网络的隔离,将内部划分成不同的网段,…

扩散模型实战(十四):扩散模型生成音频

推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四&#xff…

点滴生活记录2

我从小跟着我爷爷奶奶,小学六年级转到县城上小学,就没跟我奶奶他们住一起了。十一回家,把奶奶接到我这住,细想,自六年级之后,就很少跟奶奶住一起了。 奶奶(间歇性)耳聋,为…

2023年阿里云云栖大会-核心PPT资料下载

一、峰会简介 历经14届的云栖大会,是云计算产业的建设者、推动者、见证者。2023云栖大会以“科技、国际、年轻”为基调,以“计算,为了无法计算的价值”为主题,发挥科技平台汇聚作用,与云计算全产业链上下游的先锋代表…

DHTMLX Scheduler PRO 6.0.5 Crack

功能丰富的 JavaScript调度程序 DHTMLX Scheduler 是一个 JavaScript 日程安排日历,具有 10 个视图和可定制的界面,用于开发任何类型的日程安排应用程序。 DHTMLX JS 调度程序库的主要特性 我们的 JS 调度程序最需要的功能之一是时间轴视图。借助时间轴…

Ubuntu安装TensorRT

文章目录 1. 安装CUDAa. 下载CUDAb. 安装CUDAc. 验证CUDA 2. 安装CUDNNa. 下载CUDNNb. 安装CUDNNc. 验证CUDNN 3. 安装TensorRTa. 下载TensorRTb. 解压TensorRTc. 安装TensorRTd. 安装uff和graphsurgeone. 验证是否安装成功f. 备注 关注公众号:『AI学习星球』 回复&…

奇点云2023数智科技大会来了,“双12”直播见!

企业数字化进程深入的同时,也在越来越多的新问题中“越陷越深”: 数据暴涨,作业量和分析维度不同以往,即便加了机器,仍然一查就崩; 终于搞定新增渠道数据的OneID融合,又出现几个渠道要变更&…

基于查表法的水流量算法设计与实现

写在前面 本文分享的是一种基于查表法的水流量的算法方案设计与实现,算法简单易懂,主要面向初学者,有两个目的:一是给初学者一些算法设计的思路引导;二是引导初学者学习怎样用C语言编程实现。 一、设计需求 基于“19…

UI自动化测试工具的定义及重要性

UI自动化测试工具在现代软件开发中起着不可或缺的作用。它们能够提高测试效率、减少人为错误、提供全面的测试覆盖,并支持持续集成。通过有效使用UI自动化测试工具,开发团队可以提高软件质量,提供更可靠的应用程序,满足用户的需求…