0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

共识算法入门

清欢科技 来源:清欢科技 作者:清欢科技 2022-10-13 09:19 次阅读

raft算法

算法动画演示:

节点的三种角色:跟随者(follower)、候选人(candidate)、领导者(leader)

最大容错故障节点:(N - 1)/ 2

选举超时(election timeout):一个节点在成为候选节点(candidate)之前等待的时间,150ms到300ms之间的随机值

心跳超时(heartbeat timeout):心跳超时

pbft算法

最大容错节点数:3f + 1 <= N

算法基本流程:

1.客户端发送请求给主节点

2.主节点广播请求给其他节点,节点执行pbft算法三阶段共识流程

3.节点处理完三阶段流程后,返回消息给客户端

4.客户端收到来自f + 1个节点的相同消息后,代表共识已经完成

pbft算法核心三阶段流程:

pYYBAGNGqCeAZfEAAASCv8Sy1-Y221.png

v:视图编号

d:客户端消息摘要

m:消息内容

n:在[h,H]区间之间,请求编号

i:节点编号

进行主节点签名,v,n,d>

1.Pre-prepare 阶段:节点收到 pre-prepare 消息后,会有两种选择,一种是接受,一种是不接受。什么时候才不接受主节点发来的 pre-prepare 消息呢?一种典型的情况就是如果一个节点接受到了一条 pre-pre 消息,消息里的 v 和 n 在之前收到里的消息是曾经出现过的,但是 d 和 m 却和之前的消息不一致,或者请求编号不在高低水位之间(高低水位的概念在下文会进行解释),这时候就会拒绝请求。拒绝的逻辑就是主节点不会发送两条具有相同的 v 和 n ,但 d 和 m 却不同的消息。

2.Prepare 阶段:节点同意请求后会向其它节点发送 prepare 消息。这里要注意一点,同一时刻不是只有一个节点在进行这个过程,可能有 n 个节点也在进行这个过程。因此节点是有可能收到其它节点发送的 prepare 消息的。在一定时间范围内,如果收到超过 2f 个不同节点的 prepare 消息,就代表 prepare 阶段已经完成。

3.Commit 阶段:于是进入 commit 阶段。向其它节点广播 commit 消息,同理,这个过程可能是有 n 个节点也在进行的。因此可能会收到其它节点发过来的 commit 消息,当收到 2f+1 个 commit 消息后(包括自己),代表大多数节点已经进入 commit 阶段,这一阶段已经达成共识,于是节点就会执行请求,写入数据。

poYBAGNGqC2AQJSnAAe0oa1otFM133.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4612

    浏览量

    92887
收藏 人收藏

    评论

    相关推荐

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+内容简介

    内容简介这是一本深入解读基础算法及其电路设计,以打通算法研发到数字IC设计的实现屏障,以及指导芯片设计工程师从底层掌握复杂电路设计与优化方法为目标的专业技术书。任何芯片(如WiFi芯片、5G芯片
    发表于 11-21 17:14

    【「从算法到电路—数字芯片算法的电路实现」阅读体验】+介绍基础硬件算法模块

    作为嵌入式开发者往往比较关注硬件和软件的协调。本书介绍了除法器,信号发生器,滤波器,分频器等基本算法的电路实现,虽然都是基础内容,但是也是最常用到的基本模块。 随着逆全球化趋势的出现,过去的研发
    发表于 11-21 17:05

    WinCC 7.5入门指南

    WinCC 7.5入门指南
    发表于 10-21 10:37 4次下载

    NHET入门

    电子发烧友网站提供《NHET入门.pdf》资料免费下载
    发表于 10-14 11:26 0次下载
    NHET<b class='flag-5'>入门</b>

    名单公布!【书籍评测活动NO.46】从算法到电路 | 数字芯片算法的电路实现

    设计基本算法电路和复杂算法电路的能力。 作者简介: 本书作者皮特派毕业于厦门大学通信系,先后供职于多家知名芯片公司和创业团队,从事数字电路架构和算法设计工作。著有畅销IC设计书籍《数字IC设计
    发表于 10-09 13:43

    BQ76925入门

    电子发烧友网站提供《BQ76925入门.pdf》资料免费下载
    发表于 09-19 13:34 0次下载
    BQ76925<b class='flag-5'>入门</b>

    MCAN(CAN FD)模块入门

    电子发烧友网站提供《MCAN(CAN FD)模块入门.pdf》资料免费下载
    发表于 09-14 10:08 0次下载
    MCAN(CAN FD)模块<b class='flag-5'>入门</b>

    BQ产品入门指南

    电子发烧友网站提供《BQ产品入门指南.pdf》资料免费下载
    发表于 09-02 12:00 4次下载
    BQ产品<b class='flag-5'>入门</b>指南

    爱立信:6G网络架构的三大共识

    ,一个标准化的6G网络架构正是实现这一愿景的基石。为了更好地迎来这个崭新的6G时代,我们将在本期《信观察》与您探讨6G网络架构的早期共识。   6G网络架构的三大共识 爱立信认为,在6G网络架构的最底层,我们需要在以下三个关键领域达成早期
    的头像 发表于 07-23 17:57 1.2w次阅读

    零死角玩转STM32-F1系列pdf

    一天入门STM32,仅一天的时间,是否有真的这么快。不同的人对入门的理解不一样,这篇一天入门STM32 的教程,我们先对入门达成一个共识,如
    发表于 06-18 09:24 9次下载

    HyperLynx入门指南

    HyperLynx入门指南
    发表于 05-06 10:17 4次下载

    如何快速入门FPGA

    快速入门FPGA可以遵循以下步骤: 理解FPGA基础知识: FPGA(Field Programmable Gate Array)即现场可编程门阵列,是作为专用集成电路(ASIC)领域中的一种半定制
    发表于 04-28 09:06

    如何快速入门FPGA?

    快速入门FPGA可以遵循以下步骤: 理解FPGA基础知识: FPGA(Field Programmable Gate Array)即现场可编程门阵列,是作为专用集成电路(ASIC)领域中的一种半定制
    发表于 04-28 08:54

    CW32快速开发入门

    CW32快速开发入门
    的头像 发表于 04-24 18:56 1966次阅读
    CW32快速开发<b class='flag-5'>入门</b>

    allegro快速入门教程

    电子发烧友网站提供《allegro快速入门教程.pdf》资料免费下载
    发表于 02-29 09:32 71次下载