Rocket MQ 架构介绍

2023-12-12 03:12
文章标签 介绍 架构 mq rocket

本文主要是介绍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

这篇关于Rocket MQ 架构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483041

相关文章

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h