• Raft现存问题

    • Raft::日志复制和leader选举

      节点信息复制过程

    • leader节点性能成为瓶颈。改进:利用follower节点空闲的带宽资源优化共识效率。
    • 没凑够半数选票而进行多轮选举。改进:改选机制
    • 名词延申:

      • term::仍然一个任期里一个leader
      • Epoch:follower节点一轮共识中交流多条日志信息,是信息收集的基本单元
      • Log segment indexing:用日志段对每一轮数据进行索引。其目的是掌握当前的日志信息的容量大小,日志的顺序,追随者节点对应于其他日志,和其他信息,以促进从动件的匹配和交换节点日志信息中设置日志复制阶段。

  • 基于投票的领导人选举改进变化机制:票数较多的候选节点可以捕获票数较少的候选节点的选票,防止多个候选节点之间的竞争导致僵局的情况。投票选举阶段,预先定义了描述发起者和调用者的RequestVote RPC状态信息,并添加了RequestCompare RPC状态来比较候选节点之间的投票数
    • RPC执行如下:代持思想?

      • 如果term<currentTerm,候选人的term号小于follower节点的term号,则RequestVote RPC返回(term, false),提醒候选人候选人的term号已经过期并拒绝投票
      • 如果term>currentTerm,并且follower节点之前没有为另一个候选节点投票,则返回(term, true, id, hash),表明投票在这个术语期间被发送到这个候选节点。如果follower节点在此之前已经投票,则RequestCompare触发RPC比较投票请求。
      • 如果term<currentTerm,即RPC启动器的term号小于接收者的,返回(term, false),提醒另一方term已经过期并更新term号。否则,如果发起方CandidateVoteNum小于接收者,则接收者返回(term, false),发起方的候选节点自动变为follower状态,并通知从属follower节点更新投票所属信息
    • 分派思想的日志复制

      • 从缓冲区提取少于等于现存Follower节点数的日志信息段,follower反馈给leader并广播给其他节点,leader根据follower节点的确认信息,在时间约束下,随机重发日志消息给没有收到confirm消息的active follower节点,直到收到超过半数的follower节点的confirm消息
      • Leader节点通过commitParagIndex参数观察全网段索引日志的RPC确认情况,并不断向外界广播段日志集合中段索引日志的RPC确认情况。对尚未达成半共识的消息进行日志记录。
    • broadcast transaction proposal算法负责遍历节点列表,将相应的日志消息分配给不同的节点,并通过mapLog数组记录这些消息,如algorithm所示

    • 计数follower节点的返回应答,随机选择active节点发送在超时时间中未达到一半标记的事务提议 交易协议,

    • 计数从follower节点返回的 AckParagIndex信息直到一半以上节点都返回确认反馈

    • 分派思想下follower节点的具体步骤。分为AppendLeaderEntries()函数:从leader和follower节点接收日志复制信息。AllCommit()给leader反馈确认信息。

    • 一旦当前轮日志复制请求RPC的AckParagIndex参数达到一半或以上,则可以提交当前轮日志项收集。

      leader节点基于分配思想,将前一轮中超过一半节点的日志集合的哈希值一致作为自己节点在选举完成时的正确性依据。 如果发现领导节点的账本出现故障,可以通过不断与其他follower节点交互,回溯超过一半的哈希值来correct自己的日志集,以确保领导节点的强一致性。 如果follower节点的账本不一致但没有down,则可以请求将该账本复制到已经完成日志集回溯的leader节点,而不影响follower节点正常参与日志复制请求的最新epoch

  • 限制机制补充描述算法:
    • 在提交每一轮日志收集之前,必须收集到当前一轮日志共识中一半以上节点的结果。对于已在网络中提交的每一轮日志共识,至少有一半的节点具有该轮共识的本地提交结果。
    • 改进的Raft算法的每一轮提交日志集都必须包含前一轮日志集的哈希值
    • leader节点不是一个独裁leader节点。领导节点的账本正确性来自于选举完成后对总帐进行自我校正。领导节点通过心跳包收集上一轮日志集一致值的一半以上的哈希值,从而维护自己上一轮日志集的正确性。
    • 回退机制保证崩溃带来的段索引分类账的不一致性,在选举完成后,每个节点放弃对最近一轮的段索引日志集的恢复,并恢复到之前固定的轮数日志本

An Improved Blockchain Consensus Algorithm Based on Raft(Raft算法改进区块链效率相关推荐

  1. Improved Raft Consensus Algorithm in HighReal-Time and Highly Adversarial Environment(Raft算法改进区块链效率

    Raft缺点: 高实时高对抗环境中,无法抵御恶意节点攻击,恶意节点可以RequestVote RPC消息中包含的逻辑时间戳以获得更多选票,leader是恶意节点,它可以篡改客户端发送的日志项,导致其他 ...

  2. 《In Search of an Understandable Consensus Algorithm》翻译

    Abstract Raft是一种用于管理replicated log的consensus algorithm.它能和Paxos产生同样的结果,有着和Paxos同样的性能,但是结构却不同于Paxos:它 ...

  3. 《The swirlds hashgraph consensus algorithm: Fair, fast, byzantine fault tolerance》Hashgraph论文的学习

    参考链接: 论文原文: Baird L. The swirlds hashgraph consensus algorithm: Fair, fast, byzantine fault toleranc ...

  4. 【翻译】How To Become A Blockchain Developer: Crash Course! 区块链开发指南!

    为什么80%的码农都做不了架构师?>>>    In this guide, we are going to map out your journey for becoming a ...

  5. 区块链常见共识算法(consensus)

    什么是共识(consensus)? 共识一词在区块链中尤为重要,并且与更广泛的问题有关在分布式系统中同步状态,使得分布式系统中的不同参与者都(最终)就一个系统范围的状态达成一致,这被称为"达 ...

  6. Blockchain区块链的通俗解释

    以交易为例,逐步理解blockchain 本文基本复制于简书(简书:"白羊Jerry"提到的英文原文是googleweb工程师写的,需要翻墙,请恕我才疏学浅,英文原文中关于不对称加 ...

  7. 当SDS遇见BlockChain 之二:区块链存储为什么势在必行?(SDS的新赛道 - 暗流涌动的区块链存储)...

    这篇文章是我的原创文章,里面的观点有些是基于之前的认知,有些是根据公开的报告上的数字进行的逻辑推理.可能不够准确,欢迎大家留言.私信,或者在微信群里进行讨论.我也希望借此机会通过朋友们的反馈,来进一步 ...

  8. In Search of an Understandable Consensus Algorithm(寻找可理解的共识算法)

    原文见 Raft Consensus Protocol 题目:In Search of an Understandable Consensus Algorithm 作者:Diego Ongaro an ...

  9. 「论文自译」MIT 6.824 In Search of an Understandable Consensus Algorithm (Extended Version)

    文章目录 Abstract 1 - Introduction 2 - Replicated state machines 3 - What's wrong with Paxos? 4 - Design ...

最新文章

  1. 14种轻量级网络综述 — 主干网络篇
  2. 斩获23项冠军,日均调用破万亿!百度交出年度AI成绩单:语音语言领衔技术突破,国产自研成大趋势...
  3. python 命令行参数-Python 获得命令行参数的方法(推荐)
  4. 高翔orbslam_高翔博士分享ORBSLAM2_with_pointcloud_map的安装步骤
  5. Activity configChanges 含义
  6. css中的node.js_在Node App中使用基本HTML,CSS和JavaScript
  7. 国内ios分亨组件,
  8. 素数类型C语言题目总结
  9. 将mysql数据库中的图片读出来的_MySQL存入图片+Qt读入读出数据库中的图片
  10. VisualSVN Server更改SVN版本库存放路径的方法
  11. Linux root找回密码的方法
  12. 图像处理之:最大类间方差法法进行图像二值化处理
  13. STM32f429开发中USB读写文件涉及到的库移植
  14. 安徽师大附中%你赛day9 T3 贵 解题报告
  15. css圣杯布局与双飞翼布局_CSS布局研讨会已于2018年更新
  16. Express4.X版本修改默认模板jade为ejs并且试用html为视图模板后缀名
  17. C#导出Word总结
  18. logistic回归
  19. Elasticsearch-地理坐标点数据类型
  20. 《研发管理破局》笔记 03 - 研发质量管理

热门文章

  1. 网络安全内外忧患,发现儿童平板电脑中含有漏洞,容易遭遇黑客.
  2. Verilog 习题笔记_实例化模块多路复用器
  3. openGL阴影实现(硬阴影)
  4. 基于主动视觉机制的深度学习--一个综合池化框架
  5. 2020年中级数据库系统工程师考试笔记2—程序语言基础知识
  6. warning - Launch image are deprecated in iOS13.0. Use a launch storyboard or XIB instead
  7. Python入门程序 字符串应用(学号判断程序、密码破解程序、身份证的秘密)
  8. 人才招聘①期 | 中国电信IT研发中心招聘多个职位
  9. GIS(地理信息系统/地理信息科学)职称评审三:中科院和人社部职称评审结果公示对比
  10. 如何快速判断一个文件是否为病毒,如何检测自己的电脑是不是中毒了或者存在病毒软件?