【共识算法(1)】适用于私链共识算法-“raft”
背景:共识机制-所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。
raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法。作者研究raft算法也是由于其实现上已有一些成熟的源码,所以进行了实践。对于raft算法的学习,在网上搜了几个比较受用的视频和源码在这里分享给大家。
在一些资料上经常将paxos算法和PBFT算法和raft做比较,paxos由于其复杂和难以理解,所以大多数人会选择直接理解raft,在电力领域的共识机制研究大多会选择在POS和POW上改进,而一些资料也将PBFT运用于虚拟电厂交易,但对于PBFT的Python源码也是少之又少,所以对于小白为什么不从raft理解呢?在一些资料里面说到的在raft进行选举时候当选过程是谁快谁当选,其实过程并非,在对一个日志较少的节点使其超时会发现,并不能选举成功。
源码:https://timequark.github.io/raft/这是一个比较成熟的源码,但在学习之前建议先阅读raft白皮书,了解raft算法原理的大致流程。除此之外作者还找到了一个学习分布式系统相关的某站神仙up,对于raft的讲解很是透彻
相关的源码链接:github.com/visualizit/vraft.两者的不同在于后者的代码实现的场景较少,就只是一些基础的共识,但不会影响对该算法的理解。
说完了一些源码,最重要的还是原理,https://raft.github.io/,这里主要是对基础的投票选举和日志复用的过程动态演示几种场景下的共识,便于理解。
在这里仿真实现用的是pycharm,一些新手小白还建议先了解一些flask有关知识,在对算法改进以及实现上才不会踩坑。
由于作者是研究能源电力的,所以在下面结合电力领域,对raft算法的应用做一些论文梳理:
基于区块链的可信部分共识
基于区块链的网端数据监管机制
主要在监管链的部分将监管部门设为主节点进行管理。
电网信息互联
数据中心将在各个区域进行多点布局。因此,基于传统的RAFT算法,本文将从链中的所有节点到数据中心站所位于的节点,减少了可以作为选举机制候选对象的节点。当引导节点的时钟周期已满时,将选择其他数据中心站的候选节点。同时,非数据中心站节点将不再被视为候选节点或领导者节点。
后话:现在在对raft结合电力领域的研究还较少,作者认为主要原因还在于raft算法适用范围较小,而电力市场又属于一个比较复杂的市场,但跟一些传统的共识算法相比较还是有很大的应用空间。
参考来源:
[1]基于区块链的可信光网络资源共识研究
[2]基于区块链的能源调度交易与安全监管研究
[3]Research on Distributed New Energy Information Interconnection Mode Based on Blockchain Consensus Mechanism," 2020 5th International Conference on Computer and Communication Systems (ICCCS)。
另外有相同方向研究者欢迎私聊作者,之后还会推出关于区块链以及一些电力相关知识,欢迎猛戳~