当前位置: 首页 > news >正文

rocketMq概念介绍

rocketMq官网

    http://rocketmq.apache.org/

rocketMq逻辑概念介绍

img_a9be193f7748a996358e2d625ace67a4.png
rocketMq逻辑图

备注
    改图片分享自李占卫的网上家园

说明

    在rocketMq的中核心4组件为namesrv、broker、consumer、producer。

    broker:消息存储中心,主要用来存储消息并通过namesrv对外提供服务。

    namesrv:无状态的注册中心,功能用来保存broker的相关的元信息并提供给producer在发送消息过程中和提供给consumer消费消息过程中查找broker信息。

    producer:消息生产者,通过namesrv获取broker的地址并发送消息。

    consumer:消息消费者,通过namesrv获取broker的地址并消费消息。



rocketMq部署情况介绍

img_5e26d74e1a681a90be14e20c721ab06e.png
rocketMq部署图


img_35d7b0147b2734305a18b825b9f641de.png
rocketMq的集群概念细分

说明

    rocketMq实际部署图,每个组件都可以用集群形式出现。

    producer:通过producerGroup的名字来标记自己是一个集群。

    consumer:通过consumerGroup的名字来标记自己是一个集群。

    namesrv:相互之间无通信,通过部署多台机器来标记自己是一个伪集群。

    broker:通过clusterName来标记集群,每个broker通过clusterName来表明cluster层面集群,通过brokerName来标明broker层面集群,通过brokerId标明主从身份。


rocketMq消息存储介绍

img_1889242e774753be0a06a5d4af989c7f.png
rocketMq消息存储

说明:

    rocketMq的消息存储通过二级索引来进行,其中实际消息存储在Commit Log的逻辑队列中(磁盘文件消息顺序写),consume queue保存着每个消息消费队列的待消费的数据并且指向commit Log。


rocketMq线上配置介绍

img_3cb67cb11a68ed1a8525cf90de2d481b.png
rocketMq实际数据存储

说明:

    rocketMq线上环境的真实存储,每个broker的存储数据格式就是类似上图。

    config目录

        consumerFilter:保存consumer端的消息过滤配置,应该是等消费端配置了过滤规则就会在这个文件中增加记录。

        consumerOffset:消费进度偏移量,以topic@consumerGroup作区别,0:125的0代表队列,125代表消费偏移量。

img_e56512eb0a58064540049c457d3c6aff.png
consumerOffset

        delayOffset:延迟队列消费进度,其中2代表延迟粒度,2000代表消费进度。

img_daf242462501d2b8114f5656d44039ed.png
delayOffset

        subscriptionGroup:表示订阅消费的消费组。

img_43c71d2c84db17f951adc4d0c2ee2170.png
subscriptionGroup

        topic:rocketMq中topic的信息,可以理解topic为业务消息分组的粒度,一般一个topic为一类业务的逻辑消息集合。

img_109a4bf15538c5c73c2170453d3fc514.png
topic 


commitlog目录

    rocketMq实际存储消息的位置。

consumequeue目录

    %DLQ%@ConsumeGroupA:消费分组的死信队列,保存指向commit log的索引。

    %RETRY%@ConsumeGroupA:消费分组的充实队列,保存指向commit log的索引。

    SCHEDULE_TOPIC_XXXX:延迟消息队列,保存指向commit log的索引。

    TOPICA:topic的消费队列存储,保存指向commit log的索引。

相关文章:

  • PHP垃圾回收机制
  • SpringCloud |第三篇: 服务消费者(Feign+REST)
  • Android请求网络数据下载APK安装包
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 技术相对论之软件架构
  • Fragment 生命周期怎么来的?
  • Redis和Memcache和MongoDB简介及区别分析(整理)
  • ubuntu16.4安装最新版wine3.0
  • c++中局部变量初始化的问题
  • WordCount
  • 外卖也智能!美团骑手智能助手的技术与实践
  • 【协议转换和消息路由】camel-spring-boot-starter 实践
  • 坑货!阿里奇门中心
  • [ssh]如何设计ARM板上多用户key登录系统
  • 71. Simplify Path
  • php的引用
  • 自己简单写的 事件订阅机制
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Fundebug计费标准解释:事件数是如何定义的?
  • Hibernate【inverse和cascade属性】知识要点
  • java 多线程基础, 我觉得还是有必要看看的
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Quartz初级教程
  • Theano - 导数
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 你不可错过的前端面试题(一)
  • 巧用 TypeScript (一)
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 正则表达式
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​如何在iOS手机上查看应用日志
  • #pragma data_seg 共享数据区(转)
  • #Z0458. 树的中心2
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (第一天)包装对象、作用域、创建对象
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十)T检验-第一部分
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • **PHP二维数组遍历时同时赋值
  • .cn根服务器被攻击之后
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net MVC + EF搭建学生管理系统
  • .Net MVC4 上传大文件,并保存表单
  • .NET程序员迈向卓越的必由之路
  • .NET是什么
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题