售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
在柏拉图的早期版本中,块中的事务由验证器以串行模式执行,无论它们是打包块还是验证块。在计算MPT树的根(散列)时,从根节点开始依次递归计算根,从算法层面的分析也属于根的“串行”计算。
以上两种“串行计算”不能充分利用硬件多核的优势。实际上,在执行事务和计算根的过程中,可以并行执行没有“依赖性”的计算步骤,然后将并行计算的结果汇总成最终结果。
在柏拉图0.13.0的底层版本中,事务并行和并行计算根是通过有向无环图技术实现的。DAG图是最复杂的数据结构之一,它由一组顶点和一组连接两个顶点的边组成。测试表明,事务并行TPS优于事务串行版本,整体性能提高了30%左右。
事务并行性
块中的事务是按顺序打包的,这要求相互依赖的事务应该保持与打包顺序相同的顺序,而相互不依赖的事务实际上可以并行执行。我们可以使用有向无环图来分析事务的依赖性。
技术术语
顶点:图形中的一点
边:连接两个顶点的线段称为边
度数:从一个顶点开始,如果有几条边,它被称为顶点有多少度,或者顶点的度数是多少,度数
路径:由边连接的一组顶点,按顺序从一个顶点到另一个顶点
简单路径:没有重复顶点的路径
环:至少包含一条边的路径,其起点和终点是同一个顶点
范围:从顶点开始的边的总数
穿透:指向顶点的边的总数
根据原始事务列表的执行顺序,可以通过事务的发起地址和接收地址来识别事务之间的依赖关系,并构建事务的依赖DAG图。所有内部度为0的事务(没有相关的先行事务)都可以并行执行。
并行计算根
通过深入了解MPT的数据结构,发现叶节点可以并行计算哈希,而MPT就像DAG一样,所以MPT可以转换成DAG进行并行计算。
假设插入了以下数据:
生成MPT树,如下图所示。MPT树可以生成相应的DAG图,度为0的节点可以并行计算哈希。
性能比较
对于串行和并行版本,25个认证节点(机器配置4核8G)分别进行了5000个账户的转移压力测试,性能数据如下:
并行版本的性能明显优于串行版本,PlatON将在保证安全性和稳定性的同时不断提高其性能指标,从而为用户提供更好的服务。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!