RocketMq的基本概念

news2024/11/16 6:01:11

在这里插入图片描述


🎶 文章简介:RocketMq的基本概念
💡 创作目的:关于RocketMq的基本概念的大致介绍
☀️ 今日天气:阳光明媚。
📝 每日一言:冬有冬的来意,雪有雪的秘密。


文章目录

  • 🐶 1、Rocket四大部分
    • 🐺 1.1、NameServer (核心部分)
      • 🐱 1.1.1、NameServer路由注册
      • 🐯 1.1.2、NameServer路由剔除
      • 🦒 1.1.3、NameServer路由发现
      • 🦊 1.1.4、NameServer客户端选择策略
    • 🐔 1.2、Broker (消息存储中心)
      • 🐲 1.2.1、模块构成
    • 🐸 1.3、Producer(生产者/发布者)
    • 🐼 1.4、Consumer(消费者/订阅者)

🐶 1、Rocket四大部分

RocketMQ主要有四大核心组成部分:NameServerBrokerProducer以及Consumer四部分。

image-20220620160416671

🐺 1.1、NameServer (核心部分)

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

NameServer 是整个 RocketMQ 的“大脑” ,它是 RocketMQ 的服务注册中心,所以 RocketMQ 需要先启动 NameServer 再启动 Rocket 中的 Broker。

🐱 1.1.1、NameServer路由注册

NameServer通常来说也是以集群的形式来进行部署。但是NameServer是无状态的,也就是说NameServer的集群中各个部分是无差异的,各个节点之间不进行相互通信。

那么集群中各个节点是如何进行同步的呢?

在Borker节点启动之后,它会对NameServer列表进行轮训,与每一个NameServer节点建立连接,发起注册请求,而在NameServer内部也维护着一个Borker列表,用来动态存储Borker的信息。

这样做的优点

NameServer集群搭建很简单!

这样做的缺点

对于Borker必须明确指出所有NameServer地址,否者未指出的将不会进行注册!因此NameServer不能随便扩容

🐯 1.1.2、NameServer路由剔除

如果Borker关机、宕机或网络抖动原因,NameServer没有收到Borker的心跳,NameServer就可能会将其从Borker列表中进行剔除!

NameServer中有一个定时任务,会每隔十秒扫描一次Borker列表,查看每一个Broker的最新心跳时间戳距离当前时间是否超过120s,如果超过则会剔除该borker。

🦒 1.1.3、NameServer路由发现

RocketMq默认使用的是Pull模型。当Topic信息发生变化时,NameServer不会主动推送给客户端,而客户端定时拉取主题最新的路由。默认客户端会每隔30s去拉取一次。

Push模式:推送模型。 实时性比较好,是一个“发布-订阅”模型,需要维护一个长连接。而长链接会需要消耗大量资源。

Pull模型:拉取模型。存在的问题是 实时性比较差!

Long Polling模型:长轮询模型。其是对Push 和 Pull 的整合,充分利用了两种模型的优势,屏蔽了她们的劣势。

长链接:一般用于 实时性要求很高的场景 或者 Client不多,Server数据变化比较频繁的场景

🦊 1.1.4、NameServer客户端选择策略

这里所指的客户端是指 ProducerConsumer

客户端在配置时必须要写上一个NameServer集群的地址,那么客户端到底连接的是哪个NameServer的节点呢?客户端首先会首选一个随机数,然后再与NameServer的节点数取模,此时得到的就是他连接的节点的索引,然后就回去连接对应节点。如果说该节点出现异常无法连接,那么就会采用round-robin策略,逐个去连接其他的节点。

首先采用的是随机策略,连接失败之后采用的是轮询策略

🐔 1.2、Broker (消息存储中心)

消息服务器(Broker)充当着消息中转角色,负责消息存储、转发。

消息服务器(Broker)是消息存储中心,主要作用是接收来自 Producer 的消息并存储,Consumer 从这里取得消息。它还存储与消息相关的元数据,包括用户组、消费进度偏移量、队列信息等。从部署结构图中可以看出 Broker 有 Master 和 Slave 两种类型,Master 既可以写又可以读,Slave不可以写只可以读。

🐲 1.2.1、模块构成

image-20220621134629168

Remoting Moudle:整个Broker的实体,负责处理来自clients端的请求。而Borker实体则由以下模块构成。

Client Manager:客户端管理器。负责接受、解析客户端(Producter/Consumer)请求,管理客户端。例如,维护Consumer的Topic订阅信息。

Store Service:存储服务。提供方便简单的API接口,处理消息存储到物理硬盘消息查询功能。

HA Service:高可用服务,提供 Master BrokerSlave Borker 之间的数据同步功能。

Index Service:索引服务。根据特定的Message Key,对投递到Borker的消息进行索引,同时也提供了快速查询的方式。

🐸 1.3、Producer(生产者/发布者)

也称为消息发布者,负责生产并发送消息至 Topic。
生产者向brokers发送由业务应用程序系统生成的消息。RocketMQ提供了发送:同步、异步和单向(one-way)的多种范例。

🐼 1.4、Consumer(消费者/订阅者)

也称为消息订阅者,负责从 Topic 接收并消费消息。
消费者从brokers那里拉取信息并将其输入应用程序。


在这里插入图片描述

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

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

相关文章

MySQL~DQL查询数据

4、DQL查询数据(最重点) 4.1、DQL (Data Query LANGUAGE:数据查询语言) 所有的查询操作都用它 Select简单的查询,复杂的查询它都能做~数据库中最核心的语言,最重要的语句使用频率最高 SELEC…

Kafka 集群部署与测试

安装Kafka(需要JDK和Zookeeper): 下载Kafka安装包,并解压至node01节点中的/opt/apps目录下。修改配置文件。在server.properties配置文件中指定broker编号、Kafka运行日志存放的路径、指定Zookeeper地址和本地IP。添加环境变量。在/etc/prof…

[ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2018-19475

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

【IDEA】# 快速生成logger、通过Maven的profile配置实现环境的快速切换、常用基础设置

1. 快速生成logger 打开 Settings,找到 Editor 目录下的 Live Templates 选中 Java,点击右侧的加号,创建一个新的模板 在创建模板的相关位置,填上对应的值 Abbreviation:触发的关键字(此处我使用的是 l…

Postman进阶篇(十二)-在脚本中使用pm对象访问接口响应数据(pm.response.*)

在之前的文章中介绍过postman中的两个脚本——pre-request script或test script,在这两个脚本中都有使用到pm对象。(pre-request script详细介绍、Test script详细介绍)pm对象是在postman的脚本中非常重要,也是十分常用的方法。本…

SpringCloud学习笔记 - Nacos配置中心搭建 - Nacos Config

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 Spring Cloud Alibaba Nac…

Volo - Rust gRPC 框架入门

一、参考资料 Volo-GitHub Volo-Overview 二、开发环境搭建 1、安装脚手架 # 安装 volo-cli cargo install volo-cli # 验证安装 volo help 2、编写 IDL # 文件 volo_demo.protosyntax "proto3"; package volo.demo;message Item {int64 id 1;string title …

React学习26(react-redux优化 工作使用)

项目结构 优化说明 1&#xff09;容器组件和UI组件混合成一个文件 2&#xff09;无需自己给容器传递store&#xff0c;在index.js入口文件给包裹一个Provider <Provider store {store}><App/> </Provider> 3&#xff09;使用了react-redux后也不用自己在…

Python入门教程:基本运算符

1.运算符 计算机可以进行的运算有很多种&#xff0c;可不只加减乘除这么简单&#xff0c;运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算&#xff0c;今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算、成员运算 2.算数运算 …

数据聚合、数据同步

文章目录数据聚合Bucket聚合语法聚合结果排序限定聚合范围Metric聚合语法RestAPI实现聚合数据同步发送MQ消息接收MQ消息数据聚合 Bucket聚合语法 GET /hotel/_search {"size": 0, // 设置size为0&#xff0c;结果中 不包含文档&#xff0c;只包含聚合结果~"…

Spark-内核(集群管理器、通讯架构、任务调度机制、Shuffle、内存管理)

文章目录Spark内核Spark部署模式的集群管理器YARN模式运行机制Standalone模式运行机制Spark通讯架构通信架构概述通讯架构解析Spark任务调度机制任务调度概述Stage级调度Spark Task级调度调度策略本地化调度失败重试与黑名单机制Spark Shuffle解析ShuffleMapStage与ResultStage…

SpringCloud微服务之Zuul网关

SpringCloud微服务之Zuul网关 家庭生活中经常有这样的感悟&#xff0c;家中的财政大权在老婆手里&#xff0c;想要花个小钱买个冰棍&#xff0c;得跟老婆请示&#xff0c;想要出个远门看看北京猿人&#xff0c;得跟老婆请示&#xff0c;想不要脸面去个夜店看看别的妞好在哪里&…

代码随想录第九天

专题&#xff1a;字符串 题目&#xff1a;字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如&#xff0c;输入字符串"abcdefg"和数字2&#xff0c;该函数将返回左旋转两位得到的结果"cdefgab&…

ADI Blackfin DSP处理器-BF533的开发详解56:CVBS输入-DSP和ADV7180的MDMA用法(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS IN视频输出 代码实现功能 电视视频是奇场合偶场交替传输的&#xff0c;所以通过 CVBSIN 模块采集到的图像如上实验所看到的&#xff0c;是…

CentOS 7.6 安装与配置 MySql 5.7.40

1 通过wget下载MySql的rpm # wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm2 检查是否存在MySql的repo # cd /etc/yum.repos.d/ # ls CentOS-Base.repo CentOS-Epel.repo可以看到没有MySql的repo 3 安装MySql的repo&#xff0c;并查看是否安…

React 生命周期

React 生命周期 这篇文章&#xff0c;我们来聊一聊在React中的生命周期。首先我们明确一点&#xff0c;在React中&#xff0c;函数式组件是没有生命周期的。谈到生命周期&#xff0c;都是关于类组件的&#xff01; 生命周期官方网址 React.Component – React (docschina.or…

macOS Monterey 12.6.2 (21G320) Boot ISO 原版可引导镜像

macOS Monterey 12.6&#xff0c;皆为安全更新&#xff0c;不再赘述。 macOS Monterey 12.6&#xff0c;发布于 2022 年 9 月 12 日&#xff08;北京时间今日凌晨&#xff09;&#xff0c;本次为安全更新。 今日&#xff08;2022-07-21&#xff09;凌晨&#xff0c;Apple 终于…

CentOS 8:SSH远程登录

SSH远程登录 SSH远程登录&#xff0c;也是 C / S 模式 服务端&#xff1a;sshd &#xff0c;默认是启动的 systemctl status sshd systemctl start sshd SecureCRT 是打开了一个远程终端 注意&#xff1a;在终端环境里&#xff0c;不可以启动GUI程序 例如&#xff0c;在 …

【单片机】DS1302时钟/蜂鸣器

目录 一、DS1302时钟 1、DS1302时钟的介绍 2、DS1302时钟寄存器 3、DS1302时序图 4、BCD码 5、写一个时钟 6、写一个可调时钟 二、蜂鸣器 1、蜂鸣器的介绍​编辑 2、三极管放大驱动蜂鸣器 2.1NPN三极管工作原理&#xff08;基极电流和发射电流均流向集电区&#xff…

Python图像识别实战(二):实现批量图像读取和像素转换(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个关于图像识别的…