RocketMQ 初步了解

news2024/11/20 15:18:13

RocketMQ 初步了解

前言:

​  近期,因公司使用 RocketMQ 作为消息队列中间件,特此了解。
 RocketMQ 是阿里巴巴在 2012 年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。



1、基本组成

在这里插入图片描述

  • 主题(Topic)
    • 消息传输和存储的顶层容器(逻辑概念)
    • 含一个或多个队列
  • 队列(MessageQueue)
    • 消息存储和传输的实际容器’
  • 消息(Message)
    • 类型:
      • Normal:普通消息
      • FIFO:顺序消息
      • Delay:定时/延时消息
      • Transaction:事务消息
  • 生产者(Producer)
    • 构建并传输消息到服务端的运行实体
    • 传输行为:
      • 发送方式(同步传输/异步传输)
      • 批量发送
      • 事务行为
  • 消费者(Consumer)
    • 接收并处理消息的运行实体
    • 传输行为:
      • 消费者身份:消费者必须关联一个指定的消费者分组
      • 消费者类型:
        • 消费者身份:消费者必须关联一个指定的消费者分组
        • 消费者类型:
          • PushConsumer
          • SimpleConsumer
          • PullConsumer
        • 消费者本地运行配置
          • 消费者根据不同的消费者类型,控制消费者客户端本地的运行配置
  • 消费者分组(ConsumerGroup)
    • 承载多个消费行为一致的消费者的负载均衡分组(逻辑概念)
    • 消费行为:
      • 订阅关系
      • 投递顺序性
      • 消费重试策略
  • 订阅关系(Subscription)
    • 消费者获取消息、处理消息的规则和状态配置
      • 消费过滤规则:过滤消费者需要的消息集合
      • 消费状态:消费者分组在服务端注册订阅关系后,当消费者离线并再次上线后,可以获取离线前的消费进度并继续消费


2、功能特性

2.1、消息发送重试和流控机制

2.1.1、消息重发

触发条件:

  1. 客户端消息发送请求调用失败或请求超时;
  2. 网络异常造成连接失败或请求超时;
  3. 服务端节点处于重启或下线等状态造成连接失败;
  4. 服务端运行慢造成请求超时;
  5. 服务端返回失败错误码。
    1. 系统逻辑错误:因运行逻辑不正确造成的错误;
    2. 系统流控错误:因容量超限造成的流控错误。

2.1.2、流控机制

​  流控机制:指当系统容量或水位过高,MQ 服务端会通过快速失败返回流控错误来避免底层资源承受过高压力

触发条件:

  1. 存储压力大;
  2. 服务端请求任务排队溢出。

2.2、消息过滤

​  消息过滤:指将符合条件的消息投递给消费者,而不是将匹配到的消息过滤掉。


注:

  1. 消费者订阅了某个主题后,MQ 会将该主题中的所有消息投递给消费者。
  2. 消息过滤功能通过生产者和消费者对消息的属性、标签进行定义。

分类:

  • Tag标签过滤
    • 单Tag匹配:过滤表达式为目标Tag,表示只有消息标签为指定目标Tag的消息符合匹配条件,才会被发送给消费者。
    • 多Tag匹配:多个Tag之间为或的关系,(不同Tag间使用 || 隔开,如,Tag1||Tag2||Tag3),表示标签Tag1或Tag2或Tag3的消息都满足匹配条件,都会被发送给消费者进行消费。
    • 全部匹配:使用星号(*)作为全匹配表达式,表示主题下的所有消息都将被发送给消费者进行消费。
  • SQL属性过滤(SQL92语法)
对比项Tag标签过滤SQL属性过滤
过滤目标消息的Tag标签消息的属性,包括自定义属性以及系统属性(Tag是一种系统属性)
过滤能力精准匹配SQL语法匹配
适用场景简单过滤场景、计算逻辑简单轻量复杂过滤场景、计算逻辑较复杂

2.3、负载均衡

​  负载均衡:MQ 通过消费者负载均衡策略,将主题内的消息分配给指定消费者分组中的多个消费者共同分担,进而提高消费并发能力和消费者的水平扩展能力。

模式:

  • 消息粒度负载均衡(PushConsumer、SimpleConsumer 默认使用)
    • 消息随机分配;
    • 基于内部的单条消息确认语义实现(消息被消费时加锁)。

在这里插入图片描述

  • 队列粒度负载均衡(PullConsumer 默认使用)
    • 一个消费者对应一个队列

在这里插入图片描述


2.4、消费进度管理

​  消费进度管理:定义消费者客户端启动后从哪里开始消费,如何标记已消费的消息。

术语:

  • 消息位点(Offset,0 ~ Long.Max):消息在队列中的坐标位置。
  • 最小消息位点(MinOffset):队列中最早一条消息的位点。
  • 最大消息位点(MaxOffset):队列中最新一条消息的位点。
  • 消费位点(ConsumerOffset):消费者消费过的最新一条消息的位点。
  • 消费位点初始值:消费者首次获取消息时,该时刻队列中的最大消息位点。
  • 重置消费位点(功能)
    • 重置到队列中的指定位点;
    • 重置到某一时刻对应的消费位点,匹配位点时,服务端会根据自动匹配到该时刻最接近的消费位点。

在这里插入图片描述


2.5、消息存储和清理机制

  • 消息存储

    • 管理粒度:按存储节点管理消息的存储时长。
    • 判断依据:以存储时间为判断依据。
    • 消息存储与消息是否被消费的状态无关。
  • 消息过期清理机制

    • 消息保存时长并不能完整控制消息的实际保存时间,因为消息存储仍然使用本地磁盘,本地磁盘空间不足时,为保证服务稳定性消息仍然会被强制清理,导致消息的实际保存时长小于设置的保存时长


以上内容总结于 RocketMQ 官方文档

RocketMQ 官方文档链接 https://rocketmq.apache.org/zh/docs/

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

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

相关文章

计算机图形学:中点BH算法对任意斜率的直线扫描转换方法

作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、问题提出二、…

通俗易懂的机器学习——sklearn鸢尾花分类(KNN)

前言 KNN算法是机器学习中较为简单的入门算法,其主要思想是选取k个与待预测点相近的数据,观察他们的类别,本着离谁近就更像谁的思路对于待预测点进行预测,本文将针对使用sklearn进行KNN算法的使用进行详解 数据预处理 在正式开…

测试开发之Django实战示例 第十二章 创建API

第十二章 创建API在上一章里,创建了一个学生注册系统和选课系统。然后创建了展示课程内容的视图,以及学习了如何使用Django缓存框架。在这一章里有如下内容:建立RESTful API管理API视图的认证与权限建立API视图集和路由1创建RESTful API你可能…

【设计模式】创建型模式

简单工厂模式 系列综述: xxxxxxxxx 文章目录对象创建型模式简单(静态)工厂模式工厂方法模式参考博客😊点此到文末惊喜↩︎ 对象创建型模式 简单(静态)工厂模式 抽象原理 抽象产品基类 :定义了…

35岁测试工程师被辞退,给你们一个忠告

一:前言:人生的十字路口静坐反思 入软件测试这一行至今已经10年多,承蒙领导们的照顾与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,再转…

silicon labs平台通过串口升级固件方案

开发环境 windowssimplicity studio 5geck sdk 4.1 一 bootloader 新建BGAPI UART DFU工程 工程新建完成以后看一下linkerfile.ld文件的flash和ram的配置跟自己的application工程是否对应得上 配置串口波特率和引脚 默认使用PB0进入bootloader模式,这里改成Non…

CleanMyMac清理工具软件功能优势介绍

CleanMyMac更新最新版本x4.12,完美适配新版系统macOS10.14,拥有全新的界面。CleanMyMac可以让您安全、智能地扫描和清理整个系统,删除大型未使用的文件,减少iPod库的大小,最精确的应用程序卸载,卸载不必要的…

多传感器融合:MVP和PointPainting

多传感器融合相关的理论真的可以非常复杂,而在感知方面,由于可以和深度学习做结合,所以很多工作可以变得简单有效,有时候一个简单的特征融合都会有很好的效果。本文结合 3D 物体检测,为大家带来两篇工作,一…

城市管网监测系统,保障城市血管生命线!

各种不同的管网线路组成了城市的供血管道,管网对于维持正常的社会生活、生产秩序和公共安全至关重要。我国城市平均漏损率达到38%,部分城市甚至超过50%,远超发达国家的平均水平(10%)。对于管道状态的监测,是…

Unreal Engine08:Pawn的实现

写在前面 Pawn继承于Actor,增加了一些用于控制和提供玩家视角的功能,这里主要是介绍一下Pawn类的实现。 一、创建一个Pawn的C类 创建的C类也是放在Source文件夹中的Public和Private文件夹中;选择Pawn作为继承的父类;头文件中除…

实现博客系统

目录 一、博客系统简介 二、准备工作 三、设计实现数据库 四、封装数据库 创建User类和Blog类 使用JDBC连接数据库 创建BlogDAO类操作数据库中的Blog表 创建UserDAO类操作数据库中的user表 五、实现具体功能 1、实现博客列表页 约定前后端交互接口 服务器端 …

安全运维之mysql基线检查

版本加固 选择稳定版本并及时更新、打补丁。 稳定版本:发行6-12个月以内的偶数版本。 检查方法: 使用sql语句:select version(); 检查结果: 存在问题:当前数据库版本较老需要更新 解决方案:前往http://www.mysql…

2023备战金三银四,Python自动化软件测试面试宝典合集(十四)

15.8 App 的性能测试 内容要点:指标:cpu,内存,电量,流量,FPS,怎么测? cpu,内存,流量 android studiocpu 不能超过 10-20% 普通业务要求在 10%左右,核心的业务…

链表:反转链表、快慢指针、删除链表【零神基础精讲】

来源0x3f:https://space.bilibili.com/206214 文章目录反转链表[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[92. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[25. K 个一组翻转链表](https://leetcode.cn/proble…

新生儿住月子中心20天患败血症 什么是败血症?有哪些危害

12月7日,四川眉山市民唐先生说,他刚出生的儿子在妇产医院分娩中心住了20天后感染了败血症。据唐先生介绍,哈子出院时各项指标正常。他在分娩中心住了半个月左右,孩子喝牛奶异常易怒,第二天开始发烧。当天,在…

(十一)、用户中心页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面 1.1 新建个人中心页面 1.2 纯净版个人中心页面代码&#xff1a; <template><view class"user"><view class"top"><view class"group"><view class"userinfo"><!-- 顶部 左侧 头像 …

Unreal Engine07:Actor的物理特性

写在前面 UE4作为物理引擎&#xff0c;其中一大功能就是能够赋予物体以物理特性。这里将简单介绍一下Actor常用的一些物理特性设置。 一、基本操作 这里介绍一些UE4的Editor基本操作&#xff1b; 1. Actor的变换 将Actor类拖动到地图中&#xff0c;生成实例&#xff1b;鼠…

408强化(二)线性表纯享版

目录 一、顺序表&#xff08;数组&#xff09;和链表总览 二、考情分析 2.1 从历年考情可以看出&#xff0c;如果一个方法出现了第2次&#xff0c;一般是以下情况&#xff1a; 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…

一分钟了解微信公众号服务器配置自动回复

1、建一个web服务工程 2、开放任意一个接口&#xff0c; 比如 /aaa/bbb/ccc 把接口路径配置在这里&#xff0c;ip为公网ip或域名&#xff0c;其他的参数默认&#xff0c;对入门选手没啥用 3、该接口允许get和post两种方式访问&#xff0c;接口需要对于访问方式编写两套逻辑…

ubuntu下如何使用wireshark抓包,保姆级教程

Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…