Broker 的关机恢复机制

一、Broker关机恢复概述

  Broker关机恢复是指恢复 CommitLog、Consume Queue、Index File 等数据文件。Broker 关机分为正常调用命令关机和异常被迫进程停止关机两种情况。恢复过程的设计目标是使进程正常停止的进程实现零数据丢失,异常停止的进程实现最少量的数据丢失。与关机恢复相关的主要文件有两个:abort 和 checkpoint。

  abort 是一个空文件,标记当前 Broker 是否正常关机,Broker 进程正常启动的时候,创建该文件。Broker进程正常停止后,该文件会被删除;如果异常退出,则文件依旧存在,创建和删除的过程如下:

  checkpoint 是检查点文件,保存 Broker 最后正常存储各种数据的时间,在重启 Broker 时,恢复程序知道从什么时刻恢复数据。检查点逻辑由 org.apache.rocketmq.store.StoreCheckpoint 类实现。

  在 StoreCheckpoint 类中保存了 3 个时间,更新过程如下图:

StoreCheckpoint 中存储的 3 个时间参数:

  • physicMsgTimestamp:最后一条已存储 CommitLog 的消息的存储时间。
  • logicsMsgTimestamp:最后一条已存储 Consume Queue 的消息的存储时间。
  • indexMsgTimestamp:最后一条已存储 Index File 的消息的存储时间。

  physicMsgTimestamp 和 logicsMsgTimestamp 的更新都是在数据存储成功后进行的,过程比较简单。而 indexMsgTimestamp 的逻辑是在 Index File 刷盘时被更新的,Index File 刷盘方法 org.apache.rocketmq.store.index.IndexService.flush()的相关代码如下:

RocketMQ(4.8.0)——Broker 的关机恢复机制的更多相关文章

  1. rocketmq 4.2.0集群配置

    采用的是2m-2s-async模式 1.  修改每台机器的/etc/hosts  文件,增加如下内容 192.168.1.100 nameserver1192.168.1.102 nameserver ...

  2. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker服务端自动创建topic的原理分析和问题要点指南

    前提背景 使用RocketMQ进行发消息时,一般我们是必须要指定topic,此外topic必须要提前建立,但是topic的创建(自动或者手动方式)的设置有一个开关autoCreateTopicEnab ...

  3. RocketMQ读书笔记5——消息队列的核心机制

    [Broker简述] Broker是RocketMQ的核心,大部分“重量级”的工作都是由Broker完成的,包括: 1.接受Producer发过来的消息: 2.处理Consumer的消费信息请求: 3 ...

  4. Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)

    注:本文中的recreate是指当内存不足时,Activity被回收,但再次来到此Activity时,系统重新恢复的过程.例如:当Activity A到Activity B时,如果内存不足,A被回收, ...

  5. HDFS副本机制&负载均衡&机架感知&访问方式&健壮性&删除恢复机制&HDFS缺点

    副本机制 1.副本摆放策略 第一副本:放置在上传文件的DataNode上:如果是集群外提交,则随机挑选一台磁盘不太慢.CPU不太忙的节点上:第二副本:放置在于第一个副本不同的机架的节点上:第三副本:与 ...

  6. [Kubernetes]容器健康检查和恢复机制

    在Kubernetes中,可以为Pod里的容器定义一个健康检查探针(Probe),这样Kubernetes会根据这个Probe的返回值决定这个容器的状态,而不是直接以容器是否允许(来自Docker返回 ...

  7. Android IOS WebRTC 音视频开发总结(七五)-- WebRTC视频通信中的错误恢复机制

    本文主要介绍WebRTC视频通信中的错误恢复机制(我们翻译和整理的,译者:jiangpeng),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blac ...

  8. 研究发现:TLS1.3中的 TLS 对话恢复机制可以追踪用户

    由于隐私浏览器技术的日渐成熟,网站越来越无法通过 Cookie 和网页浏览器特征来追踪用户,但道高一尺魔高一丈,现在这些网站会用 TLS 1.3 中的 TLS 对话恢复机制追踪用户. 你以为禁用浏览器 ...

  9. RocketMQ原理解析-Broker

    broker 1. broker的启动 brker的启动 Broker向namesrv注册 1. 获取namesrv的地址列表(是乱序的) 2. 遍历向每个namesrv注册topic的配置信息top ...

随机推荐

  1. 【bzoj 2467】[中山市选2010]生成树(数论--排列组合)

    题目:有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有 ...

  2. 【uva 120】Stacks of Flapjacks(算法效率--构造法+选择排序思想)

    题意:有N张正在锅里的一叠煎饼,每张都有一个数字,代表其大小.厨师每次可以选择一个数k,把从锅底开始数第k张上面的煎饼全部翻过来,即原来在上面的煎饼现在到了下面.要求设计一种方法使得所有煎饼按照从小到 ...

  3. 1562: Fun House

    Description American Carnival Makers Inc. (ACM) has a long history of designing rides and attraction ...

  4. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲网上区域赛模拟赛. A.Easy Equation (前缀和/差分)

    题意:RT,给你四个数\(a,b,c,d\),求\(x+y+z=k\)的方案数. 题解:我们可以先枚举\(x\)的值,然后\(x+y\)能取到的范围一定是\([x,x+b]\),也就是说这个区间内每个 ...

  5. 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))

    扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/7823 ...

  6. HDU - 3282 优先队列的使用

    题意: 按照顺序给你n个数,当数的数量是奇数的时候就输出它们的中位数 题解: 优先队列默认是大顶堆,即priority_queue.top()是这个队列中的最大值 那么我们就可以先创造一个大顶堆优先队 ...

  7. Codeforces Round #481 (Div. 3) D. Almost Arithmetic Progression (暴力)

    题意:有一个长度为\(n\)的序列,可以对所有元素++或--,求最少的操作次数,如果无论如何都不能构成,则输出\(-1\). 题解:一个等差数列一定由首项\(a_{1}\)和公差\(d\)来决定,而这 ...

  8. SQL Server 新安装启用sa用户/sa用户登录提示管道另一端无进程

    安装时只用windows验证 安装完成后: 首先选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"其 ...

  9. Python——requests模块

    一.安装模块 pip install requests 二.引用 import requests 三.get方法 #GET访问页面 r = requests.get(url) print(r.text ...

  10. codeforces 1013B 【思维+并查集建边】

    题目链接:戳这里 转自:参考博客 题意:给一个n*m的矩阵,放入q个点,这q个点之间的关系是,若已知这样三个点(x1,y1),(x2,y1),(x1,y2),可以在(x2,y2)处生成一个新的点,对于 ...