长安链ChainMaker v2.2.x的性能追求之Vm-Docker-Go优化

在长安链ChainMaker灵活可装配的设计理念下,底链需要满足各种复杂业务场景的需求,不断突破性能瓶颈是长安链研发工作中重要的一环。在保障执行一致性的前提下,并行执行是提升性能的重要手段,例如:采用基于DAG的并行调度算法提升交易执行的吞吐量、同步模块设计中流水线的工作方式提高同步的并行化以提升效率;在v2.2.x版本中,从VM-Docker-Go的角度出发进行优化是我们的选择之一:以多进程并发处理交易使得合约执行效率得到极大提升。

v2.2.0及v2.2.1版本中的主要的改动有:

1. 采用多进程并发处理交易;

2. 增加长安链与vm-docker-go的连接;

3. vm-docker-go在v2.2.1版本中支持独立部署。

下面将详细介绍升级的具体细节。

多进程并发

在v2.1.0版本中,对于同一合约的交易,vm-docker-go会拉起一个进程运行,这些交易在这个进程中是串行执行的。不同的合约会拉起不同的进程在同一个容器中运行。

在v2.2.x版本中,vm-docker-go会对同一个合约同时拉起多个进程运行交易,也就是说,同一时间,不同的交易在vm-docker-go中是并行执行的。

其中,在v2.2.0版本中,每一个进程都拥有一个交易队列,进程与合约绑定。当有交易到来时,会根据最小分配算法将交易加入到进程的交易队列中,进程将逐一执行交易队列当中的交易。

在v2.2.1版本中,取消了进程中的交易队列,相同合约的进程同时监听同一个交易队列,抢占式地从交易队列中获取交易并执行。具体如下:

v2.2.0交易调度流程:

图1:v2.2.0交易调度流程图

1. 交易通过grpc从长安链传到vm-docker-go;

2. grpc把交易添加到docker scheduler中的交易队列中;

3. docker scheduler监听到新的交易,把交易加入到process manager中;

4. process manager根据交易所属合约把交易放在对应的process balance中,这个过程会找到process balance中交易等待队列最小的process,把交易放进去;

5. process运行,执行交易。

最小分配算法

在v2.2.0版本中,交易加入到对应合约进程的过程采用了最小分配算法,具体为:同一合约的进程会被记录下来,当有新的交易到来的时候,process balance会遍历所有的合约进程,找到交易队列最小的进程,把新交易放在其中。

其中,如果找到进程,其中的队列长度超过预定值,则vm-docker-go就会拉起新的进程,并且把该交易加入到新进程的队列中。如果process balance达到最大值(用户设置的最大并行进程数),则交易将重新加入到其他已经存在的合约进程中。

v2.2.1交易调度流程:

图2:v2.2.1交易调度流程图

1. 交易通过grpc从长安链传到vm-docker-go;

2. grpc把交易添加到docker scheduler中的交易队列中;

3. docker scheduler监听到新的交易,把交易加入到process manager中;

4. process manager根据交易所属合约把交易放在对应process balance中的交易队列;

5. process balance中的process会监听同一交易队列,抢占式执行交易。

自适应调整进程数量

在并发执行同一合约的交易过程中,vm-docker-go会自动增加或者减少合约进程。如果同一合约的交易持续增加,新的进程会执行增加,直到达到用户设置的最大并发进程数。

当合约进程一段时间内不运行交易,它会被销毁,以节省资源,默认等待时间为10分钟。

结语:

长安链ChainMaker一直重视对于性能的优化,并在每个版本迭代中不断挖掘性能潜力,保持行业领先水平。

RECOMMEND

推荐阅读

一文说清长安链ChainMaker同步模块

坚持自主可控,长安链ChainMaker全面拥抱国密的技术实践

长安链ChainMaker在线合约编辑器-SmartEditor

Tips

更多长安链开源项目QA,可登录开源社区、技术文档库查看。

下载源码

https://git.chainmaker.org.cn/chainmaker/chainmaker-go

查阅文档

https://docs.chainmaker.org.cn/

长安链ChainMaker案例征集

http://www.wenjuan.com/s/UZBZJvhFGte/

“长安链ChainMaker”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界“。

猜你喜欢

转载自blog.csdn.net/weixin_55760491/article/details/124881782