共识算法入门

raft算法 算法动画演示:
节点的三种角色:跟随者(follower)、候选人(candidate)、领导者(leader)
最大容错故障节点:(n - 1)/ 2
选举超时(election timeout):一个节点在成为候选节点(candidate)之前等待的时间,150ms到300ms之间的随机值
心跳超时(heartbeat timeout):心跳超时
pbft算法 最大容错节点数:3f + 1
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 阶段,这一阶段已经达成共识,于是节点就会执行请求,写入数据。


2018 Qualcomm创投红杉中国种子基金前沿科技创业大赛在杭州成功举行
首款采用自主国产芯片的光威弈PRO DDR4内存条实现量产
iPhone8什么时候上市:iPhone8最新设计曝光,黑科技逆天
运算放大器关键术语
2020年对Zoom来说是个好年头
共识算法入门
光电传感器的原理与应用
驾驶国六车时有哪些技巧和注意事项?
戴尔用于折叠屏笔记本电脑的新设计专利曝光,带有两面显示屏
踏歌智行与宏大爆破达成战略合作
你愿意让你的酒店变成人工智能酒店吗
韩国芯片发展的重要启示
DSC差示扫描量热仪在医药行业起着举足轻重的作用
荣耀畅玩6x评测:普普通通,满足日常
正确佩戴蓝牙耳机的方法和推荐商品
智能制造等实体经济风口的机遇下,智能传感器市场的发展必将势不可挡
PPT带你了解传感器与检测技术
新型电池技术为电子、混合动力车带来更便宜的能源(图)
金升阳:保障快速交付,开关电源产线赢得市场信赖
小米高端手机已成 10个月里3000+市场销量800万