RocketMQ的架构及概念

2023-11-17

RocketMQ就是一个消息中间键用于实现异步传输解耦

那什么是消息中间键呢?

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

RocketMQ就是一种中间键 ,如下图所示为MQ的架构:

在上图中整体可以分为4个角色,分别是:NameServer, Broker, Producer, Consumer 

  • 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: 
    • ​​​​​​​消息的载体

MQ里面肯定包含了我们的消息生产者(producer)和消息消费者(consumer),对我们来说这就是两个服务,即两个应用程序,这两个应用程序之前要传信息都是直传,但是直传都是同步传输且耦合性较高。

所以我们引入了中间件MQ,MQ中它首先包含一个NameServer 的核心对象,这个NameServer不需要我们人工来进行创建,MQ只要一跑通就识别有了。NameServer就相当于所有快递站点的管理者(即一个总的快递站点),是一个协调调度者,是整个MQ最核心的一个全局对象,用来管理所有的快递站点。

Broker就相当于一个真实的快递站点或是一个快递员,未来它会帮你创建好快递站点并按照你的消息数据委派给对应的快递员进行数据的传递。那我们可以有多个Broker ,那么多个Broker之间我们要来进行数据的传递和数据的管理,就要用NameServer来进行管理,Broker是真正用来实现快递传输的。

在Broker的下一级还有几个角色,例如Topic,可以理解为我们的地区,一个快递员或一个站点可以负责一个或多个地区,所以一个Broker可以有多个Topic。

Topic里面有Message queue,这个可以理解为一个消息包裹,Topic一个地区可以有多个包裹,而一个Message queue里面又包含了很多message,很多信息。

消息的发送和接收 

发送同步消息:

这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知,短信通知

消息发送步骤:

1. 创建消息生产者, 指定生产者所属的组名

2. 指定Nameserver地址

3. 启动生产者

4. 创建消息对象,指定主题、标签和消息体

5. 发送消息

6. 关闭生产者

发送异步消息: 

异步消息通常用在对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker的响应。

单向发送消息: 

这种方式主要用在不特别关心发送结果的场景,例如日志发送。

 消费消息:

1. 负载均衡模式(默认方式)

消费者采用负载均衡方式消费消息,多个消费者共同消费队列消息,每个消费者处理的消息不同

2. 广播模式 消费者采用广播的方式消费消息,每个消费者消费的消息都是相同的

//广播模式消费
consumer.setMessageModel(MessageModel.BROADCASTING);
发送方式 发送TPS 发送结果反馈 可靠性
同步发送 不丢失
异步发送 可能丢失
单向发送 可能丢失

 

 

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

RocketMQ的架构及概念 的相关文章

  • 什么是架构,架构的本质是什么

    不论是开发人员还是架构师 我们都一直在跟软件系统打交道 架构是在工作中出现最频繁的术语之一 那么 到底什么是架构 你可能有自己的答案 也有可能没有答案 对 架构 的理解需要我们不断在实践中思考 归纳 演绎 形成自己的认知 一 什么是软件架构
  • HarmonyOS-开发避坑指南——源码下载和编译,企业级项目实战讲解

    安装文件系统打包工具 运行 mkfs vfat 如果未找到该命令 需要安装 运行 mcopy 如果未找到该命令 需要安装 sudo apt get install dosfstools mtools 官方文档说明的两个文件系统打包工具sud
  • springboot-rocketmq日志rocketmq_client.log问题

    问题描述 springboot配置rocketmq后 会写入日志到rocketmqlogs目录下的rocketmq client log文件中 且日志过于庞大 解决 1 启动类增加代码 System setProperty ClientLo
  • RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

    1 大多数是配置问题 修改rocketmq文件夹broker conf 2 配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈 主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的 Ro
  • Chromium多进程架构,你知道多少?

    一 前言 国内外主流的浏览器 大多采用的是谷歌的Chromium 浏览器内核 Chromium是一个多进程多线程架构的Web引擎 很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途 以便能利用相关信息提升应用的性能 为此
  • 阿里云大佬告诉你为什么学不会设计模式,归根到底还是方法不对

    最近总有读者在后台跟我说 工作几年 自己的代码质量似乎没有什么提升 我觉得他的情况非常典型 很多人应该或多或少都有过类似的经历 毕业几年 几乎一直在做复制黏贴的工作 偶尔会遇到原有业务扩展的需求 想简单应付一下完事的话 也不难 无非就是多加
  • API架构的选择,RESTful、GraphQL还是gRPC

    文章目录 一 RESTful 1 什么是RESTful 2 RESTful架构的原则 3 RESTful的适用场景 4 RESTful的优点 5 RESTful的缺点 二 GraphQL 1 什么是GraphQL 2 GraphQL的原则
  • ARM架构学习(二)——流水线

    本期主题 ARM流水线 往期地址 ARMv7架构学习 ARM流水线 1 流水线概念 2 指令的分解步骤 1 流水线概念 硬件资源总是有限的 有一个明显的方法能改善硬件资源的利用率 这就是pipeline 流水线 技术 其实就是在当前指令结束
  • 数据湖--概念、特征、架构与案例概述

    一 什么是数据湖 数据湖是目前比较热的一个概念 许多企业都在构建或者计划构建自己的数据湖 但是在计划构建数据湖之前 搞清楚什么是数据湖 明确一个数据湖项目的基本组成 进而设计数据湖的基本架构 对于数据湖的构建至关重要 关于什么是数据湖 有如
  • Keycloak概述

    这里写自定义目录标题 Keycloak概述 Single Sign On Kerberos 社交登录 用户合并 客户端适配 管理控制台 用户管理控制台 标准协议 授权服务 Getting Started Keycloak概述 keycloa
  • 4大主流CPU处理器技术架构

    推荐阅读 浅谈linux 内核网络 sk buff 之克隆与复制 深入linux内核架构 进程 线程 了解Docker 依赖的linux内核技术 导读 RISC 精简指令集计算机 是一种执行较少类型计算机指令的微处理器 起源于80年代的MI
  • 分布式系统详解--基础知识(通信)

    分布式系统详解 基础知识 通信 上一篇文章我们写到了 分布式系统详解 基础知识 线程 简单了解了一下线程的基本概念和线程和分布式的那斩不断理还乱的关系 今天再讲解一下它的另外一个必备知识 通信 进程之间进行通信是分布式的核心 失去了通信 也
  • 深入微服务架构 | 微服务与k8s架构解读

    微服务项目架构解读 什么是微服务 微服务是指开发一个单个小型的但有业务功能的服务 每个服务都有自己的处理和轻量通讯机制 可以部署在单个或多个服务器上 微服务也指一种种松耦合的 有一定的有界上下文的面向服务架构 也就是说 如果每个服务都要同时
  • 网盘系统设计:万亿 GB 网盘如何实现秒传与限速?

    Java全能学习面试指南 https javaxiaobear cn 网盘 又称云盘 是提供文件托管和文件上传 下载服务的网站 File hostingservice 人们通过网盘保管自己拍摄的照片 视频 通过网盘和他人共享文件 已经成为了
  • GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

    这章是接上一章 使用 RPC包 序列化中没有详细去讲 因为这一块需要看的和学习的地方很多 并且这一块是RPC中可以说是最重要的一块 也是性能的重要影响因子 今天这篇主要会讲其使用方式 文章目录 Protocol Buffers V3 背景以
  • 阿里P8架构师带你“一窥”大型网站架构的主要技术挑战和解决方案

    写在前面 传统的企业应用系统主要面对的技术挑战是处理复杂凌乱 千变万化的所谓业务逻辑 而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理 前者的挑战来自功能性需求 后者的挑战来自非功能性需求 功能性需求也许还有 人月神话 聊
  • 微服务常见的配置中心简介

    微服务架构中 常见的配置中心包括以下几种 Spring Cloud Config Spring Cloud Config是官方推荐的配置中心解决方案 它支持将配置文件存储在Git SVN等版本控制系统中 通过提供RESTful API 各个
  • 【技术科普】什么是达芬奇架构?有什么优势?

    芯片架构是指芯片设计的基本结构和组织方式 用于实现各种计算 存储和通信功能 芯片架构通常包括处理器核心 内存 输入输出接口等组成部分 这些部分的设计对芯片性能和功耗有着直接的影响 世界上主流的芯片架构主要包括x86 ARM PowerPC和
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • [机缘参悟-132] :《洞见》:为什么佛学是真的 -3- 冥想,洞见自己的内心

    目录 一 佛家修行的方法 二 冥想 2 1 冥想步骤 2 2 冥想的好处 2 3 冥想的方法 一 佛家修行的方法 佛教修行是指追求智慧 慈悲和解脱 以最终实现觉悟和解脱的过程 它包含了广泛的修行方法 以下是一些常见的佛教修行方法 冥想 冥想

随机推荐

  • Springboot 集成 RabbitMq 实现消息确认机制

    消息确认主要分为两种 发送确认 发送确认包含两种情况 一种是消息是否到达交换机 一种是消息是否到达队列 接收确认 一 发送方消息确认 1 ConfirmCallback 接口 配置文件需要开启配置 publisher confirm typ
  • Linux系统中如何彻底隐藏一个TCP连接?

    前面的文章中 我稍微描述了一下如何隐藏一个TCP连接 https blog csdn net dog250 article details 105372214 在上文中 我采用了 传统 的做法 即hook住proc的 proc net tc
  • [Kubernetes]谈谈容器跨主机网络

    继上篇文章 Kubernetes 浅谈容器网络 自己给自己挖的坑 这篇文章来谈谈容器跨主机网络 要理解容器 跨主通信 的原理 就要来谈谈 Flannel 这个项目 Flannel 项目是 CoreOS 公司主推的容器网络方案 提供容器网络功
  • C#后端代码处理excel,按条件给单元格设置格式

    有时候在一些自定义场景下我们需要给excel表格打上标签格式 比如说财务想给每个月花费最高和最低员工打上标记 在输出表格时内容就已经处理完毕 准备工作 首先 下载Spire xls功能类库 点击这里下载 然后 在后端代码引入命名空间 usi
  • hive的压缩存储格式

    1 5种存储格式 Apache Hive支持Apache Hadoop中使用的几种熟悉的文件格式 如TextFile RCFile SequenceFile AVRO ORC和Parquet格式 Cloudera Impala也支持这些文件
  • Fsm1s

    This is a Moore state machine with two states one input and one output Implement this state machine Notice that the rese
  • C++实现设计模式之观察者模式

    什么是观察者模式 观察者模式是一种一对多的以来关系 当一个对象的状态发生改变时 所有依赖于他的对象都得到通知并被自动更新 它的主体是通知的发布者 发出通知时并不需要知道谁是它的观察者 可以有任意数目的观察者订阅并接收通知 将观察者和被观察的
  • docker 打包镜像部署

    dockerfile 直接复制粘贴 把jar包位置改一下就行 设置本镜像需要使用的基础镜像 FROM java 11 FROM openjdk 11 把jar包添加到镜像中 ADD ip v1 jar app jar 镜像暴露的端口 EXP
  • Ubuntu 更换国内源

    Ubuntu系统自带的源都是国外的网址 国内用户在使用的时候网速比较慢 一个软件的下载是十分痛苦的 这里讲解一下如何将国外源更换为国内源 让你的网速Biu Biu Biu c如果想快速切换国内源强烈推荐 gt gt gt gt Ubuntu
  • 2012年9月开学季CSDN高校俱乐部专家巡讲讲师招募

    基本介绍 CSDN高校俱乐部CSDN高校俱乐部 以下称 俱乐部 是一个非盈利性的 面向全国IT专业大学生的技术组织 辐射全国数百所高校 俱乐部吸引到来自各高校对程序开发怀有强烈热情的大学生 以线上论坛线下活动形式开展学生之间 学生与导师之间
  • [linux命令]zsh: command not found: npm

    问题 zsh command not found npm 解决 重装node js 注意版本
  • 【C语言开源项目】tinyhttpd ——下载、安装、使用

    前言 本系列将带领大家看一些C语言的优秀的开源项目 并逐步深入讲解源码 感兴趣的可以点击关注 收藏 有问题及时在评论区评论 Tinyhttpd 介绍 Tinyhttpd 是一个非常轻量级的 web server 总共只有500多行代码 非常
  • js用正则取${}中的值

    js使用正则表达式获取 变量名 中的变量名 1 需求 从 124fddr32 3532 253 23354 233 k 545xx54 666 233545xxxxx 这类字符串中获取 中的内容 注意 的个数是不确定的 一 使用match的
  • 2021-06-30 nginx 80端口http转发非443端口https

    nginx 80端口http转发非443端口https 图一张 不解之处 图一张 不解之处 没有系统学习过nginx 不懂为何第二种写法不行
  • 用C语言实现一个简单的静态栈

    栈是我们经常会用到的一种数据结构 下面我们就来看一下如何使用C语言来实现一个静态栈 并且使用它来解决一个经典的问题 括号匹配问题 首先我们来看一下栈的自定义类型 我们需要一个数组来存放栈中的元素 并且需要一个数字来表明目前栈顶所在的位置 所
  • mysql同时插入两个字段_mysql 怎么给一个表一次增加多个字段? ?

    DIEA mysql为一个表增加多个字段的语法为 ALTER TABLE 表名 ADD COLUMN 字段名1 数据类型 长度 DEFAULT NULL ADD COLUMN 字段名2 数据类型 长度 DEFAULT NULL 其中 def
  • 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

    http www cnblogs com rushuizhijing archive 2011 08 26 2154737 html 深入理解const char p char const p char const p const char
  • flutter生命周期

    原文地址 https www jianshu com p 7e8dff26f81a Flutter跟安卓的Activity iOS的ViewController一样拥有自己的生命周期 Flutter中一切都是Widget 渲染方式有点像H5
  • Matlab 随机采样

    Matlab 随机采样 随机采样是统计学和数据分析中常用的一种方法 可以用来生成代表性的样本数据 在 Matlab 中 我们可以通过 rand 函数来实现随机采样 下面我们来介绍几种常见的随机采样方法及其实现 简单随机采样 简单随机采样是最
  • RocketMQ的架构及概念

    RocketMQ就是一个消息中间键用于实现异步传输与解耦 那什么是消息中间键呢 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流 并基于数据通信来进行分布式系统的集成 通过提供消息传递和消息排队模型 它可以在分布式环境下扩展进程间