IT教程 ·

PBFT 算法 java完成(下)

3.【Spring Cloud Alibaba】声明式HTTP客户端-Feign

PBFT 算法的java完成(下)

在上一篇中(假如没有看上一篇博客发起去看上一篇博客),我们引见了运用Java完成PBFT算法中节点的到场,view的同步等操纵。在这篇博客中,我将引见PBFT算法中共鸣历程的完成。

项目地点:

共鸣历程

这个是的官方图,展现的是一个RBFT通例流程。假如想相识更多,能够去参考hyperchain官网,或许我之前的。

 

在共鸣的历程一共有3个阶段:PrePrepare,prepare,commit。上面的图引见的照样比较简朴明了的。下面将用浅显的言语来引见这个历程。

我们想象一个场景,我们生活在一个村庄内里,每一个人都有着本身的小本本,小本本上面记录着这个村庄内里的一切的付出。某一天村庄付出了100¥,然后村长(主节点)将这个付出音讯举行播送,播送的音讯范例是preprepare。村庄中的村民收到这个音讯后,肯定会看看村庄内里是否是真的付出了100¥,假如音讯是真的的话就通知其他的村民村庄内里是真的付出了100¥(音讯范例是prepare)。当一个村名接收到$quorum = lceil frac {N + f +1 }{2 }rceil $数目的prepare音讯,就以为这个音讯是真的音讯(固然实际上的状况会更庞杂),然后向外播送我赞同(commit)这份付出写入帐本,当一个节点收到quorum个commit音讯的时刻,就会真的将这个100¥的生意业务信息写入本身的小本本。

上面就是PBFT算法的生意业务部份的逻辑,实在照样蛮好明白的,遵照少数服从多数的准绳。

接下来了将在代码的方面来明白这个历程。

代码完成

继承祭出我的神笔马良。

起首我们假定一个有4个节点,个中一个主节点3个从节点。

主节点起首向一切的从节点播送pre-prepare音讯(个中AC代表A_Client,AS代表A_Server)。

 

从节点(上面图片中的BCD节点)肯定会(实际上不肯定会,由于会遭到收集的要素)收到主节点发送过来的pre_prepare音讯,当从节点考证此音讯准确时,就会播送prepare音讯。下面的一张图就是B从节点向ACD节点发送prepare音讯。

 

在上面我们晓得B节点会播送音讯,其他的CD节点一样会播送音讯。当节点遭到肯定数目(quorum)的prepare音讯时,就会向外播送commit音讯。

 

一样当节点遭到肯定数目(quorum)的commit音讯时,节点就会将这个音讯写入本身的块(block)中。

 

以上就是共鸣历程当中的手绘流程图,在图中我们能够很清晰的晓得当发送音讯的时刻,谁饰演的是客户端,谁又饰演的是服务端。至于为何不是server播送音讯而是client播送音讯,在上一篇博客中已有申明,这里便不再赘述。

emm,至于怎样完成,能够去参考我的源代码,由于这个照样挺简朴的,只需我们明白这个历程,实在完成起来照样比较简朴的。

项目地点:,假如有任何问题,迎接在批评区下方留言,或许运用Email私信我。

drf认证组件、权限组件、jwt认证、签发、jwt框架使用

参与评论