RocketMQ的架构设计

news/2024/5/5 20:56:46/文章来源:https://blog.csdn.net/qq_57756904/article/details/126591363

目录

1 、技术架构

2、部署架构

2.1、RocketMQ 网络部署特点

2.2、结合部署架构图,描述集群工作流程:


1 、技术架构

 

RocketMQ架构上主要分为四部分,如上图所示:

  • Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。

  • Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。

  • NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;路由信息管理,每个NameServer将保存关于Broker集群的整个路由信息和用于客户端查询的队列信息。然后Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。NameServer通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,Broker仍然可以向其它NameServer同步其路由信息,Producer和Consumer仍然可以动态感知Broker的路由的信息。 

  • BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker包含了以下几个重要子模块。

    1. Remoting Module:整个Broker的实体,负责处理来自Client端的请求。
    2. Client Manager:负责管理客户端(Producer/Consumer)和维护Consumer的Topic订阅信息。
    3. Store Service:提供方便简单的API接口处理消息存储到物理硬盘和查询功能。
    4. HA Service:高可用服务,提供Master Broker 和 Slave Broker之间的数据同步功能。
    5. Index Service:根据特定的Message key对投递到Broker的消息进行索引服务,以提供消息的快速查询。

 

2、部署架构

2.1、RocketMQ 网络部署特点

  • NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

  • Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。 注意:当前RocketMQ版本在部署架构上支持一Master多Slave,但只有BrokerId=1的从服务器才会参与消息的读负载。

  • Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息,并向提供Topic 服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。

  • Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,消费者在向Master拉取消息时,Master服务器会根据拉取偏移量与最大偏移量的距离(判断是否读老消息,产生读I/O),以及从服务器是否可读等因素建议下一次是从Master还是Slave拉取。

2.2、结合部署架构图,描述集群工作流程:

  • 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相当于一个路由控制中心。
  • Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关系。
  • 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。
  • Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建立长连接从而向Broker发消息。
  • Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些Broker上,然后直接跟Broker建立连接通道,开始消费消息。

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

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

相关文章

图神经网络(三):数学基础

一.复数空间 在实数空间中,加法、减法可以看成是沿数轴的左右平移,乘法、除法可以看成是沿数轴的拉伸和压缩。但是在现实生活中除了平移和缩放以外,还存在旋转。在复数发明之前,处理旋转问题是非常麻烦的。 1.复数的定义 i2i^2i…

yolo系列之yolov3(3)

文章目录前言v3改动backBone先验框的设定改变特征图的提取loss函数的修改softmax 改进MSE 和交叉熵损失函数前言 v1和v2可以参考前两篇文章v1:https://blog.csdn.net/monk96/article/details/126603180?spm1001.2014.3001.5502v2:https://blog.csdn.net/monk96/ar…

Redis 非关系型数据库学习(三)---- Redis 基础知识

文章目录Redis 非关系型数据库学习(三)---- Redis 基础知识(1)Redis 数据库select 切换当前数据库Dbsize 查看数据库key数量(2)查看数据库的keykeys [partten](3)清除数据库的 keyfl…

【沐风老师】3DMAX散布插件scat_pro v1.1使用教程

【ScatPro简介】 3DMAX超级散布插件ScatPro是一个max脚本小工具,可以帮助你散布3D对象到曲面。在家具建模、建筑建模方面都有很大的帮助,可以提高工作效率。 ScatPro插件非常适合编织类建模,这将大大解放我们的双手,提高工作效率…

http和tcp

http http - 浏览器和服务器交互的超文本传输协议 https - http ssl (建安全通道,确保数据传输,网站真实性) http 80 身份容易被伪装 内容容易被篡改窃取 收集流动的数据包且解析,可以交给抓包工具 Https 443 需证书费用高 对传输内容进行加密 身份认证…

【RabbitMQ学习笔记】第一章 MQ的基本概念

文章目录1、MQ概述2、MQ的优势3、MQ的劣势4、常见的MQ产品1、MQ概述 MQ全称Message Queue,消息队列,是在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。 2、MQ的优势 总结六个字: 解耦、异步、削峰 优势说明…

2022几款开源的态势感知、攻击监控、日志分析等平台调研

目录态势感知、攻击监控、日志分析等平台调研一. OSSIM开源安全信息管理系统功能展示主界面1. DASHBOARDS模块a. OverViewb.Deployment status:资产部署的分类及状态信息c. Risk Mapsd. Open Threat Exchang:在地图中显示OTX变化趋势及IP信誉2. ANALYSIS…

javaweb JAVA JSP汽车销售系统商城购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上汽车

JSP汽车销售系统商城购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上汽车

打破平台限制,小程序如何在硬件设备上运行?

在小程序技术日益成熟、生态日益善的前景下,运营者们发现小程序“即用即走、轻量开发”的特点非常契合各种硬件设备的使用场景;开发者们对“一次开发,多端运行”的诉求也变得越来越强烈。 当前在微信、百度、支付宝、今日头条等各大巨头都把…

解决Oracle报错ORA-01403: 未找到任何数据

发现问题 今天在执行某个存储过程的时候,遇到一个报错,提示我ORA-01403: 未找到任何数据 如图所示 问题分析 因为我的报错信息表里有记录着具体的报错位置,所以我很快的能够定位到问题所在,感觉这样找问题真的挺方便的&#x…

NGINX基础知识:从零开始配置高性能服务器

NGINX基础知识:从零开始配置高性能服务器 学习从头开始安装和配置 NGINX Web 服务器。 课程英文名:NGINX Fundamentals High Performance Servers from Scratch 此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源…

modbus如何添加从机以IO模块举列

连接部分 把两台MXXT设备都使用网线,连接到同一个交换机里面。找一台电脑也连接同交换机或者同局域网内。 软件设置 电脑上打开我们的MXXT配置软件。 点击左上角搜索设备。如上图,我们先双击192.168.1.130.默认密码:1234点确定,进…

云原生中间件RocketMQ-核心原理之同步_异步刷盘,同步_异步复制解析

文章目录发送逻辑消费逻辑刷盘机制同步刷盘异步刷盘配置同步/异步复制解析异步复制同步复制配置推荐使用发送逻辑 发送时,Producer将不同topic的所有消息都会顺序写入Commit Log中,Broker端的后台服务线程—ReputMessageService不停地分发请求并异步构建…

远程连接elasticsearch

做分布式或者集群的时候,需要对elasticsearch做些配置才可以通过端口访问,我这里是以阿里云为例。 前置要有java环境变量。 在阿里云安全组里面开放9200和9300端口,9200用于测试端口是否连上和查看状态。 elasticsearch国内镜像:…

在线客服系统的优势

对于各电商企业来说,在线客服作为直接触达客户的门面,起着至关重要的作用,而优质的话术可以起到催化剂的作用,而快捷回复就是必备工具。 前言 对于各电商企业来说,在线客服作为直接触达客户的门面,起着至关…

深入Spring Boot :整合Redis详解

Spring Boot为Redis的Lettuce和Jedis客户端库提供了基本的自动配置,并且可以使用Spring Data Redis完成更多的操作。本篇将介绍如何整合Redis及使用Redis实现简单的查询缓存,主要包括以下7部分内容: 缓存 Redis Lettuce Spring Data Redis…

瑞吉外卖 —— 2、后台登录和登出

1、后台登录功能 1.1、接口分析 通过浏览器调试工具 F12 可以发现,在登录页面点击登录后,发送 POST 请求 http://localhost:8080/employee/login ,并将输入的账号和密码信息以 JSON 格式发送给后台 前端校验代码如下: 1.1.2、登…

Hadoop源码解析之Mapper数量计算公式

前言 据说,自0.20.0版本开始,Hadoop同时提供了新旧两套MapReduce API,并在后续版本中也同时支持这两种API的使用。新版本MR API在旧的基础进行了扩展,也制定了新的split计算方式。新版本MR API在包org.apache.hadoop.mapreduce及…

Python基于Django的汽车销售网站

本汽车销售商城采用的数据库是Mysql,使用Django框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 汽车销售商城主要是为了提高工作人员的工作效率和更方便快捷的满足用户…

Win7下安装Docker(虚拟机win7)

在虚拟机VM里面安装一个win7用于安装Docker docker-toolbox-windows-docker-toolbox安装包下载_开源镜像站-阿里云 直接下载圈起来的这个就好了 直接拷贝到虚拟机系统win7里面安装,全部勾起来直接下一步安装即可 安装好后,会有三个图标 直接点击Dock…