RocketMQ 初步了解
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、消息重发
触发条件:
- 客户端消息发送请求调用失败或请求超时;
- 网络异常造成连接失败或请求超时;
- 服务端节点处于重启或下线等状态造成连接失败;
- 服务端运行慢造成请求超时;
- 服务端返回失败错误码。
- 系统逻辑错误:因运行逻辑不正确造成的错误;
- 系统流控错误:因容量超限造成的流控错误。
2.1.2、流控机制
流控机制:指当系统容量或水位过高,MQ 服务端会通过快速失败返回流控错误来避免底层资源承受过高压力
触发条件:
- 存储压力大;
- 服务端请求任务排队溢出。
2.2、消息过滤
消息过滤:指将符合条件的消息投递给消费者,而不是将匹配到的消息过滤掉。
注:
- 消费者订阅了某个主题后,MQ 会将该主题中的所有消息投递给消费者。
- 消息过滤功能通过生产者和消费者对消息的属性、标签进行定义。
分类:
- 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/
相关文章:
RocketMQ 初步了解
RocketMQ 初步了解 前言: 近期,因公司使用 RocketMQ 作为消息队列中间件,特此了解。 RocketMQ 是阿里巴巴在 2012 年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量…...
Mac下PyCharm快捷键
Mac键盘符号和修饰键说明 ⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(FnDelete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头⇞ Page Up(Fn↑)⇟ Page Down(Fn↓)Home Fn …...
城市管网监测系统,保障城市血管生命线!
各种不同的管网线路组成了城市的供血管道,管网对于维持正常的社会生活、生产秩序和公共安全至关重要。我国城市平均漏损率达到38%,部分城市甚至超过50%,远超发达国家的平均水平(10%)。对于管道状态的监测,是…...
Web3中文|1月数据显示复苏迹象,涉及NFT、DeFi、Dapp、链游……
本期看点 1、Dapp行业概述 2、DeFi的TVL增长26.8%,有回暖迹象 3、NFT市场数据飙升,交易额达9.46亿美元 4、链游使用量占行业48% 5、与去年相比,1月份区块链漏洞损失最低 区块链领域正在多元化发展,2023年1月,从各…...
MySQL索引的介绍以及优缺点
1.索引简介 索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。 使用索引可以快速找出在某个或多个列中有一特定值的行,所有MySQL列类型都可以被索引,对相关列使用索引是提高查询操作速度的最佳途径。 索…...
Java_小项目书城
1.概述 书城的基本功能: 展示书籍上新书籍下架书籍退出应用 书城项目所涉及到的知识点: 用户交互–键盘录入分支结构,循环结构面向对象的思维,封装对象集合的使用 2.菜单的编写 这部分代码就是读取用户键盘的录入࿰…...
Unreal Engine08:Pawn的实现
写在前面 Pawn继承于Actor,增加了一些用于控制和提供玩家视角的功能,这里主要是介绍一下Pawn类的实现。 一、创建一个Pawn的C类 创建的C类也是放在Source文件夹中的Public和Private文件夹中;选择Pawn作为继承的父类;头文件中除…...
408强化(二)线性表纯享版
目录 一、顺序表(数组)和链表总览 二、考情分析 2.1 从历年考情可以看出,如果一个方法出现了第2次,一般是以下情况: 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…...
ubuntu下如何使用wireshark抓包,保姆级教程
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…...
世界上最健康的程序员作息表!「值得一看」
昨晚看了一篇“传说中”的“世界上最健康的作息时间表”,开始纠结自己还要不要5点半起床。 都说程序员这一行,猝死概率极高,究其原因还是加班太狠、作息不规律、缺乏运动… 今天和大家分享一下这篇文章,还是非常值得参考的&#…...
Java中多继承的实现
1 问题Java是一种面向对象的只允许单继承的语言,那么怎样在Java中实现多继承呢?2 方法多层继承如果要直接继承类,子类是不可以直接多继承的,但是可以通过多层继承来实现多继承,但多层继承一般不建议超过三次。接口接口…...
蓝桥杯 stm32 USART 串口发送数据
文章代码使用 HAL 库。 文章目录 前言一、串口原理图二、CubeMX 创建工程。三、串口发送函数:四、串口助手 配置:五、详细代码:注意:连续发送数据六、printf 重定向问题代码示例:实验效果:总结前言 USART : ( Universal Synchronous/Asynchronous Receiver/Transmitter…...
Spring之AOP底层源码解析
Spring之AOP底层源码解析 1、动态代理 代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。 举个例子 public class UserService {public void test() {System.out.println("test.…...
人脸识别——景联文科技提供3D头模数据采集业务!
“拿起手机刷脸解锁、上下班考勤、支付订单,刷脸已极大地便利了我们的生活。清华大学新闻学院教授沈阳表示,中国人平均每天要暴露在各种摄像头下超过500次。人脸识别已成了我们生活中重要的一部分。由于2D人脸识别容易受到姿态、表情、光照等因素影响&am…...
SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka
最近做的一个项目,使用的是pg数据库,公司没有成熟的DCD组件,为了实现数据变更消息发布的功能,我使用SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka。 一、业务价值 监听数据变化,进行异步通知…...
酷开系统壁纸模式,将氛围感死死拿捏!
古希腊哲学家柏拉图曾经说过:“美感是起于视觉、听觉产生的快感,以人的感官所能达到的范围为极限。”而电视则恰恰就是视觉听觉的完美融合体,当一台开启的电视可以给我们带来视听享受的时候,一台待机状态下的电视又如何取悦于我们…...
第0章 一些你可能正感到迷惑的问题
操作系统是什么 操作系统是控制管理计算机系统的硬软件,分配调度资源的系统软件。 由操作系统把资源获取到后台给用户进程,但为了保护计算机系统不被损坏,不允许用户进程直接访问硬件资源。 操作系统相当于是一个分配资源的机构,…...
MYSQL实战
SQL的处理 缓存解析查询优化(查询优化器) 重写查询;表的读取顺序;选择索引1.不要在索引上做任何操作 表达式函数 2.尽量全值匹配 联合索引中搜素条件后会根据最优条件排序进行查询,联合索引尽量都使用起来。搜索条…...
少儿户外拓展北斗定位解决方案
一、项目背景户外拓展训练是指通过专业的机构,对久居城市的人进行的一种野外生存训练。拓展训练通常利用崇山峻岭、翰海大川等自然环境,通过精心设计的活动达到“磨练意志、陶冶情操、完善人格、熔炼团队”的培训目的。针对户外拓展人员安全管理存在的实…...
更换ssl证书
更换ssl证书常用证书查看以及转换网址阿里云判断流量以及配置证书判断接入点阿里云控制台配置证书WAFAzure判断流量以及配置证书:判断接入点Azure配置证书CDNAPP GateWay常用证书查看以及转换网址 https://www.chinassl.net/ssltools/convert-ssl.htmlhttps://myss…...
线程池源码解析项目中如何配置线程池
目录 基础回顾 线程池执行任务流程 简单使用 构造函数 execute方法 execute中出现的ctl属性 execute中出现的addWorker方法 addWorker中出现的addWorkerFailed方法 addWorker中出现的Worker类 Worker类中run方法出现的runWorker方法 runWorker中出现的getTask runWo…...
Echarts 更改K线度颜色,解释K线图4个数字意义
第019个点击查看专栏目录本示例修改K线度的颜色,方法参考源代码。 这里面讲一下K线图的四个数字,如[20, 34, 10, 38], 第一位:20代表开盘价格, 第二位:34代表闭盘价格, 第三位:10代表最低价&…...
JavaScript和Java两种方法实现百度地图和高德、腾讯地图的相互转换
目录一、常见的经纬度标准二、百度地图和高德、腾讯地图经纬度的转换1、前端JavaScript转换2、后端Java实现转换一、常见的经纬度标准 高德、腾讯(使用GCJ02) GCJ-02坐标系,也称火星坐标系,由中国国家测绘局在02年发布࿰…...
Vue中常见的几种组件间通信方法
1.props(父传子) 父组件Parent.vue <template><child :msg"message"></child> </template>父组件通过:val"value"的形式定义要传给子组件的值value绑定到val上 子组件Child.vue export default {//写法一…...
Outcome VS. Output:研发效能提升中,谁会更胜一筹?
2007 年,网景通信公司(Netscape)的联合创始人 Marc Andreessen 在博客 The Pmarca Guide to Startups 中提出 「Product/Market Fit」 ,他写道, 「这意味着在一个良好的市场中,拥有能够满足该市场的产品。」…...
ptp4l与phc2sys进行系统时钟同步
linuxptp用于时钟同步。安装采用apt install linuxptp主要包含2个程序,ptp4l 进行时钟同步,实时网卡时钟与远端的时钟同步,支持1588 和 802.1AS 两种协议phc2sys 将网卡上的时钟同步到操作系统,或者反之命令demo:某主机P通过eth2连…...
使用注解JSON序列化
JsonSerialize(using ToStringSerializer.class) 将返回数据转成String序列化 JsonFormat(pattern "yyyy-MM-dd hh:mm",timezone"GMT8") 将日期数据转换成特定格式 使用JsonSerialize自定义注解接口 定义接口 import java.lang.annotation.ElementTyp…...
kubernetes教程 --Pod生命周期
Pod生命周期 pod创建过程运行初始化容器(init container)过程运行主容器(main container)过程 容器启动后钩子(post start)、容器终止前钩子(pre stop)容器的存活性探测(…...
高校房产管理系统用到了哪些技术?
数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平通过在中国100多所高校的成功实施和迭代,形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。台,是针对中国高校房产的管理特点和管理要求,研发的一套标准产品;…...
【Python学习笔记】37.Python3 MySQL - mysql-connector 驱动(2)
前言 本章继续介绍MySQL - mysql-connector 驱动。 where 条件语句 如果我们要读取指定条件的数据,可以使用 where 语句: demo_mysql_test.py 读取 name 字段为 CSDN 的记录: import mysql.connectormydb mysql.connector.connect(host…...
创建wordpress用户访问数据库/网站排名怎么做上去
#所有防火墙规则都放到一个shell脚本里,调整后就执行一遍。 #!/bin/sh #首先先清空所有规则 /sbin/iptables -F #-F: FLASH,清空规则链 #for local /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #或者 /sbin/iptables -A INPUT -…...
广东个人 网站备案/快速seo排名优化
开头 消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,…...
独立网站需要多少钱/杭州搜索引擎排名
一、首先,明确以下内容: 1.http连接池不是万能的,过多的长连接会占用服务器资源,导致其他服务受阻 2.http连接池只适用于请求是经常访问同一主机(或同一个接口)的情况下 3.并发数不高的情况下资源利用率低下 那么,当你的业务符合上面3点,那么你可以考虑使用http连接池来提高服…...
晋城网站设计人/高端婚恋网站排名
当我们自定义了枚举类型或者其他某个类型、个别值,需要在往数据库中存或者在数据库取出来时转换类型或者对值做某些处理,就可以继承BaseTypeHandler<T>,自己实现各种转换 IntegerTypeHandler 下面源码是Integer类型的转换 一个 setxx…...
湿地保护宣教网站建设意义/网络宣传怎么做
我是Android和AndroidStudio(AS)的新手,我已经花了好几个小时尝试使用AS“克隆”一个项目。非常感谢上面给出的现有答案让我走上正确的道路。对于任何一个新手,像我一样,以下详细的分步说明应该证明是有用的:>使用Windows资源管…...
怎么样看网站用什么程序做的/百度模拟点击
extends与implements的区别与用法 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方…...