RocketMQ的设计理念和目标

一、设计理念:
RocketMQ设计基于主题的发布与订阅模式,其核心功能包括消息发送、消息存储(broker)、消息消费,整体设计追求简单与性能统一,主要体现在以下三个方面。

1.1、NameServer设计,摒弃了业界常用的Zookeper充当注册中心,使用NameServer实现元数据的管理(Topic)路由信息等,因为topic路由信息无需在集群之间保持强一致性,最终追求一致性,并且能忍受分钟级不一致,RocketMQ的NameServer的集群之间互不通信。

1.2、高效的IO存储机制。将消息的存储文件设计成文件租的概念、组内单个文件大小固定、所有主题消息存储基于顺序存储,还引入消息队列文件和索引文件。

1.3、只保证消息被消费者消费,设计上允许消息被重复消费

二、架构模式:

2.1、采用发布订阅模式,基本组件有、消息发送者、消息服务器(消息存储,broker)、消息消费、路由发现

2.2、顺序消费:消息消费顺序同存储到队列的顺序一致。

2.3、消息过滤:支持在服务端与消费端的消息过滤机制

2.3.1:消息在broker端过滤,只将消费者感兴趣的消息发送给消费者

2.3.2:在消费消息端过滤:完全由消费者自定义,但是会产生大量的消息无用的消息。

2.4:、消息存储;消息的核心实现是消息的存储,引入了内存映射机制,所有主题的消息顺序存储在同一个文件中,为了避免消息无限的存储在服务器中,引入了消息文件过期机制与文件存储空间报警机制

2.5、消息到达低延迟:在不发生消息的堆积时,以长轮模式实现准实时的消息推送模式

2.6、确保消息被消费一次:通过消息确认机制(ACK)来确保消息最少被消费一次,但是rocketMQ无法保证消息只被消费一次,有重复消费的可能。

2.7、回溯消息:已经被消费的消息,可以按照时间回溯消息,时间维度可精确到毫秒,可以向前或者向后回溯

2.8、消息堆积:RocketMQ使用磁盘文件(内存映射机制),并在物理布局上为多个大小相等的文件组成逻辑文件组,可以无限循环使用,并不是永久保留在消息服务器端,而是提供了过期机制,一般默认3天

2.9、定时消息:RocketMQ不支持任意进度的定时消息,只支持特定的延迟级别

2.10、消息重试机制:在消息进行消费时,发生异常,RocketMQ支持消息重试机制。

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

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

相关文章

excel文件预览: luckyexcel+luckysheet

luckyexcel 使用 npm i luckyexcel --saveluckysheet 使用 luckysheet文档 克隆Luckysheet源码到本地 git clone https://github.com/dream-num/Luckysheet.git安装依赖 npm install npm install gulp -g 开发 npm run dev打包 npm run build本地引入 npm run build 后 …

Ansible 连接受控端sudo超时

最近在装Ansible,有一台受控端负载重,响应慢。当用Ansible连接它时,总是提示超时。 现象 主控端 执行脚本 ansible 192.168.5.37 -m shell -a ip a| grep 192.168.192.168.5.37 | FAILED | rc-1 >> Timeout (12s) waiting for priv…

【Android】Activity task和Instrumentation杂谈

文章目录 activity taskInstrumentation机制参考 Android不仅可以装载众多的系统组件,还可以将它们跨进程组成ActivityTask,这个特性使得每个应用都不是孤立的。 activity task 从数据结构角度看,Task有先后之分,源码实现上采取了…

基于SpringBoot+Vue钢材销售管理系统的设计与实现

系统介绍 为了更好地发挥本系统的技术优势,根据钢材销售管理系统的需求,本文尝试以B/S经典设计模式中的Spring Boot框架,JAVA语言为基础,通过必要的编码处理、钢材销售管理系统整体框架、功能服务多样化和有效性的高级经验和技术…

高级IO简介

一、非阻塞IO 阻塞其实就是进入了休眠状态,交出了 CPU 控制权。 普通文件的读写操作是不会阻塞的,不管读写多少个字节数据, read() 或 write() 一定会在有限的时间内返回,所以普通文件一定是以非阻塞的方式进行 I/O 操作&…

【Visual Studio 2012中文版】下载安装以及使用方法

文章目录 前言一、下载安装包二、安装步骤1.双击VS2012_ULT_chs.iso文件打开2.双击vs_ultimate.exe打开安装程序3.选择要安装的功能4.软件正在安装,请耐心等待10分钟5.安装成功,点击“启动”6.激活码(产品密钥) 三、VS2012使用&am…

CRMEB Pro版营销功能规则解读

现在,无论是中小型企业拓宽渠道,还是传统企业转型,基本都在考虑布局线上,做微商城是一大趋势,相比传统第三方电商平台,独立部署的商城系统自主性更强,功能开发也更灵活。其中,作为电…

Java基础----字节流和字符流

1.使用字节流拷贝文件夹 import java.io.*;public class Tset01 {public static void main(String[] args) throws IOException {//拷贝一个文件夹,考虑子文件夹//E:\hello -> E:\aaaFile srcnew File("E:\\hello");File destnew File("E:\\dest…

英语写作中available容易忽略的用法

Available 的一般用法没有问题,但它的下面用法容易被我们忽略。 比较下面两句: There is no water. There is no water available. 这两句都翻译为“没有水”,但上一句的意思就是“没有水”,而下一句意味着“需要水但没有水”…

vue3 -- 项目使用自定义字体font-family

在Vue 3项目中使用自定义字体(font-family)的方法与在普通的HTML/CSS项目中类似。可以按照以下步骤进行操作: 引入字体文件: 首先,确保你的字体文件(通常是.woff、.woff2、.ttf等格式)位于项目中的某个目录下,比如src/assets/font/。 在全局样式中定义字体: 在你的全局…

[阅读笔记25][WebArena]A Realistic Web Environment for Building Autonomous Agents

这篇论文提出了WebArena这个环境与测试基准,在24年1月发表。 之前的agent都是在一些简化过的合成环境中测试的,这会导致与现实场景脱节。这篇论文构建了一个高度逼真、可复现的环境。该环境涉及四个领域:电子商务、论坛讨论、软件开发和内容管…

多种情况下合并单元格(S-Table+Vue3)

合并单元格(S-TableVue3) 跨行合并:rowspan“合并单元格的个数” 跨列合并:colspan"“合并单元格的个数” 文章目录 合并单元格(S-TableVue3)第一列跨行合并单元格templatescript效果 多列跨行合并单元格templatescript效果图 多行合并可参考 第一列…

exceljs库实现excel表样式定制化

概览 xlsx 是前端最热门的 Excel 导出方案,又叫做 SheetJs,默认不支持修改 Excel 的样式。而exceljs库就可以做到自定义excel表样式,下面来介绍一下其使用方法 一. 完整示例 代码示例 const exportTemplate2 () > { // 创建工作簿 …

Electron桌面应用开发:从入门到发布全流程解析

Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(HTML、CSS和JavaScript)来创建跨平台的桌面应用程序。在本文中,我们将深入探讨Electron桌面应用程序开发的全流程,从入门到发布。 安装和配置Elec…

iOS ------ Block的总结

前面看了Block的基本知识,和一些源码。但对于block怎么用的还不了解,代码中出现block会看不懂,现在来具体看一下Block的用法并做个总结。 1.Block是什么 block对象是一个C语言结构体,可以并入C和OC的代码中,Block本质…

探索以太坊世界:使用Geth打造你的私人网络

文章目录 概要名词解释Geth(Go Ethereum)区块链网络种类 具体流程下载geth客户端配置私链新建创世区块启动私链 连接MetaMask钱包小结 概要 在区块链领域,以太坊私链的搭建是学习和开发智能合约的重要一步。私链允许开发者在独立的环境中进行…

地图图源#ESRI ArcGIS XYZ Tiles系列(TMS)

目录 1、前言 2、地图图源网址 2.1、Satellite 卫星图源 2.2、Terrain 地形图源 2.3、Street 路网/标注图源 2.4、Specifity 特色设计图源 3、专业推荐”穿搭“ 4、图源配置下载及使用 图源名称图层类别特别注意谷歌 Google①地形 ②影像 ③矢量及标注 ④特色图源国内大…

python3如何提取汉字

采用正则表达式的方法对字符串进行处理。 str1 "{我%$是,《速$.度\发》中 /国、人"(1)提取汉字 汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的。 import re res1 .join(re.findall([\u4e00-\u9fa…

sso-oauth2单点登录功能笔记

场景:最近公司2个系统需要做单点登录,A系统作为服务器,认证方式是sso-oauth2方式,B系统作为客户端,token方式是ta-token,先来张sso-oauth2认证方式的图 前置准备工作 第一步:要确认谁是服务提…

kubernetes的网络通信实现原理

网络原理 Kubernetes网络原理详解:一、Kubernetes 网络实现1.容器到容器(同一Pod内)通信流程:2. pod之间的通信(以Calico为例): 二、CNI 网络模型三、网络策略四、开源的容器网络方案五、 常见网…