(二)Rocketmq目录结构及设计目标

2023-11-06

一.目录结构

在这里插入图片描述
1)broker:broker模块
2)client:消息客户端,包含消息生产者,消费者相关类
3)common:公共包
4)dev:开发者信息(非源代码)
5)distribution:部署实例文件夹(非源代码)
6)example:rocketmq示例文件
7)filter:消息过滤相关基础类
8)filtersrv:消息过滤服务器实现相关类(Filter启动进程)
9)logappender:日志实现相关类
10)namesrv:NameServer实现相关类
11)openmessaging:消息开放标准
12)remoting:远程通信模块
13)srvutil:服务器工具类
14)store:消息存储实现相关类
15)style:checkstyle相关实现
16)test:测试相关类
17)tools:工具类,监控命令相关实现类

二.设计理念与目标

2.1设计理念

基于主题的发布订阅模式,核心包括消息发送,消息存储,消息消费,追求简单和性能第一
NameServer设计简单,摒弃了Zookeeper充当注册中心,采用自研NameServer实现元数据的管理(Topic路由信息),追求最终一致性,Rocketmq的Nameserver集群间互不通信,极大地降低了NameServer实现的复杂程度,对网络的要求也降低不少,性能相对于Zookeeper有较大提升
高效的IO存储机制,Rocketmq追求消息发送的高吞吐量,消息存储文件设计成文件组的概念,组内单个文件大小固定,方便引入内存映射机制,所有肢体的消息存储基于顺序写,为了兼顾消息消费与消息查找,引入了消息消费队列文件与索引文件
容忍存在设计,Rocketmq未解决重复消费,简化中间件的内核使得实现消息发送高可用变得简单高效

2.2设计目标

架构模式
和大部分消息中间件一样,采用发布订阅模式, 组件有:发送者 消息服务器(消息存储) 消息消费 路由发现
顺序消息
按着到达消息存储服务器的顺序消费
消息过滤
在服务端和消费端过滤
消息存储
消息中间件一个核心实现是消息的存储,对消息存储一般有如下两个维度的考虑:消息堆积能力和消息存储能力,RocketMq追求消息存储的高性能,引入内存映射机制,所有主题的消息顺序存储在同一个文件中,为了避免无限在消息服务器中累积,引入了消息文件过期机制与文件存储空间报警机制
消息高可用
通常有以下几种情况影响消息可靠性
1)Broker正常关机
2)Broker异常Crash
3)OS Crash
4)机器断点,但能立即恢复供电
5)机器无法开机
6)磁盘损坏
情况1-4的Rocketmq在同步刷盘急之下可以确保不丢失消息,在异步刷盘模式下,会丢少量消息,5-6属于单点故障,一旦发生,该节点的消息全部丢失
消息到达低延迟
采用长轮询模式实现准实时的消息推送模式
确保消息必须被消费一次
通过消息消费确认机制ACK确保消息至少被消费一次,但是由于ACK消息可能丢失等其他原因,Rocketmq无法做到只消费一次
回溯消息
消息消费端已经消费成功的消息,可以重新消费
消息堆积
Rocketmq消息存储使用磁盘文件(内存映射机制),在物理布局上为多个大小相等的逻辑文件组,可以无限使用,消息存储文件默认保留3天
定时消息
定时消息是指发送到Broker后,不能被消费端立即消费,要到特定时间或者等待特定时间后才能被消费,如果要支持任意经度的定时消息消费,服务端需对消息进行排序,势必带来很大的性能消耗,所以rocketmq不支持任意进度的定时消息,只支持特定延迟级别
消息重试机制
当消息在消费时出现异常,消息中间件需要重新投递

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(二)Rocketmq目录结构及设计目标 的相关文章

  • (转)ucos的事件 任务的通讯和同步 信号量 互斥量 消息邮箱 消息队列

    这会想了想 xff0c 在复习资料后 xff0c 最后再做个核心代码分析 ucos中使用信号量 消息邮箱 消息队列 xff0c 这些数据结构来作为通信中间媒介 这些数据结构会影响任务的程序流程 xff0c 因此也叫做事件 一 信号量 是进行
  • C语言 消息队列

    消息队列 xff08 也叫做报文队列 xff09 能够克服早期unix通信机制的一些缺点 作为早期unix通信机制之一的信号能够传送的信息量有限 xff0c 后来虽然POSIX 1003 1b在信号的实时性方面作了拓广 xff0c 使得信号
  • Windows下安装RocketMQ、配置可视化界面

    1 下载RocketMQ 官网下载地址 https rocketmq apache org dowloading releases 2 安装及启动 1 前提条件 已安装jdk和maven 注意jdk安装路径不能有空格 否则启动mq时会报类加
  • Rocketmq发送顺序消息

    要想保证消息的顺序性 要保证将需要保证顺序的消息按照顺序投递进一个队列中 下面演示rocketTemplate发送顺序消息 RestController RequestMapping demo public class SendContro
  • 【Linux】利用消息队列实现一个简单的进程间双向通信(两种方式)

    在实现利用消息队列的进程间通信之前 先了解一下基本的概念和所需要用到的函数 消息队列 消息队列是Linux内核地址空间中的内部链表 各个进程可以通过它来进行消息传递 进程发送的消息会顺序写入消息队列之中 且每个消息队列都有IPC标识符唯一地
  • 如何保证消息队列的顺序性?

    面试题 如何保证消息的顺序性 面试官心理分析 其实这个也是用 MQ 的时候必问的话题 第一看看你了不了解顺序这个事儿 第二看看你有没有办法保证消息是有顺序的 这是生产系统中常见的问题 面试题剖析 我举个例子 我们以前做过一个 mysql b
  • RocketMQ中文文档(译)

    前言 近日需要研究一下RocketMQ 为了方便日后查找 因此对官方英文文档进行翻译记载 也希望能帮助到要学习的朋友 阅读后发现 文档还是比较粗略的 大概也只能了解些概念和简单实用 快速入门部分比较简单 因此暂时没翻译只翻译其中重要的几个部
  • 了解消息中间件的基础知识

    为什么要使用消息中间件 解耦 消息中间件可以使不同的应用程序通过解耦的方式进行通信 减少系统间的依赖关系 提供异步通信 消息中间件可以实现异步消息传递 提高系统的响应性能 流量削峰 消息中间件可以起到流量削峰的作用 将短时间内的爆发式流量存
  • RocketMQ安装与启动

    分享知识 传递快乐 官网 https rocketmq apache org 1 准备环境 系统 Centos7 jdk 1 8 2 环境部署 解压 rocketmq 并进入 rocketmq 下的 bin 目录 调整启动内存 vim bi
  • 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息

    SQL表达式方式可以根据发送消息时输入的属性进行一些计算 RocketMQ的SQL表达式语法 只定义了一些基本的语法功能 数字比较 如 gt gt lt lt BETWEEN 字符比较 如 lt gt IN IS NULL or IS NO
  • rocketmq搭建2m2s踩坑版

    搭建过程中遇到了些问题百度了很久终于东拼西凑成功解决了 看看成果 console完美运行 代码生产消费也是正常的 言归正传开始搭建 0 服务器环境介绍 没有将master与对应的slave安装在同一个节点 如果在一个节点挂了master就挂
  • RocketMQ系列之顺序消费

    前言 上节我们介绍了RMQ的两大亮点 重试和重复消费的问题 其实重试才能算亮点 重复消费最终还是要由我们自己来解决这个问题 RMQ自身并没有提供很好的机制 至少目前是没有 不知道将来会不会有 OK扯远了 今天呢 我们再来介绍RMQ一个不错的
  • 一文详解RabbitMQ,RocketMQ和Kafka的异同

  • RabbitMQ中的限流、return机制、死信队列

    目录 优点 缺点 1 限流 2 return机制 3 死信队列 优点 高可用性 RabbitMQ支持集群和镜像队列等多种方式实现高可用性 保证系统稳定运行 可靠性强 RabbitMQ使用AMQP协议作为消息传递的标准 能够确保消息传递的可靠
  • 非阻塞的connect使用方式

    connect 函数的调用涉及到3次握手 默认connect函数为阻塞连接状态 通常connect 会阻塞到三次握手的完成和失败 而这个connect阻塞超时时间会依赖于系统 一般为75s到几分钟时间 一种方式可以通过该系统配置 proc
  • Rabbitmq入门到进阶看这篇就够了!

    安装前提 安装 erlang windows用户名非中文 可以关注我的公众号 知识追寻者 回复 rabbitmq 获取已经下载好的安装包和配套源码地址 本套教程对应知识追寻者网址 windows安装rabbitmq zszxz com Ra
  • Kafka实战——简单易懂的生产者消费者demo

    单线程版本适合本地调试 多线程版本适合做压测 1 引入maven依赖
  • Java 项目的跨库的方式查询的方法

    Java 项目的跨库的方式查询的方法 目录 概述 需求 设计思路 实现思路分析 性能参数测试 参考资料和推荐阅读 Survive by day and develop by night talk for import biz show yo
  • 消息队列:Ubuntu16.04安装和Web页面管理RabbitMQ(楼主亲测、真实有效)

    RabbitMQ 总来来说 RabbitMQ的安装还是有一些难度的 不同的方式 安装的方法也是完全不一样 还要解决蛮多依赖 加上现在有些网站 极其不负责 很多博文都没有经过测试检验就直接发出来的 楼主来亲测一下 希望能对大家有好的帮助 一
  • 腾讯技术工程总结-主流消息队列你了解哪些?

    文章参考 腾讯技术工程 关于消息队列的知识总结 主流消息队列你了解哪些 消息队列的发展历程 2003 年至今有很多优秀的消息队列诞生 如 kafka 阿里自研的 rocketmq 以及后起之秀 pulsar 消息队列在刚出现所需要解决的问题

随机推荐

  • Outlook 错误号 0x800CCC0B,怎么解决?

    正常设置了OUTLOOK EXPRESS等邮件客户端软件后 若发信不正常 OUTLOOK EXPRESS会给您一个错误信息 这个错误信息里面会包含一个错误码根据错误码与下表进行比较 一般都可以找出大多数问题的解决办法 错误码 意义 0x80
  • 如何优雅的写单词_lduoj_kmp

    如何优雅的写单词 Description 单词背多少了 心里还没有点数了 还有多长时间考试你知道吗 你说 单词背到第几章了 呜呜呜 别骂了别骂了 再骂人傻了 在深知单词的重要性之后 PushyTao下定决心要好好背单词 为了防止在考试的时候
  • AngularJS之组件化篇

    AngularJS组件化 将页面中可以重复使用的标签封装成一个组件 方便这一部分UI重复使用 类似于JS中的函数 封装了一部分处理代码 通过函数调用就可以重复使用这些代码 组件可以用 component 注册 在 angular modul
  • java--基础--16.5--IO流--BufferedWriter,BufferedReader

    java 基础 16 5 IO流 BufferedWriter BufferedReader 1 字符流 字符流 字符流 字节流 编码表 字符输入流 Reader 抽象类 int read 一次读取一个字符 int read char ch
  • NXP i.MX RT1052介绍

    1 NXP i MX RT1052 连载之 MCU 简介 1 KiFF的博客 CSDN博客 2 NXP i MX RT1052 连载之 Boot 简介 2 KiFF的博客 CSDN博客 重要 3 i MXRT单片机 Cortex M7 i
  • 1-1、Lua总结开篇

    一 序言 最近在开发物联网相关的探针业务 用于对机顶盒中的网络数据进行嗅探并处理以获取用户行为数据 然后提供给大数据平台 由此 我们可以看到物联网很大一部分功能是为大数据服务的 采集 物 中的数据提供给大数据平台 而进一步讲 大数据的数据提
  • 华为OD机试真题 Java 实现【最短木板长度】【2022Q4 100分】,附详细解题思路

    一 题目描述 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度可以为多少 二
  • FDFS如何卸载

    之前在安装FDFS的时候 有些 sample文件没有生成 我也不知道是不是安装的问题 所以只有是卸载重装 重装后 问题解决 1 停止trackerd服务 sudo service fdfs trackerd stop 2 停止storage
  • Vue.js2+Cesium1.103.0 三、模型加载与切割

    Vue js2 Cesium1 103 0 三 模型加载与切割 Demo 模型加载 const tileset new Cesium Cesium3DTileset url https lab earthsdk com model 3610
  • VMware推免费服务器版虚拟软件

    VMware宣布将免费推出服务器版虚拟软件VMware Server 而其beta版本已经可以下载 作为商业版VMware GSX Server的继任者 VMware Server for Linux Windows允许用户同时运行多个操作
  • JUC并发编程(多线程进阶整理)

    JUC并发编程 要想学习JUC就必须了解 java util concurrent 包的工具类 其中包含 java util concurrent 并发包 java util concurrent atomic 并发原子包 java uti
  • 什么是STC89C52单片机

    STC89C52是一个低功耗 高性能CMOS 8位单片机 片内含8k Bytes ISP In system programmable 的可反复擦写10000次的Flash只读程序存储器 器件采用ATMEL公司的高密度 非易失性存储技术制造
  • 旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA(二)

    1 模型rotated rtmdet的论文链接与配置文件 注意 我们按照 DOTA 评测服务器的最新指标 原来的 voc 格式 mAP 现在是 mAP50 IN表示ImageNet预训练 COCO表示COCO预训练 与报告不同的是 这里的推
  • 多重背包问题大全(超详细)

    题目 有N种物品和一个容量为V的背包 第i种物品最多有n i 件可用 每件费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 首先多重背包问题可以转换为01背包来解决 关键就是如何转换 我
  • 联合目标检测和语义分割——学习笔记

    联合目标检测和语义分割 目标检测 目标检测是一种与计算机视觉和图像处理相关的计算机技术 用于检测数字图像和视频中特定类别的语义对象 例如人 建筑物或汽车 的实例 然而现实中物体的尺寸 姿态 位置都有很大的差异 甚至还可能出现重叠现象 这使得
  • vue--el-tree懒加载数据并且实现树的过滤

    树的样式 过滤效果 过滤代码实现 1 如果这里的树数据是全加载 即可使用element ui中的设置 进行前端过滤 element ui对应的组件位置
  • 究竟什么是token??

    基于服务器验证方式的验证流程 我们都是知道HTTP协议是无状态的 这种无状态意味着程序需要验证每一次请求 从而辨别客户端的身份 在这之前 程序都是通过在服务端存储的登录信息来辨别请求的 这种方式一般都是通过存储Session来完成 随着We
  • Java并发编程学习10-任务执行与Executor框架

    Java并发编程学习系列 任务执行与Executor框架 任务执行 1 串行地执行任务 2 显式地为任务创建线程 3 无限制创建线程的不足 Executor框架 1 基于 Executor 的 Web 服务器 2 执行策略 3 线程池 4
  • 2019最新 国内唯一的Android从程序员到架构师全套教程

    课程目标 国内唯一的Android从程序员到架构师全套视频教程 适用人群 Android开发至少两年经验的IT工程师 想深入了解Android开源平台的资深工程师 Android项目团队技术管理者 课程概述 遵循敏捷的迭代过程 从思想 方法
  • (二)Rocketmq目录结构及设计目标

    文章目录 一 目录结构 二 设计理念与目标 2 1设计理念 2 2设计目标 一 目录结构 1 broker broker模块 2 client 消息客户端 包含消息生产者 消费者相关类 3 common 公共包 4 dev 开发者信息 非源