非拜占庭容错共识算法
目录
一、Raft 算法
二、KRaft 算法
参考文献
一、Raft 算法
三种角色不同的节点:跟随者(follower)、候选者(candidate)、领导者(leader)
两个阶段:
1、领导者选举阶段:
最初所有节点都为 follower 节点,随机超时发生后,若没接收到来自高层(leader | candidate)的消息;follower 节点转变为 candidate 节点。获取大多数票的 candidate 节点转变为 leader 节点(最先完成随机超时时间的高任期candidate节点可以获取follower节点的唯一投票)若未选出 leader节点,经随机超时后,重新触发选举。
2、日志同步(达成共识)
leader 节点将客户端的请求封装到日志条目中,并将 leader 节点的心跳与日志一同广播到给其余节点,整个广播过程是单向的( leader 节点——>其他节点),
当 leader 节点完成大多数节点的日志同步,则可以向客户端返回共识达成。
二、KRaft 算法
文献【1】提出的基于 Raft 共识算法的改进,基于双层 Kademlia 协议对 leader 节点的产生过程,以及日志同步时的效率进行了优化。
三种角色不同的节点:跟随者(follower)、候选者(candidate)、领导者(leader)
两个阶段:
1、领导者选举阶段:
首次随机选取 leader节点。利用双层的 Kademlia 协议动态维护K桶,保证了K桶内的节点是当前节点时延最低的K个节点。而这 K 个节点则为 candidate 节点。当 leader 节点宕机时,则由 K 桶内的 K 个 candidate 节点选出新的 leader节点。(leader节点必须保证时时延最低的节点)
2、日志同步(达成共识)
与 Raft 算法不同的是,KRaft 算法大日志同步分两步走:
①leader 节点以单节点多线程的方式发送日志给 candidate 节点,所有 candidate 节点收到日志后,第一步完成。若有 candidate 节点未收到,则回滚。
②candidate 节点通过并行发送日志给 follower 节点;提高了效率。
(follower 节点设置了确认收到日志的布尔类型标志位,避免日志错乱)
当leader节点收到超过一半的日志确认回复后,可以向客户端返回共识达成
参考文献
[1] 王日宏,周 航,徐泉清,张立锋.用于联盟链的非拜占庭容错共识算法 [J].计算机科学,2021, 48 (9): 317-323.
非拜占庭容错共识算法相关推荐
- 拜占庭容错共识算法介绍
1. 前言 区块链的共识算法中,除了常见的工作量证明(PoW,Proof of Work)和权益证明(PoS,Proof of Stake)外,还有拜占庭容错(Byzantine Fault Tole ...
- 拜占庭容错(BFT)算法介绍
[原文作者:Jae Kwon,译者:郭光华] 2011年比特币将世界的注意力引向到了区块链.但可惜的是,比特币版本的区块链不能解决区块链行业的很多问题.那是因为: 1.比特币的POW共识会浪费大量能源 ...
- 财路网每日原创推送:超90%容错共识算法,如何实现?
超90%容错共识算法,如何实现? 2019年1月17日,北大软微-八分量协同创新实验室展开第9期学术沙龙讨论活动.北京大学沈晴霓老师,杨雅辉老师.方跃坚老师以及多位北大的博士生,硕士生与Trias资深 ...
- 拜占庭容错共识(PBFT)
文章目录 一.拜占庭容错共识 1. 什么是PBFT 拜占庭将军的问题是什么? pBFT 原理 2. 与最传统的PoW共识机制相比,PBFT优势和劣势 3. BFT共识开发库 Tendermint BF ...
- 实用拜占庭容错(PBFT)算法详细介绍
实用拜占庭容错PBFT算法详细介绍 0 摘要 1 概要介绍 2 系统模型 3 服务属性 3.1 安全性 3.2 活性 3.3 为什么是上方的等式?? 3.4 未解决问题 4 算法 4.1 概述 4.2 ...
- 拜占庭容错机器学习算法之Krum算法
Krum算法是一种基于欧氏距离的拜占庭容错机器学习算法,是一种在分布式机器学习中保证其在具有拜占庭错误时仍然可以收敛的算法. 拜占庭错误 所谓的拜占庭错误在机器学习中是指,客户端在提交模型更新时,可以 ...
- 拜占庭容错机器学习算法之剪枝平均
剪枝平均 剪枝平均数,是指去掉一部分最大值和最小值后,剩余部分的平均数. 更确切的定义是:假设有a1<a2<a3<⋯<ana_1<a_2<a_3<\cdots ...
- 区块链快速入门(三)——CFT(非拜占庭容错)共识算法
一.CFT简介 CFT(Crash Fault Tolerance),即故障容错,是非拜占庭问题的容错技术. Paxos 问题是指分布式的系统中存在故障(crash fault),但不存在恶意(cor ...
- 深入理解区块链共识算法
区块链的概念: 区块链是一种去中心化.不可篡改.可追溯的分布式数据库系统[3].区块链系统中底层网络采用对等式网络(P2P 网络)组织各个独立的网络节点.P2P网络是扁平式的拓扑结构, 网络中的每个节 ...
最新文章
- poj 2828 Buy Tickets
- Java 基础搞定了,还能学点什么?
- mysql 启动 failed to start_Linux下启动MySQL提示“mysql deamon failed to start”错误的解决办法...
- “中文四六级”考试来了!《国际中文教育中文水平等级标准》发布
- 【opencv系列02】OpenCV4.X图像读取与显示
- Hadoop之Yarn工作机制详解
- C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载
- 机器学习算法 随机森林学习 之决策树
- Qt工作笔记-使用setFilterKeyColumn实现model的单行过滤
- UE4: 学习虚幻引擎4的16条准则
- Postgresql 直接在查询结果中生成唯一ID
- UINavagationController页面跳转
- L1-051 打折-PAT团体程序设计天梯赛GPLT
- Memcached windows 下安装与应用
- 合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)
- Syncovery for mac(文件备份和同步工具)
- yii2 加载css,js
- 福昕阅读器的 注册码
- 微信公众号服务器管理员权限,公众号管理员和运营者的区别是什么?公众号管理员需要承担责任吗?...
- 在谷歌浏览器上播放rtmp视频的坑
热门文章
- han_attention(双向GRU+attention)(imdb数据集---文档分类)
- 图像颜色空间转换--RGB to Lαβ
- 关于解码 decode 的错误
- js 匹配正确手机号
- 将csv导入python_将CSV导入Oracle表(Python)
- Word Rotator‘s Distance——WRD算法应用
- 3310复刻版 java_诺基亚3310复刻版评测:经典回归 情怀满满
- 怎么彻底删除手机上的微信聊天记录?百看不如一试的删除方法!
- 大数据薪水大概多少_大数据薪水大概多少
- SDRAM DQM的解释