fiscobcospbft网络优化(代码片段)

软件工程小施同学 软件工程小施同学     2022-12-24     245

关键词:

FISCO BCOS v2.2.0优化了PBFT消息转发机制和Prepare包的结构,尽量减少网络中冗余的数据包,提升网络效率。

PBFT消息转发优化

为了保证节点断连情况下共识消息包能到达所有节点,FISCO BCOS PBFT共识模块采用了消息转发机制

优化前的消息转发机制如下:

 

对于全连四节点区块链系统,系统TTL(Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量)设置为2时,每个共识消息包均会被转发三次,且节点规模越大、TTL值越大冗余的共识消息包越多。

Leader广播的Prepare包内含有整个区块,多次转发同样的Prepare包会带来巨大的网络开销。

 

为了

  • 在网络全连的情况下,避免冗余的共识消息包;
  • 在网络断连情况下,共识消息包能尽量到达每个共识节点,

FISCO BCOS v2.2.0对PBFT消息转发机制进行了优化,优化后的PBFT消息转发流程如下:

 

下图展示了四节点区块链系统在节点断连情况下,PBFT消息包转发流程:

 

  • node0node1, node2, node3发送PBFT消息,发现node1, node3不在连接列表内,则将PBFT消息msg的forwardNodes字段设置为node1, node3,并将其转发给node2
  • node2收到node1的PBFT消息后,判断forwardNodes字段不为空,则遍历邻居节点列表node1, node3,并将邻居节点从forwardNodes中移除
  • node2node1node3转发更新后的PBFT消息msg;
  • node1node3收到msg后,判断forwardNodes字段为空,认为该消息已经到达了所有节点,不继续转发PBFT消息

优化后的PBFT消息转发策略,源节点在PBFT消息包中加入了forwardNodes字段记录断连节点信息,其他节点收到PBFT消息包后,将消息转发给forwardNodes记录的可达节点,保障PBFT消息包尽量能到达所有节点的同时,减少了网络中冗余的PBFT消息,提升网络效率。

Prepare包结构优化

PBFT共识算法中,Leader向所有节点广播Prepare包,Prepare包内包含Leader节点从交易池打包的整个区块,由于同步模块会将交易同步到所有共识节点,因此Prepare包内区块的交易有很大概率在其他共识节点的交易池命中。

基于这点,FISCO BCOS 2.2.0优化了Prepare包结构,Prepare消息包内的区块仅包含交易哈希,其他节点收到Prepare包后,优先从本地交易池内获取命中交易,缺失的交易向Leader请求。

优化后的Prepare消息包内的区块结构如下:

 

Prepare包处理流程如下:

 

优化Prepare结构后,充分利用了交易池缓存的交易,进一步降低了Prepare消息包的大小,节省了网络流量。

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/consensus/pbft_optimize.html?highlight=filter#id1

linux网络性能优化(代码片段)

Linux网络性能优化我们知道,Linux网络根据TCP/IP模型,构建其网络协议栈。TCP/IP模型由应用层、传输层、网络层、网络接口层等四层组成。而本文将对Linux网络相关性能观测及优化进行分析。性能指标我们常用的衡量网络... 查看详情

神经网络最优化方法(代码片段)

目录最优化方法1-梯度下降GradientDescent2-Mini-BatchGradientdescent3-动量Momentum5-总结最优化方法本文只对吴恩达最优化方法中原理部分进行整理,没有代码部分,需要原始代码可以到GitHub上down下来。文尾附链接。除了使用GradientDescent更... 查看详情

linux网络通信优化方法(代码片段)

Linux网络在性能方面有哪些优化手段可用呢?本文将给出一些开发或者运维中的Linux网络性能优化建议。要注意的是,每一种性能优化方法都有它适用或者不适用的应用场景,应当根据当前的项目现状灵活来选择用或... 查看详情

linux网络通信优化方法(代码片段)

Linux网络在性能方面有哪些优化手段可用呢?本文将给出一些开发或者运维中的Linux网络性能优化建议。要注意的是,每一种性能优化方法都有它适用或者不适用的应用场景,应当根据当前的项目现状灵活来选择用或... 查看详情

基于蝙蝠算法优化bp神经网络的数据分类算法及其matlab实现-附代码(代码片段)

基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码文章目录基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码1蝙蝠算法与BP神经网络分类模型1.1蝙蝠算法BA1.2one-hot编码2基于蝙蝠算法BA优化的BP神经... 查看详情

基于文化算法优化的神经网络预测研究(matlab代码实现)(代码片段)

目录1文化优化算法2 人工神经网络3Matlab代码及详细文章阅读4 基于文化算法优化的神经网络预测研究(Matlab代码实现)运行结果5参考文献 6写在最后1文化优化算法大自然里的各种生物在生存环境中相互竞争,优胜... 查看详情

入门神经网络优化算法:gradientdescent,momentum,nesterovacceleratedgradient(代码片段)

入门神经网络优化算法(一):GradientDescent,Momentum,Nesterovacceleratedgradient入门神经网络优化算法(二):AdaptiveOptimizationMethods:Adagrad,RMSprop, 查看详情

神经网络优化-滑动平均(代码片段)

1滑动平均概述滑动平均(也称为影子值):记录了每一个参数一段时间内过往值的平均,增加了模型的泛化性。滑动平均通常针对所有参数进行优化:W和b,简单地理解,滑动平均像是给参数加了一个影子,参数变化,影子缓慢... 查看详情

神经网络优化-搭建神经网络八股(代码片段)

为提高程序的可复用性,搭建模块化的神经网络八股1前向传播前向传播就是设计、搭建从输入(参数x)到输出(返回值为预测或分类结果y)的完整网络结构,实现前向传播过程,一般将其放在forward.py文件中前向传播需要定义... 查看详情

day785.网络通信优化之通信协议:如何优化rpc网络通信-java性能调优实战(代码片段)

网络通信优化之通信协议:如何优化RPC网络通信Hi,我是阿昌,今天学习记录的是关于网络通信优化之通信协议:如何优化RPC网络通信。微服务框架,其中SpringCloud和Dubbo的使用最为广泛,行业内也一直存在... 查看详情

2018焦作网络赛ktransportship(二进制优化01背包)(代码片段)

题目链接题意:给出若干个物品的数量和单个的重量、问你能不能刚好组成总重S 分析:由于物品过多、想到二进制优化其实这篇博客就是存个二进制优化的写法关于二进制优化的详情、百度一下有更多资料 #include<bits/stdc... 查看详情

python小白的数学建模课-19.网络流优化问题(代码片段)

...,供水管网中的水流,金融系统中的现金流,网络中的信息流。网络流优化问题是基本的网络优化问题,应用非常广泛。网络流优化问题最重要的指标是边的成本和容量限制,既要考虑成本最低,又要满足... 查看详情

神经网络优化-学习率(代码片段)

1学习率的基本定义学习率learning_rate:每次参数更新的幅度。简单示例:假设损失函数loss=(w+1)2,则梯度为参数w初始化为5,学习率为0.2,则运行次数参数w值计算1次55-0.2*(2*5+2)=2.62次2.62.6-0.2*(2*2.6+2)=1.163次1.161.16-0.2*(2*1.16+2)=0.2964次0... 查看详情

flutter网络搜索引擎seo优化友好(代码片段)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBxyJJuX-1633656159521)(https://ducafecat.tech/2021/10/08/translation/flutter-web-seo-friendly/2021-10-08-09-12-55.png)]原文https://medium.com/mindful-engineering/ 查看详情

linux网络性能的15个优化建议(代码片段)

建议1:尽量减少不必要的网络IO我要给出的第一个建议就是不必要用网络IO的尽量不用。是的,网络在现代的互联网世界里承载了很重要的角色。用户通过网络请求线上服务、服务器通过网络读取数据库中数据,通过... 查看详情

神经网络基础部件-优化算法详解(代码片段)

前言所谓深度神经网络的优化算法,即用来更新神经网络参数,并使损失函数最小化的算法。优化算法对于深度学习非常重要,如果说网络参数初始化(模型迭代的初始点)能够决定模型是否收敛,那优化算法的性能则直接影响... 查看详情

网络优化(代码片段)

"""常用的网络优化器有四种:SGD,Momentum,RMSprop,Adam通过网络的运行结果可以知道SGD的收敛效果最差"""importtorchimporttorch.utils.dataasDataimporttorch.nn.functionalasFfromtorch.autogradimportVariableimportmatplotlib.pyplotasplt#超参数LR=0.01BATCH_SIZE=32EPOCH=12#数... 查看详情

神经网络优化-正则化(代码片段)

---恢复内容开始---在机器学习中,有时候我们基于一个数据集训练的模型对该模型的正确率非常高,而该模型对没有见过的数据集很难做出正确的响应;那么这个模型就存在过拟合现象。为了缓解或避免过拟合现象,我们通常用... 查看详情