区块链:Raft协议

Raft 协议是一种分布式共识机制,这种机制适用于网络中存在一定数量的故障节点,但不考虑“恶意”节点的情况,所以更适合作为私有链和联盟链的共识算法。

在此协议中,每个节点有三种状态:

  • 候选者 ,可以被选为一个新的领导者
  • 追随者 ,类似选民,追随领导者
  • 选举者,对追随者发送指令,比如区块链写入区块数据,如果追随者收不到领导者的消息,则会转变为候选者

此协议达成共识分为两个阶段:

  • 领导者选举
  • 日志复制

领导者选举过程

它由两个时间间隔控制,分别为选举时间间隔心跳时间间隔
选举时间间隔是指候选者成为领导者的等待时间。
开始时,每个节点都是追随者,每个节点独立记录自己的选举时间间隔。当A节点在选举时间间隔内没有接受到领导者的指令(心跳),则会成为候选者,之后此节点会向其他节点发送给自己投票的请求,其他投给此节点的节点将会重新设置自己的选举时间间隔(从零开始计时),而若是A节点获得超过半数的投票则会成为领导者o( ̄▽ ̄)ブ。
A在成为领导者( Leader )后,同时向其他节点发送心跳。在接收到来自节点A心跳 ,其他节点确认节点A为网络中的选举者,然后重新设置选举时间间隔并开始监听节 A的心跳。
心跳时间间隔是指候选者接受领导者的指令的时间间隔,若是在此间隔内未接收到心跳(指令)则会成为候选者o( ̄▽ ̄)ブ。
同样每个追随者都会记录自己的心跳时间间隔,若B节点在此间隔内未收到领导者A的心跳(假设A发生了故障),B则会变为候选者,向其他节点发送给他投票的请求,其他节点则会停止对A的心跳监听,开始下一轮的投票,并重新设置自己的选举时间间隔。
每一个追随者一直监听领导者的心跳,如果在心跳时间间隔内没有接收到心跳,在等待一个选举时间间隔后,则会变为候选者(即每个追随者都记录着心跳时间间隔和选举时间间隔)。
若是在某一个时刻,有两个节点(均没有接收到请求或者心跳)同时成为候选者,则会分别发起投票(各自投各自一票),由于发送请求存在先后顺序且每个节点在一轮选举中只能投一次票,故经过多轮选举,最后都会产生领导者。

日志复制

作为领导者的节点掌握整个网络的日志复制(比如记录区块)的工作。
例如,领导者会向追随者发送添加区块到区块链的命令,但领导者不会立即将区块数据添加到区块链,而是在得到大多数追随者的确认才会更新自己的区块链的信息,也会在下一次的心跳通知追随者更新区块链的信息。

由Raft协议原理可知,对于私有链,如果网络中永远不会发生通信故障,则本质上是类中心化的区块链,因为所有的区块链都会由第一个领导者产生。

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

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

相关文章

微服务(二)

目录 1.网关路由 1.1.认识网关 1.2.快速入门 1.2.1.引入依赖 1.2.2.启动类 1.2.3.配置路由 1.3.路由过滤 2.网关登录校验 2.1.鉴权思路分析 2.2.网关过滤器 2.3.自定义过滤器 2.3.1.自定义GatewayFilter 2.3.2.自定义GlobalFilter 2.4.登录校验 2.4.1.JWT工具 …

ESP32学习笔记_FreeRTOS(1)——Task的创建和使用

摘要(From AI): 本文是基于 FreeRTOS 和 ESP_IDF 的学习笔记,详细讲解了任务管理、优先级设置、任务堆栈监控、看门狗定时器(IWDT 和 TWDT)等关键功能。内容涵盖任务创建与删除、任务挂起与恢复、时间片轮转调度机制,以及任务看门…

95.【C语言】数据结构之双向链表的头插,头删,查找,中间插入,中间删除和销毁函数

目录 1.双向链表的头插 方法一 方法二 2.双向链表的头删 3.双向链表的销毁 4.双向链表的某个节点的数据查找 5.双向链表的中间插入 5.双向链表的中间删除 6.对比顺序表和链表 承接94.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删文章 1.双向链表的头插 方法…

【Docker容器化技术】docker安装与配置、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库

文章目录 一、Docker的安装与配置1、docker概述2、安装docker3、docker架构4、配置镜像加速器 二、Docker命令1、服务相关命令2、镜像相关命令3、容器相关命令 三、Docker容器数据卷1、数据卷概念及作用2、配置数据卷3、配置数据卷容器 四、Docker应用部署实战1、部署MySQL2、部…

海外云手机在出海业务中的优势有哪些?

随着互联网技术的快速发展,海外云手机已在出海电商、海外媒体推广和游戏行业都拥有广泛的应用。对于国内的出海电商企业来说,短视频引流和社交平台推广是带来有效流量的重要手段。借助云手机,企业能够更高效地在新兴社交平台上推广产品和品牌…

abap 可配置通用报表字段级日志监控

文章目录 1.功能需求描述1.1 功能1.2 效果展示2.数据库表解释2.1 表介绍3.数据库表及字段3.1.应用日志数据库抬头表:ZLOG_TAB_H3.2.应用日志数据库明细表:ZLOG_TAB_P3.3.应用日志维护字段配置表:ZLOG_TAB_F4.日志封装类5.代码6.调用方式代码7.调用案例程序demo1.功能需求描述 …

OceanBase 应用实践:如何处理数据空洞,降低存储空间

问题描述 某保险行业客户的核心系统,从Oracle 迁移到OceanBase之后,发现数据存储空间出现膨胀问题,数据空间 datasize9857715.48M,实际存储占用空间17790702.00M。根据 required_mb - data_mb 值判断,数据空洞较为严重…

软件测试:测试用例详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、通用测试用例八要素   1、用例编号;    2、测试项目;   3、测试标题; 4、重要级别;    5、预置…

C++——左值和右值的本质区别

左值和右值好干嘛? 深入理解左值和右值可以帮助我们对代码进行优化 一、什么是左值和右值 左值:有某种存储支持的变量 右值:临时值(字面量、函数的结果) Ⅰ右值是字面量 int yy 22;22本身就是一个临时的&#xf…

【iOS】知乎日报第三周总结

【iOS】知乎日报第三周总结 文章目录 【iOS】知乎日报第三周总结前言评论区文字评论区的一个展开效果评论区数据的一个请求修改了主页获取数据的逻辑主页无限轮播图图片主色调的一个获取将一些拓展部分的内容写在分类里小结 前言 本周笔者因为金工实习整个项目进展比较慢&#…

OpenAI的Triton能替代Nvidia的CUDA吗

先说我的观点,我觉得可以,但是应该不是现在。 然后得补个概念,啥是Triton OpenAI的Triton 是一种专为高效编写深度学习运算而设计的编程语言和编译器。它旨在简化用户编写针对现代GPU(尤其是NVIDIA GPU)的自定义运算…

【黑马Redis原理篇】Redis数据结构

视频来源:原理篇[2,15] 文章目录 1.动态字符串SDS1.1 内部结构: 2.IntSet3.Dict3.1 dict的内部结构3.2 dict的扩容 4.ziplist压缩列表5.QuickList6.SkipList跳表7.RedisObject对象8.Redis的五种数据结构8.1 String8.2 List8.3 Set8.4 Zset 有序集合8.5 …

SpringBoot 创建多模块项目 项目分模块 项目简化 打包发布

介绍 在 Spring Boot 中,创建多模块项目可以帮助我们将项目拆分成多个相对独立、可重用的模块,从而使代码结构更清晰,便于管理和维护。通常,这样的做法可以提高开发效率,并且更易于进行版本控制和分布式部署。 项目结…

MySQL 数据库之表操作

1. 创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) [character set 字符集 collate 校验规则 engine 存储引擎];field 表示列名datatype 表示列的类型character set 字符集,如果没有指定字符集,则以所在数据库…

【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据,LabVIEW 上位机绘制演化曲线

【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据,LabVIEW 上位机绘制演化曲线 主要介绍了 R78/G15 开发板基于 Arduino IDE 环境串口打印温湿度传感器 DHT11 和温度传感器 DS18B20 传感器的数据,并通过LabVIEW上位机绘制演…

Chromium Mojo(IPC)进程通信演示 c++(2)

122版本自带的mojom通信例子associated-interface 仅供学习参考: codelabs\mojo_examples\02-associated-interface-freezing 一、目录结构如图: 二、interface.mojom接口 1、codelabs\mojo_examples\mojom\interface.mojom // Copyright 2023 The C…

「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用

本篇将带你实现一个番茄钟倒计时应用,用户可以设置专注时间和休息时间的时长,点击“开始专注”或“开始休息”按钮启动计时,应用会在倒计时结束时进行提醒。番茄钟应用对于管理时间、提升工作效率非常有帮助,并且还会加入猫咪图片…

u盘怎么重装电脑系统_u盘重装电脑系统步骤和详细教程【新手宝典】

u盘怎么重装电脑系统?一个u盘怎么重装电脑系统呢,需要将u盘制作成u盘启动盘pe,然后通过U盘启动盘进入pe进行安装系统,下面小编就教大家u盘重装电脑系统步骤和详细教程。 u盘启动是什么意思? U盘启动盘是一种具有特殊功…

Typora导出pdf手动分页和设置字体样式

手动分页 <div style"page-break-after: always;"></div>鼠标点击代码才会显示&#xff0c;不点击会隐藏。导出pdf时&#xff0c;该位置会分页 设置字体大小、加粗、居中、空格 <p style"font-size:30px; font-weight: bold; text-align: cen…

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…