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

Rockect基于Dledger的Broker主从同步原理

1.前言

此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂

这篇文章紧挨着上一篇博客来进行编写,有些不清楚的可以看下上一篇博客:

RocketMQ原理简述(二)-CSDN博客

2.Broker的高可用

如果想让Broker实现高可用的话,就需要有一个Broker组,这个Broker组里面有一个Leader Broker来接收写入数据,然后进行同步到其他的Follow Broker上。这样的话,一条数据就会在三个Broker上有副本,如果Leader Broker宕机了,就会从其他的Follow Broker上进行选举一个新的Leader Broker来进行接收新的请求。

1. DLedger代替broker进行管理commitLog

Broker的高可用是基于Dledger技术来实现的,Dledger技术首先它会有一个CommitLog机制,你把数据交给它,它就会将数据写入到磁盘文件中。使用Dledger技术来实现Broker的高可用就是用Dledger来代替Broker进行管理CommitLog。

2. DLedger基于Raft协议进行选举leader

那么是怎么做到选举新的Leader节点呢,是基于Raft协议来进行选择Leader节点的。这个Raft协议的具体是怎么实现的。

我们可以举一个例子,假设我们现在有三台机器,A,B,C。这三台机器在刚启动的时候都会投票给自己,让自己成为一个leader节点,然后把自己的投票信息给同步到别的机器上,那么在第一轮的时候,就会发现大家都投票给自己,那么就没办法选举出来leader节点。

紧接大家都进入一个随机时间的休眠,A休眠1秒,B休眠2秒,C休眠3秒

A会先苏醒过来,它会给自己投票成为leader,并把自己的投票信息给B,C;当B和C苏醒之后,发现已经有投票信息过来了,就会接受A的投票信息,并把自己的投票信息给A;这样的话大家都会进行投票给A机器成为Leader。超过了半数,那么A机器就会成为Leader节点。依靠这种随机时间的休眠,通过几轮的投票就会选举出来一个leader节点。

3.DLedger进行多副本数据的同步

DLedger是是基于Raft协议来进行数据信息的同步,简单来说:数据会分为两个阶段,一个阶段为uncommited阶段,一个阶段为commited阶段。首先DLedger收到数据之后,会将数据标记为uncommited状态,然后通过内部的DLedgerServer组件将这个uncommited的数据进行同步到Follower的DLedgerServer上去。然后Follower的DLedgerServer收到这个请求之后会返回一个ack到leader节点的DLedgerServer上去。当leader节点的DLedgerServer收到一半机器的ack之后,会将这个数据标记为commited状态,然后再次进行同步到follower的DLedgerServer,让他们也把数据标记为commited状态。

 

http://www.lryc.cn/news/515683.html

相关文章:

  • 面向对象分析与设计Python版 面向对象的核心特征
  • CDP集群安全指南-静态数据加密
  • RSA密码的安全性分析(简化版本)
  • 嵌入式linux系统中CMake的基本用法
  • 若依修改超级管理员admin的密码
  • matlab中高精度计算函数vpa与非厄米矩阵本征值的求解
  • 王佩丰24节Excel学习笔记——第二十四讲:宏表函数
  • Navicat 17 for Mac 数据库管理软件
  • 现代光学基础2
  • Git 入门(一)
  • mysql自定义安装
  • 微软自带日志输出+Serilog
  • 《PHP MySQL 创建数据库》
  • Python虚拟环境管理
  • 一个在ios当中采用ObjectC和opencv来显示图片的实例
  • c++ vector 使用find查找指定元素方法
  • leetcode 732. 我的日程安排表 III
  • k8s系列--docker拉取镜像导入k8s的containerd中
  • 38-其他地方使用模式
  • 单片机按键扫描程序,可以单击、双击、长按,使用状态机,无延时,不阻塞。
  • Django中自定义模板字符串
  • 暴雨总裁孙辉:混合式人工智能是大势所趋
  • 【小制作】米家模拟手指点击
  • 【深度学习入门_基础篇】线性代数本质
  • 047_小驰私房菜_Qcom 8系列,Jpeg GPU 旋转
  • Elasticsearch 操作文档对数据的增删改查操作 索引库文档 操作数据 CRUD
  • 最新MySQL面试题(2025超详细版)
  • 使用MPTCP+BBR进行数据传输,让网络又快又稳
  • 滴滴数据分析80道面试题及参考答案
  • 基于物联网疫苗冷链物流监测系统设计