RocketMQ原理篇

news2025/1/11 22:43:18

文章目录

  • broker与NameServer
  • MessageQueue与Topic的关系
  • 生产者、消费者写入读取 消息
  • CommitLog
  • 生产者
  • 消费者组

broker与NameServer

基于 Dledger 实现 RocketMQ 高可用自动切换
在这里插入图片描述

broker 会每隔 30 秒向 NameServer 发送一个的心跳 ,NameServer 收到一个心跳
更新对应 broker 的最近一次心跳事件,然后 NamServer 会每隔十秒运行一个任
务,去检查一下各个 broker 的最近一次心跳的时间,如果超过 120s 没有收到相应
broker 的心跳,则判定对应的 broker 已经挂掉

「RocketMQ 自身的 Master-Slave 模式主采取的是 Slave 主动从 Master 拉取消息。

MessageQueue与Topic的关系

MessageQueue是 Topic的数据分配机制,创建Topic的时候 需要指定关键的MessageQueue

生产者、消费者 从NameServer获取的信息:

「一个 Topic 有几个 MessageQueue,哪些 MessageQueue 在哪台Broker 机器上,通过对应的规则写入对应的 MessageQueue
在每个 Broker 机器上都存储一些 MessageQueue。通过这个方法可以实现分布式存储。

生产者、消费者写入读取 消息

发送消息时均匀写入到MessageQueue
生产者在写入消息时,一般写入到 Master
消费者在拉取消息时,可能从 Master 拉取,也可能从 Slave 拉取

「根据Master 的负载情况和 Slave 的同步情况,」 由 Master 给出建议

  • Master 负载过高,建议 下次从 Slave 获取消息
  • Slave 未同步完全,建议下次从 Master 获取消息

CommitLog

在这里插入图片描述

生产者发送一条消息到broker,broker 顺序写入PageCache,然后 由OS的一个线程异步刷盘到磁盘上的CommitLog文件
然后在ConsumerQueue中写入一条消息,写入的消息内容是 消息在CommitLog中的物理offset偏移量 (这条消息的地址)

写入速度接近内存的原因:「磁盘文件顺序写+OS PageCache 写入+OS 异步刷盘的策略」

  • CommitLog 限定1G,预先申请好

生产者

Producer 的「自动容错机制开关:sendLatencyFaultEnable

打开了这个开关,那么他会有一个自动容错机制,比如如果某次访问一个Broker发现网络延迟有500ms,然后还无法访问,那么
就会自动回避访问这个Broker一段时间,比如接下来3000ms内,就不会访问这个Broker了

消费者组

不同的系统 应该设置不同的消费组,如果不同的消费组订阅了同一个Topic,对Topic里的一条消息,每个消费组都会获取到这条消息

一个 Consumer 机 器 可 以 消 费 处 理 多 个 MessageQueue
一个MessageQueue 只能被一个相同 ConsumerGroup 中的同一个 Consumer 消费。(也就是 这条消息 只能被一个机器消费)

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

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

相关文章

kafka再浅析

在日常开发中,经常使用kafka,对它是既熟悉又陌生,下面继续聊,继续总结。 1、消息中间件 分布式消息是一种通信机制,和RPC、HTTP不一样,消息中间件采用分布式中间代理的方式进行通信。采用消息中间件后&…

MarkDown语法(自用)

目录结构展示 tree -a 显示所有tree -d 只显示文档夹tree -L n 显示项目的层级,n表示层级数,比如想要显示项目三层结构,可以用tree -l 3;tree -I pattern 用于过滤不想要显示的文档或者文档夹。比如你想要过滤项目中的 node_modu…

Linux之(17)系统服务

Linux之(17)系统服务 Author:onceday Date:2022年12月24日 漫漫长路,有多少人对你笑过… 参考文档: Systemd 入门教程:命令篇 - 阮一峰的网络日志 (ruanyifeng.com)可能是史上最全面易懂的 Systemd 服务管理教程&a…

MergeTree原理之一级索引

一级索引 MergeTree的主键使用PRIMARY KEY定义,待主键定义之后,MergeTree会依据index_granularity间隔(默认8192行),为数据表生成一级索引并保存至primary.idx文件内,索引数据按照PRIMARY KEY排序。相比使…

【PotPlayer】采集Switch图像及录制

【PotPlayer】采集Switch图像及录制下载potplayer使用方法连接设备录制视频无边框设置阳,休,懂?QAQ。阳之前买了个Switch,正好有好玩的想录下来,然后就…自行某宝,某东去买个采集卡。本文只管连软件&#x…

【运维有小邓】ADSelfService Plus身份管理

一、身份管理挑战: 由于企业需要越来越高的安全性,以保护用户帐户免遭入侵者的任何恶意攻击,因此身份管理正日益变得重要。在所有密码相关的身份挑战中,帮助台工作单量成为重中之重,它们在组织的年同比财务预算中不堪…

(二)ElasticSearch使用

一、ES的基本使用 1.创建索引 创建一个test索引http://localhost:9200/test 2.删除索引 http://localhost:9200/test 3.查看索引 http://localhost:9200/_all 4.向索引中新增数据 http://localhost:9200/person/_doc/ 5.搜索数据 http://localhost:9200/person/_doc/_sear…

全志Tina Linux SPINAND UBI 离线烧录 开发指南 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板

1 概述 编写目的: 介绍Sunxi SPINand 烧写时的数据布局 2 名词解释 词义UBIunsorted block imagePEBphysical erase blockLEBlogical erase block PEB 和logical block 关系 1 PEB 1 logical block 1 logical block 2 physical blocks3 总体数据布局 ubi 方案…

必读,一文普及MES系统知识

MES系统的基本概念制造执行系统(MES)是一套面向制造企业的信息管理系统。MES系统可以为企业提供管理模块,包括制造数据管理、计划与调度管理、生产调度管理、库存管理、质量管理、生产过程控制、底层数据集成分析、上层数据集成与分解&#x…

LVGL学习笔记5 - Display, Screen和Layer

目录 1. Display 2. Screen 2.1 创建Screen 2.2 加载Screen 2.3 获取活动的Screen 2.4 实例 2.4.1 定义2个Screen全局变量 2.4.2 初始化Screen 2.4.3 循环更替 3. Layer图层 3.1 切换顺序 3.2 顶层和系统层 3.3 实例 3.3.1 创建全局变量 3.3.2 初始化 3.3.3 …

【OpenFOAM】-olaFlow-算例5- oppositeSolitariesFlume

算例路径: olaFlow\tutorials\oppositeSolitariesFlume 算例描述: 两列反向的孤立波相互作用 学习目标: 熟练掌握olaFlow的造波设置,波浪方向与消波方向设置 算例快照: 图1 两列反向孤立波相互作用文件结构&#xff1…

Linux Kernel 远程代码执行漏洞(CVE-2022-47939)

Linux Kernel 远程代码执行漏洞(CVE-2022-47939) CVE-2022-47939 据Security Affairs消息,近期披露的一个严重 Linux 内核漏洞会影响 SMB 服务器,可能导致远程代码执行。 Linux Kernel SMB2_TREE_DISCONNECT 命令处理中存在远程…

C进阶:征服指针之指针与数组强化笔试题练习(2)

🐲🦖 本篇文章是接上篇文章的,上篇文章链接:http://t.csdn.cn/RogqL 目录 🐇🐱一.关于 strlen 函数与数组、指针的综合笔试题 😸T1. 🐆 T2. 🐅T3. 🐲一.关…

网络和通信安全中的SSL/TLS国密改造

2021年3月,国家市场监管总局、国家标准化管理委员会发布公告,国家密码应用与安全性评估的关键标准GB/T39786—2021《信息安全技术信息系统密码应用基本要求》(以下简称“GB/T39786”)正式发布,GB/T 39786是贯彻落实《中…

CSS浮动与CSS定位装饰 Day3

结构伪类选择器 结构伪类 公式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>伪类</title><style>li:nth-child(4n){background-color: red;}</style> </head> <body>…

【记录贴】项目经理的进阶日常:靠年终总结获得了核心项目的机会

进入项目经理这个岗位已经三年了&#xff0c;之前决定转行做项目经理是因为它涉及的知识面广&#xff0c;对个人的成长非常有帮助&#xff1b;也期望未来能积累一些大型且复杂的项目经验、获得更好的升职空间。但现在做了这么久&#xff0c;好像遇到了职业瓶颈&#xff0c;仿佛…

ESP8266 WIFI模块的使用

ESP8266 wiFI 可以用作连接周边的无线设备&#xff0c;也可以作为发送器供其他设备连接通常在产品中&#xff0c;我们经常用作无线的接收使用&#xff0c;也可能会用作在线升级使用等。 说点题外话&#xff1a;虽然在线升级已经较为成熟&#xff0c;但我不推荐在一些重要的产品…

Shell程序编写猜数字的小游戏

文章目录 目录 文章目录 前言 一、设计思路 二、代码编写 三、效果图 总结 前言 在学习Linux课程中学习了一点简单的shell语法&#xff0c;实现了一个猜数字功能的程序。感兴趣的可以看完后自己手动编写玩玩~这个小游戏的编写也是把基础的shell语法基本上都用到了&#…

在QQ音乐巅峰榜年度榜单中,听懂国人2022年的音乐记忆!

拐左为夏&#xff0c;拐右为冬&#xff0c;时至年末&#xff0c;各类形式的年终报告层出不穷。2022年&#xff0c;是特殊的一年&#xff0c;音乐作为不可或缺的一部分&#xff0c;也陪伴广大用户走过了日日夜夜。一首首歌曲拨动着心弦、同时也承载着回忆&#xff0c;熟悉的旋律…

【软件测试】不好,事搞大了,APP测试的血泪教训总结......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 听说&#xff0c;人…