一种链码资源调度方法及装置与流程

摘要: 本公开属于区块链,尤其涉及一种链码资源调度方法及装置。背景技术:1、区块链技术作为一种去中心化、不可篡改的分布式账本技术,近年来在政务数据共享、供应链金融、跨境...
一种链码资源调度方法及装置与流程

本公开属于区块链,尤其涉及一种链码资源调度方法及装置。

背景技术:

1、区块链技术作为一种去中心化、不可篡改的分布式账本技术,近年来在政务数据共享、供应链金融、跨境支付等领域得到了广泛应用。根据节点准入机制与权限控制的不同,区块链主要分为公有链、私有链与联盟链三类。其中,联盟链(consortium blockchain)是由若干具有业务关联的特定机构共同参与管理的区块链系统,各机构运行一个或多个节点,交易与共识过程仅对联盟内成员开放,兼具隐私性、高性能与可监管性。因此,联盟链已成为企业级应用的主流选择。

2、在联盟链架构中,链码(chain code,智能合约) 是承载业务逻辑的载体。执行节点(peer节点)负责接收客户端发起的交易提案(proposal),对链码进行模拟执行(simulation),生成包含状态变更信息的读写集(rwset),并提交至共识网络。由于执行节点需要在有限的计算、存储与i/o资源下并行处理大量提案,链码执行阶段的资源调度与稳定性保障成为决定系统整体性能的关键环节。

3、目前,主流区块链平台针对链码执行过程中的资源控制主要采用以下两类技术方案:

4、(1)基于资源计量的事后控制机制

5、以以太坊(ethereum)为代表的公有链通常采用 gas机制。该机制为链码(智能合约)中的每一条操作指令预设一个资源消耗单位(gas),在链码执行过程中实时扣除相应费用,当账户余额不足或gas耗尽时立即终止执行。该机制主要用于防止死循环等恶意代码消耗全网资源,但在联盟链场景下,其本质是“先消耗、后干预”的事后控制,无法在执行前预判风险。

6、(2)基于执行约束的硬性熔断机制

7、以hyperledger fabric为代表的联盟链平台通常采用 执行超时与容器资源隔离机制。具体做法包括:设置链码执行的最长超时时间(timeout)、通过docker容器限制链码可用的cpu与内存上限。当链码执行时间超过预设阈值或触及容器资源墙时,执行节点会直接强制终止该链码容器。该方法实现简单,但控制粒度极粗,仅能采取“执行完成”或“强制杀死”两种极端策略。

8、由此可见,无论是gas机制还是超时机制,都必须等到链码开始运行并消耗资源后才能做出反应。面对参数规模巨大、涉及海量状态读写的提案交易,系统往往在瞬间被拖垮,导致节点阻塞甚至崩溃,影响了系统运行的稳定性。而且,现有技术中,一旦提案判定为超时或者超资源,便直接终止执行,容易造成提案交易执行失败。

技术实现思路

1、为解决上述问题,本公开提供了一种链码资源调度方法及装置,用以在保证系统运行稳定的情况下,提升系统资源利用效率,提高提案交易执行成功率。

2、本发明提供一种链码资源调度方法,包括:

3、接收提案交易请求,对所述提案交易请求进行语义解析,提取表征资源消耗的语义特征生成语义特征向量;

4、根据所述语义特征向量,生成资源预算参数,所述资源预算参数包括最大操作频率阈值;

5、根据所述资源预算参数和实时资源负载信息,确定所述提案交易请求的执行方式;

6、在根据所述执行方式执行所述提案交易请求时,如果判断出链码当前操作频率大于所述最大操作频率阈值,则根据所述最大操作频率间值和当前操作频率,生成延迟注入时间;

7、根据所述延迟注入时间延迟执行。

8、进一步的,所述语义特征包括链码标识,调用函数名称和参数列表;

9、接收提案交易请求,对所述提案交易请求进行语义解析,提取表征资源消耗的语义特征生成语义特征向量,包括:

10、获取所述参数列表的数组长度或字节大小,确定所述提案交易请求的参数操作规模;

11、根据所述调用函数名称或者参数关键字,匹配识别所述提案交易请求的参数操作类型;

12、根据所述链码标识,查询相应链码的历史执行数据;

13、将所述参数操作规模,参数操作类型和历史执行数据编码为语义特征向量。

14、进一步的,所述资源预算参数还包括最大允许执行时间和最大读写集大小;

15、根据所述语义特征向量,生成资源预算参数,包括:

16、根据预先定义的一组权重参数,构建资源评分函数,所述权重参数包括参数规模权重,操作类型权重,读写密集程度权重和历史执行数据权重中的一个或多个;

17、根据所述语义特征向量和资源评分函数,确定所述提案交易请求的资源评分根据所述资源评分所处的数值区间,映射生成资源预算参数。

18、进一步的,根据所述资源预算参数和实时资源负载信息,确定所述提案交易请求的执行方式,包括:

19、如果根据实时资源负载信息确定当前资源负载低于预设的资源负载阈值,则允许所述提案交易请求直接进入执行阶段;

20、如果根据实时资源负载信息确定当前资源负载不低于所述资源负载阈值且所述资源评分大于预设的第一资源评分阈值,则将所述提案交易请求加入调度队列;

21、如果根据实时资源负载信息确定当前资源负载不低于所述资源负载阈值且所述资源评分大于预设的第二资源评分阈值,则拒绝执行所述提案交易请求。

22、进一步的,所述调度队列中,按照资源评分由低到高的顺序或者按照业务优先级由高到低的顺序排队执行。

23、进一步的,在根据所述执行方式执行所述提案交易请求时,按照以下流程确定当前操作频率:

24、采用滑动窗口统计设定的时间窗口内,状态读取请求或状态写入请求的累计操作次数;

25、确定单位时间内状态读取请求或状态写入请求的操作次数为当前操作频率。

26、进一步的,在执行所述提案交易请求过程中,还包括:

27、实时监测链码执行状态,所述链码执行状态包括以下至少一项:读写集规模,执行时间和资源使用趋势;

28、在判断出链码执行状态异常的情况下,中断链码执行。

29、本发明还提供一种链码资源调度装置,用于实现上述方法,包括:

30、语义分析模块,用于接收提案交易请求,对所述提案交易请求进行语义解析,提取表征资源消耗的语义特征生成语义特征向量;

31、资源评估模块,用于根据所述语义特征向量,生成资源预算参数,所述资源预算参数包括最大操作频率阔值;

32、入口调度模块,用于根据所述资源预算参数和实寸资源负载信息,确定所述提案交易请求的执行方式;

33、执行监控模块,用于在根据所述执行方式执行所述提案交易请求时,判断链码当前操作频率是否大于所述最大操作频率阈值;

34、动态调节模块,用于在所述执行监控模块判断出链码当前操作频率大于所述最大操作频率阈值的情况下,根据所述最大操作频率阈值和当前操作频率,生成延迟注入时间;根据所述延迟注入时间延迟执行。

35、本发明还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口和存储器通过通信总线完成相互间的通信;

36、存储器,用于存放计算机程序;

37、处理器,用于执行存储器上所存放的程序时,实现上述方法。

38、本发明还提供一种计算机存储介质,计算机存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述方法。

39、与现有技术相比,本公开具有如下优点:

40、本公开实施例提供的链码资源调度方法,通过在链码执行前对提案交易请求进行语义解析并据此生成资源预算参数,从而实现了在资源消耗之前预判风险,同时结合系统实时负载进行资源调度,有效避免了高负载提案交易在系统负载高时执行的问题,保证了系统运行的稳定性。

41、进一步的,根据生成的资源预算参数,在监控到链码操作频率大于最大操作频率阈值时,通过延迟执行的方式在链码下一次操作前注入与超出量成比例的等待时间,相比于现有技术中资源耗尽后终止执行的简单粗暴控制方式,通过延迟执行方式对链码执行速率根据链码操作频率与最大操作频率阈值之间的差值进行动态调节,实现了资源平滑使用,在保证系统运行稳定性的同时保障了提案交易执行的成功率。

42、通过针对每个提案交易请求,基于语义分析结果生成专属的资源预算参数,并据此针对不同提案交易进行差异化资源调度,实现了精细化的资源分配,避免了一刀切导致的资源浪费或分配不足,提升了资源利用率。

43、本公开实施例中,在系统低负载时允许所有提案交易请求进入执行阶段,在系统高负载时阻挡资源需求极高的提案交易执行,同时针对资源需求高的提案交易建立执行队列,按照资源评分或者业务优先级顺序执行,防止执行节点因瞬时负载过大而发生阻塞或崩溃,提高了系统运行的可靠性。

44、本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。