做网站能用本地的数据库嘛,网站 空间 下载,哪个网站可以免费做网页,推广做黄页网站Raft 协议是一种分布式共识机制#xff0c;这种机制适用于网络中存在一定数量的故障节点#xff0c;但不考虑“恶意”节点的情况#xff0c;所以更适合作为私有链和联盟链的共识算法。
在此协议中#xff0c;每个节点有三种状态#xff1a;
候选者 #xff0c;可以被选…Raft 协议是一种分布式共识机制这种机制适用于网络中存在一定数量的故障节点但不考虑“恶意”节点的情况所以更适合作为私有链和联盟链的共识算法。
在此协议中每个节点有三种状态
候选者 可以被选为一个新的领导者追随者 类似选民追随领导者选举者对追随者发送指令比如区块链写入区块数据如果追随者收不到领导者的消息则会转变为候选者
此协议达成共识分为两个阶段
领导者选举日志复制
领导者选举过程
它由两个时间间隔控制分别为选举时间间隔和心跳时间间隔。 选举时间间隔是指候选者成为领导者的等待时间。 开始时每个节点都是追随者每个节点独立记录自己的选举时间间隔。当A节点在选举时间间隔内没有接受到领导者的指令心跳则会成为候选者之后此节点会向其他节点发送给自己投票的请求其他投给此节点的节点将会重新设置自己的选举时间间隔从零开始计时而若是A节点获得超过半数的投票则会成为领导者o(▽)ブ。 A在成为领导者 Leader 后同时向其他节点发送心跳。在接收到来自节点A心跳 其他节点确认节点A为网络中的选举者然后重新设置选举时间间隔并开始监听节 A的心跳。 心跳时间间隔是指候选者接受领导者的指令的时间间隔若是在此间隔内未接收到心跳指令则会成为候选者o(▽)ブ。 同样每个追随者都会记录自己的心跳时间间隔若B节点在此间隔内未收到领导者A的心跳假设A发生了故障B则会变为候选者向其他节点发送给他投票的请求其他节点则会停止对A的心跳监听开始下一轮的投票并重新设置自己的选举时间间隔。 每一个追随者一直监听领导者的心跳如果在心跳时间间隔内没有接收到心跳在等待一个选举时间间隔后则会变为候选者即每个追随者都记录着心跳时间间隔和选举时间间隔。 若是在某一个时刻有两个节点均没有接收到请求或者心跳同时成为候选者则会分别发起投票各自投各自一票由于发送请求存在先后顺序且每个节点在一轮选举中只能投一次票故经过多轮选举最后都会产生领导者。
日志复制
作为领导者的节点掌握整个网络的日志复制比如记录区块的工作。 例如领导者会向追随者发送添加区块到区块链的命令但领导者不会立即将区块数据添加到区块链而是在得到大多数追随者的确认才会更新自己的区块链的信息也会在下一次的心跳通知追随者更新区块链的信息。
由Raft协议原理可知对于私有链如果网络中永远不会发生通信故障则本质上是类中心化的区块链因为所有的区块链都会由第一个领导者产生。