基于区块链的数据处理方法、装置、设备及可读存储介质与流程
未命名
09-29
阅读:69
评论:0
1.本技术涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
背景技术:
2.区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。因为区块链的不可篡改性与真实性,对于区块链的应用也越来越多。
3.对于目前的区块链合约引擎而言,对于智能合约来说基本都采用合约进程的方式运行,为了加快交易的处理速度,通常会采取同合约多进程并发的方式来处理交易相关的合约任务。但是,当区块链网络中的交易数量过多时,并发的合约进程会反复争抢进程资源,频繁的资源调度会影响合约执行效率。
技术实现要素:
4.本技术实施例提供了一种数据处理方法、装置、设备及可读存储介质,可以实现资源的动态分配,提高合约执行效率。
5.本技术实施例一方面提供了一种基于区块链的数据处理方法,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;方法由容器集群管理节点执行;方法包括:通过合约调度器容器单元接收区块链节点发送的业务交易,将业务交易转发至交易负载均衡器中;业务交易包含第一智能合约对应的第一合约标识;在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;一个或多个合约进程容器单元中均部署有第一智能合约;通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。
6.本技术实施例一方面提供了一种基于区块链的数据处理装置,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;装置由容器集群管理节点运行;装置包括:调度模块,用于通过合约调度器容器单元接收区块链节点发送的业务交易,将业务交易转发至交易负载均衡器中;业务交易包含第一智能合约对应的第一合约标识;
负载均衡模块,用于在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;一个或多个合约进程容器单元中均部署有第一智能合约;执行模块,用于通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。
7.其中,负载均衡模块,包括:第一获取单元,用于在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元;第二获取单元,用于获取与第一合约标识关联的一个或多个合约进程容器单元对应的算力资源占用信息,将算力资源占用信息最小的合约进程容器单元确定为符合空闲调度条件的合约进程容器单元;确定单元,用于将符合空闲调度条件的合约进程容器单元作为目标合约进程容器单元。
8.其中,上述数据处理装置,还包括:接收模块,用于通过合约调度器容器单元接收区块链节点发送的合约部署交易;合约部署交易包含第二智能合约对应的第二合约标识以及智能合约代码;创建模块,用于根据合约部署交易创建第一合约进程容器单元;第一合约进程容器单元中包含智能合约代码;发送模块,用于将合约部署交易以及第二合约标识与第一合约进程容器单元的关联关系发送至交易负载均衡器;转发模块,用于在交易负载均衡器中,根据第二合约标识与第一合约进程容器单元的关联关系将合约部署交易转发至第一合约进程容器单元;初始化模块,用于在第一合约进程容器单元中,根据合约部署交易调用智能合约代码进行合约初始化处理,得到合约初始化结果,将合约初始化结果发送至区块链节点;合约初始化结果用于表征第二智能合约在第一合约进程容器单元中的部署情况。
9.其中,合约调度器容器单元包含初始合约进程容器单元创建模板和容器单元创建器;创建模块,包括:第三获取单元,用于在合约调度器容器单元中,获取初始合约进程容器单元创建模板,根据智能合约代码更新初始合约进程容器单元创建模板,得到部署合约进程容器单元创建模板;创建单元,用于通过容器单元创建器运行部署合约进程容器单元模板,创建第一合约进程容器单元。其中,合约部署交易包含交易发起对象信息;上述数据处理装置,还包括:权限验证模块,用于在合约调度器容器单元中,根据交易发起对象信息进行部署权限验证处理,得到部署权限验证结果;
权限验证模块,还用于若部署权限验证结果为部署权限验证通过结果,则调用创建模块执行根据合约部署交易创建第一合约进程容器单元的步骤;权限验证模块,还用于若部署权限验证结果为部署权限验证不通过结果,则向区块链节点发送权限验证不通过提示信息。
10.其中,容器集群管理节点还包含合约审计容器单元;上述数据处理装置,还包括:合约审计模块,用于通过合约调度器容器单元从合约部署交易中获取智能合约代码,将智能合约代码发送至合约审计容器单元;合约审计模块,还用于在合约审计容器单元中,对智能合约代码进行代码安全验证处理,得到安全验证结果,将安全验证结果发送至合约调度器容器单元;合约审计模块,还用于若安全验证结果为安全验证通过结果,则在合约调度器容器单元中,调用创建模块执行根据合约部署交易创建第一合约进程容器单元的步骤;合约审计模块,还用于若安全验证结果为安全验证不通过结果,则通过合约调度器容器单元向区块链节点发送安全验证不通过提示信息。
11.其中,合约部署交易还包含第一水平扩缩容参数;容器集群管理节点还包含水平扩缩容组件;上述数据处理装置,还包括:扩缩容对象创建模块,用于在合约调度器容器单元中,根据第一水平扩缩容参数创建针对第二合约标识对应的水平扩缩容对象;第二合约标识对应的水平扩缩容对象用于指示水平扩缩容组件根据第二合约标识对应的平均算力资源占用信息以及第一水平扩缩容参数调整第一合约进程容器单元对应的合约进程副本容器单元的数量;合约进程副本容器单元是水平扩缩容组件根据第一合约进程容器单元创建的;第一合约进程容器单元和第一合约进程容器单元对应的合约进程副本容器单元构成合约进程容器单元集合中,第二合约标识关联的一个或多个合约进程容器单元。
12.其中,容器集群管理节点还包含水平扩缩容组件;合约进程容器单元集合包含第三合约标识关联的m个合约进程容器单元;m个合约进程容器单元包含第二合约进程容器单元以及m-1个合约进程副本容器单元,m为正整数;m-1个合约进程副本容器单元均是水平扩缩容组件根据第二合约进程容器单元创建的;m个合约进程容器单元均部署有第三合约标识对应的第三智能合约;上述数据处理装置,还包括:信息获取模块,用于通过水平扩缩容组件获取第三合约标识对应的平均算力资源占用信息;平均算力资源占用信息是根据m个合约进程容器单元分别对应的算力资源占用信息进行平均处理得到的;参数获取模块,用于获取第三合约标识对应的第二水平扩缩容参数;水平扩缩容模块,用于根据平均算力资源占用信息和第二水平扩缩容参数对m个合约进程容器单元进行水平扩缩容处理。
13.其中,第二水平扩缩容参数包含算力资源最大占用阈值和容器单元最大数量;水平扩缩容模块,包括:扩展数量确定单元,用于若平均算力资源占用信息超过算力资源最大占用阈值,
则根据m、算力资源最大占用阈值、容器单元最大数量以及平均算力占用信息确定预扩展副本容器单元数量;m和预扩展副本容器单元数量的总和小于或等于容器单元最大数量;扩展单元,用于根据第二合约进程容器单元创建预扩展副本容器单元数量对应的扩展合约进程副本容器单元,将扩展合约进程副本容器单元添加至合约进程容器单元集合,将扩展合约进程副本容器单元与第三合约标识的关联关系发送至交易负载均衡器。
14.其中,扩展数量确定单元,包括:系数确定子单元,用于将平均算力占用信息与算力资源最大占用阈值的比值,确定为调整系数;计算子单元,用于将调整系数与m相乘取整处理,得到调整总数量;计算子单元,还用于若调整总数量小于或等于容器单元最大数量,则将调整总数量与m的差值,确定为预扩展副本容器单元数量;计算子单元,还用于若调整总数量大于容器单元最大数量,则将容器单元最大数量与m的差值,确定为预扩展副本容器单元数量。
15.其中,第二水平扩缩容参数包含算力资源最小占用阈值和容器单元最小数量;水平扩缩容模块,包括:缩减数量确定单元,用于若平均算力资源占用信息小于算力资源最小占用阈值,则根据m、算力资源最小占用阈值、容器单元最小数量以及平均算力占用信息确定预缩减副本容器单元数量;m和预缩减副本容器单元数量的差值大于或等于容器单元最小数量;缩减单元,用于从m-1个合约进程副本容器单元中,选择预缩减副本容器单元数量对应的合约进程副本容器单元,作为待缩减合约进程副本容器单元;缩减单元,还用于当确定待缩减合约进程副本容器单元处于空闲条件时,删除待缩减合约进程副本容器单元,在交易负载均衡器中,删除待缩减合约进程副本容器单元与第三合约标识的关联关系。
16.其中,合约调度器容器单元还包括容器单元销毁器;合约进程容器单元包含第四合约标识关联的n个合约进程容器单元,n为正整数;上述数据处理装置,还包括:调用获取模块,用于获取第四合约标识对应的第四智能合约在目标时间段内的调用情况;清空模块,用于若调用情况指示第四智能合约满足无任务调用条件,则通过容器单元销毁器清空第四合约标识关联的n个合约进程容器单元。
17.本技术实施例一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信网元,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行本技术实施例中的方法。
18.本技术实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本技术实施例中的方法。
19.本技术实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该
计算机设备执行本技术实施例中的方法。
20.本技术实施例中,区块链网络中的每个区块链节点均可以对应有容器集群管理节点,该容器集群管理节点中可以包含有合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合,该容器集群管理节点可以通过合约调度器容器单元接收区块链节点发送的包含第一智能合约的第一合约标识的业务交易,并将业务交易转发至交易负载均衡器中;然后,在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,然后从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;其中,一个或多个合约进程容器单元中均部署有第一智能合约;最后,可以通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。通过本技术实施例提供的方法,区块链中的智能合约部署在不同的合约进程容器单元中,由于合约进程容器单元之间具有隔离性,可以避免不同智能合约对应的合约进程之间相互干扰,此外,同个智能合约可以将其部署在多个合约进程容器单元中,当有多个交易同时间段调用同一智能合约时,可以通过交易负载均衡器实现资源的动态分配,即将交易发送至空闲的合约进程容器单元,减少同个智能合约对应的多个合约进程之间的资源争抢,提高合约执行效率。
附图说明
21.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术实施例提供的一种网络架构示意图;图2是本技术实施例提供的一种基于区块链的数据处理方法的场景示意图;图3是本技术实施例提供的一种基于区块链的数据处理方法的流程示意图;图4是本技术实施例提供的另一种基于区块链的数据处理方法的流程示意图;图5是本技术实施例提供的又一种基于区块链的数据处理方法的流程示意图;图6是本技术实施例提供的一种基于区块链的合约引擎命名空间的示意图;图7是本技术实施例提供的一种智能合约部署的流程示意图;图8是本技术实施例提供的一种智能合约调用的流程示意图;图9是本技术实施例提供的一种合约进程容器单元的动态扩展的流程示意图;图10是本技术实施例提供的一种基于区块链的数据处理装置的结构示意图;图11是本技术实施例提供的一种计算机设备的结构示意。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.为了便于理解,首先对部分名词进行以下简单解释:1、区块链(block chain):狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
25.区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
26.2、区块(block):是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和前继区块对应的哈希值的数据结构,区块经过网络的共识机制验证并确认区块中的交易。区块包括区块头(block header)以及区块体(block body),区块头可以记录当前区块的元信息,包含当前版本号、前继区块对应的哈希值、时间戳、随机数、默克尔树根(merkle root)的哈希值等数据。区块体可以记录一段时间内所生成的详细数据,包括当前区块经过验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现形式。此外,区块体的详细数据可以包括通过默克尔树(merkle tree)的哈希过程,生成唯一的merkle root记录于区块头。
27.前继区块,也称父区块(parent block),区块链通过在区块头记录区块对应的哈希值以及父区块对应的哈希值实现时间上的排序。
28.3、哈希值(hash):也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
29.4、智能合约(smart contract):智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约的概念具备承诺、协议、数字形式三大要素,因此能够将区块链的应用范围扩展至金融行业交易、支付、结算和清算的各个环节。智能合约是指当一个预先编好的条件被触发时,立即执行相应的合同条款,其工作原理类似于计算机程序的if-then语句。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追溯且不可逆转。
30.5、kubernetes(容器集群管理系统):kubernetes (可简称为k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一个可移植的、可扩展的、自我修复的运行环境,可以在公共云、私有云和混合云中运行。kubernetes 可以管理多个容器化应用程序,提供负载平衡、自动伸缩、自动恢复等功能,使得容器化应用程序的部署和管理更加简单高效。
31.6、hpa(水平扩缩容):kubernetes 的 hpa(horizontal pod autoscaler)是一种自动化的机制,可以根据应用程序负载的变化动态地调整应用程序的副本数量,以保持应用程序的可用性和性能。hpa 会实时获取容器的 cpu(central processing unit,中央处
理器) 使用率、内存使用率或自定义指标,并在需要时自动扩展或缩小应用程序的副本数量,以满足负载需求。例如,当容器的 cpu 使用率超过预设的阈值时,hpa 可以自动增加应用程序的副本数量,以提高应用程序的处理能力。反之,当容器的 cpu 使用率下降,hpa 可以自动缩小应用程序的副本数量,以节省资源和成本。
32.7、pod(容器单元):kubernetes 的 pod 是 kubernetes 中最小的可部署单元,它是一个或多个容器的集合,它们共享网络和存储资源,并且在同一节点上运行。pod 是 kubernetes 中应用程序的基本构建块,可以包含一个或多个容器,这些容器可以协作运行应用程序或服务。pod 中的容器可以共享同一个网络命名空间,从而可以使用 localhost 通信,也可以共享同一个存储卷,从而共享数据。pod 也可以被视为一个逻辑主机,它可以拥有自己的 ip(internet protocol,网际互连协议) 地址和端口,可以在内部进行容器间通信,也可以通过 kubernetes service(服务) 暴露给外部访问。pod 是 kubernetes 中的一个重要概念,它提供了一种灵活的方式来组织和部署容器化应用程序,同时也允许对容器进行资源限制和隔离,从而提高了应用程序的可靠性和安全性。
33.请参见图1,图1是本技术实施例提供的一种网络架构示意图。请参见图1,图1是本技术实施例提供的一种区块链网络的结构示意图。
34.如图1所示的区块链网络可以包括但不限于联盟链所对应的区块链网络。该区块链网络中可以包括多个区块链节点,多个区块链节点具体可以包括区块链节点10a、区块链节点10b、区块链节点10c、区块链节点10d、
…
、区块链节点10n。其中,每个区块链节点在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以向外界发送数据。为了保证各个区块链节点之间的数据互通,每个区块链节点之间可以存在数据连接,例如区块链节点10a和区块链节点10b之间存在数据连接,区块链节点10a和区块链节点10c之间存在数据连接,区块链节点10b和区块链节点10c之间存在数据连接。
35.可以理解的是,区块链节点之间可以通过上述数据连接进行数据、交易或者区块传输。区块链网络可以基于节点标识实现区块链节点之间的数据连接,对于区块链网络中的每个区块链节点,均具有与其对应的节点标识,而且上述每个区块链节点均可以存储与自身有相连关系的其他区块链节点的节点标识,以便后续根据其他区块链节点的节点标识,将获取到的数据或生成的区块广播至其他区块链节点,例如区块链节点10a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识:表1其中,节点标识可为网络之间互联的协议(internet protocol,ip)地址以及其他
任意一种能够用于标识区块链网络中节点的信息,表1中仅以ip地址为例进行说明。例如,区块链节点10a可以通过节点标识bbb.bbb.bbb.bbb向区块链节点10b发送信息(例如,区块),且区块链节点10b可以通过节点标识aaa.aaa.aaa.aaa确定该信息是由区块链节点10a所发送的。
36.在区块链中,在将一个区块进行上链之前,该区块必须经过区块链网络中的共识节点进行共识,在共识通过后才能将该区块添加到区块链上。可以理解的是,当区块链被用于政府或者商业机构的一些场景中时,并非区块链中的所有参与节点(即上述区块链网络中的区块链节点)都有足够的资源和必要性成为区块链的共识节点。例如,在图1所示的区块链网络中,可以将区块链节点10a、区块链节点10b、区块链节点10c和区块链节点10d作为该区块链网络中的共识节点。区块链网络中的共识节点参与共识,也就是对区块(包含一批交易)进行共识,即对区块进行投票;而非共识节点不参与共识,但会帮助传播区块和投票消息,以及相互同步状态等。
37.如图1所示的区块链网络中,每个区块链节点均可以对应有一个容器集群管理节点,如区块链节点10a可以对应有容器集群管理节点100a、区块链节点10b可以对应有容器集群管理节点100b、
…
、区块链节点10n可以对应有容器集群管理节点100n。其中,容器集群管理节点是指集成有一个容器集群管理系统(即k8s)的节点,每个区块链节点与其对应的容器集群管理节点之间存在数据连接,如区块链节点10c和容器集群管理节点100c之间存在数据连接。区块链节点与其对应的容器集群管理节点可以通过上述数据连接进行数据、交易的传输。其中,可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本技术在此不做限制。
38.可以理解,容器集群管理节点用于部署区块链网络中的智能合约,容器集群管理节点中可以包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合,其中,合约进程容器单元集合中可以包含一个或多个合约进程容器单元,每个合约进程容器单元中均部署有一个智能合约。本技术中,当区块链节点接收到需要调用第一智能合约的业务交易时,可以将业务交易发送至容器集群管理节点包含的部署有第一智能合约的合约进程容器单元中执行,由于不同的合约进程容器单元之间具有隔离性,可以避免与其他合约的调用发生资源争抢,提高合约执行效率。
39.具体的,本技术中,容器集群管理节点可以通过合约调度器容器单元接收区块链节点发送的业务交易,然后将业务交易转发至交易负载均衡器中,该业务交易可以包含第一智能合约对应的第一合约标识,然后,可以在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元,可以理解,获取到的一个或多个合约进程容器单元中均部署有第一智能合约,最后,通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。区块链节点接收到交易执行结果后,可以将其打包进区块然后发送给其他区块链节点进行共识,共识通过后再将交易执行结果写入区块链账本中。
40.可以理解的是,本技术实施例所提供的数据处理方法可以由计算机设备执行,计
算机设备包括但不限于上述容器集群管理节点(可以为终端或者服务器)。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
41.可以理解的是,本技术实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通等场景。例如,区块链节点系统可以对车载终端所发送的一些驾驶行为数据、道路轨迹数据等等进行共识,共识通过后对其进行上链存储。
42.可以理解的是,在本技术的具体实施方式中,涉及到的交易数据、状态数据等相关的数据,当本技术以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。
43.为便于理解上述智能合约的调用过程,请一并参见图2,图2是本技术实施例提供的一种基于区块链的数据处理方法的场景示意图。其中,如图2所示的区块链节点20可以为上述图1所示的区块链网络中的任一区块链节点,如区块链节点20可以为区块链节点10b;此时,如图2所示的容器集群管理节点22可以为上述图1所示的与区块链节点10b对应的容器集群管理节点100b。
44.如图2所示,区块链节点20在接收到携带合约a标识的业务交易21后,需要调用合约a标识对应的合约a来执行业务交易21,区块链节点20会将业务交易21发送至容器集群管理节点22包含的合约调度器容器单元221,容器集群管理节点22会通过合约调度器容器单元221将业务交易21发送至交易负载均衡器222,然后,在交易负载均衡器222中,从容器集群管理节点22包含的合约进程容器单元集合中获取与合约a标识关联的合约进程容器单元,如,合约进程容器单元223,合约进程容器单元224以及合约进程容器单元225,需要说明的是,合约进程容器单元223,合约进程容器单元224以及合约进程容器单元225中均部署有合约a标识对应的合约a。然后,交易负载均衡器222会从与合约a标识关联的合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元。其中,选择符合空闲调度条件的合约进程容器单元可以是选择出一个算力资源占用率低于占用阈值的合约进程容器单元,也可以是从与合约a标识关联的合约进程容器单元中选择算力资源占用率最低的合约进程容器单元,也可以根据实际情况作其他设置,本技术在此不作限制。其中,算力资源可以是cpu资源、内存资源等系统资源中的一个或多个资源。
45.如图2所示,假设容器集群管理节点22通过交易负载均衡器222确定合约进程容器单元224为符合空间调度条件的合约进程容器单元,容器集群管理节点22会通过交易负载均衡器222将业务交易21发送至合约进程容器单元224中,然后在合约进程容器单元224中,调用合约a执行业务交易21,得到交易执行结果,然后,容器集群管理节点22会将交易执行结果发送至区块链节点20。
46.可选的,区块链节点20接收到业务交易21对应的交易执行结果后,可以将业务交易21和交易执行结果打包进行区块,然后发送给区块链网络中的其他区块链节点进行共识,在共识通过后,将业务交易21以及交易执行结果写入区块链账本中。
47.可以理解,区块链中的智能合约部署在不同的合约进程容器单元中,由于合约进
程容器单元之间具有隔离性,可以避免不同智能合约对应的合约进程之间相互干扰,此外,交易负载均衡器会将业务交易转发至符合空闲调度条件的合约进程容器单元中执行,可以减少同个智能合约对应的多个合约进程之间的资源争抢,提高合约执行效率。
48.进一步地,请参见图3,图3是本技术实施例提供的一种基于区块链的数据处理方法的流程示意图。其中,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;其中,该方法可以由容器集群管理节点(例如,上述图1所对应实施例中的容器集群管理节点100a)执行。以下将以本方法由容器集群管理节点执行为例进行说明,其中,该基于区块链的数据处理方法至少可以包括以下步骤s101-步骤s103:步骤s101,通过合约调度器容器单元接收区块链节点发送的业务交易,将所述业务交易转发至交易负载均衡器中;所述业务交易包含第一智能合约对应的第一合约标识。
49.具体的,容器集群管理节点是指集成有kubernetes(下述简称为k8s)的节点,在实际应用中,容器集群管理节点可以包括一个master(管理)服务器和多个node(服务)服务器,其中,master服务器负责k8s集群的调度、管理和运维,而node服务器,是k8s集群中的运算工作负载服务器。pod(容器单元)是k8s中最小的可部署单元,它是一个或多个容器的组合,node服务器可用于作为pod(容器单元)运行的宿主机,以承载被分配的一个或多个pod的运行。可以理解,不同的pod之间具有隔离性。本技术中所提到的容器单元可以部署在不同的node服务器中,也可以部署在同一node服务器中,本技术在此不作限制,可选的,master(管理)服务器和node(服务)服务器所提供的功能也可以集成在同一服务器中,本技术在此不作限制。
50.具体的,合约调度器容器单元用于负责调度所有的需要调用智能合约的业务交易的任务,其中没有部署有智能合约,不过容器集群管理节点中部署有的智能合约的合约文件或者合约代码均可以存储在合约调度器容器单元中留档。可以理解,k8s中的pod可以被视为一个逻辑主机,具有自己的ip地址和端口,因此,区块链节点可以直接将业务交易发送至容器集群管理节点中的合约调度器容器单元。合约调度器容器单元中可以包含网络模块,该网络模块负责接收来自区块链的业务交易或者用于部署智能合约的合约部署交易。
51.具体的,合约调度器容器单元确定接收到的交易为需要调用智能合约的业务交易后,可以将业务交易转发至交易负载均衡器中。其中,交易负载均衡器是一个部署在容器集群管理节点中的应用组件,用于负责将业务交易分发到合适的合约进程容器单元中。
52.步骤s102,在所述交易负载均衡器中,从合约进程容器单元集合中获取与所述第一合约标识关联的一个或多个合约进程容器单元,从所述一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;所述一个或多个合约进程容器单元中均部署有所述第一智能合约。
53.具体的,合约进程容器单元集合中包含容器集群管理节点中的所有合约进程容器单元,其中,合约进程容器单元是实际执行合约任务的容器单元,可以持续运行用于执行合约任务的合约进程。不同的智能合约部署在不同的合约进程容器单元中,针对一些热门的智能合约,可以在多个合约进程容器单元中同时部署同一个智能合约。当有多个需要调用同一个智能合约的业务交易需要执行时,可以通过交易负载均衡器将多个业务交易分发至不同的部署有该智能合约的合约进程容器单元中,从而避免合约进程之间发生算力资源的
争抢。
54.具体的,在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元的一个可行实施过程,可以为:在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,然后获取与第一合约标识关联的一个或多个合约进程容器单元对应的算力资源占用信息,将算力资源占用信息最小的合约进程容器单元确定为符合空闲调度条件的合约进程容器单元;将符合空闲调度条件的合约进程容器单元作为目标合约进程容器单元。其中,算力资源占用信息可以包含cpu资源、内存资源等一个或多个算力资源的占用信息,例如,算力资源占用信息可以包含cpu资源占用率。
55.步骤s103,通过所述交易负载均衡器将所述业务交易发送至所述目标合约进程容器单元,在所述目标合约进程容器单元中,调用所述目标智能合约执行所述业务交易,得到交易执行结果,将所述交易执行结果发送至所述区块链节点。
56.具体的,在确定目标合约进程容器单元后,就可以通过交易负载均衡器将业务交易发送至目标合约进程容器单元,然后容器集群管理节点,可以在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。
57.可选的,区块链节点在接收到交易执行结果后,可以将业务交易以及交易执行结果打包进区块,然后发送给区块链网络中的其他区块链节点进行共识,若共识通过,再将业务交易以及交易执行结果写入区块链账本中。可以理解,其他区块链节点在对区块进行共识时,需要验证交易执行结果的正确性,其他区块链节点可以将业务交易发送至自己对应的容器集群管理节点中执行,执行过程可以参见上述步骤s101-步骤s103,这里不再进行赘述。其他区块链节点若确定自己对应的容器集群管理节点返回的交易执行结果与区块中包含的交易执行结果相同,则可以投出支持共识通过的赞成票。
58.通过本技术实施例提供的方法,区块链中的智能合约部署在不同的合约进程容器单元中,由于合约进程容器单元之间具有隔离性,可以避免不同智能合约对应的合约进程之间相互干扰,此外,同个智能合约可以将其部署在多个合约进程容器单元中,当有多个交易同时间段调用同一智能合约时,可以通过交易负载均衡器实现资源的动态分配,即将交易发送至空闲的合约进程容器单元,减少同个智能合约对应的多个合约进程之间的资源争抢,提高合约执行效率。
59.进一步地,请参见图4,图4是本技术实施例提供的另一种基于区块链的数据处理方法的流程示意图。其中,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;其中,该方法可以由容器集群管理节点(例如,上述图1所对应实施例中的容器集群管理节点100a)执行。以下将以本方法由容器集群管理节点执行为例进行说明,其中,该基于区块链的数据处理方法至少可以包括以下步骤s201-步骤s204:步骤s201,通过合约调度器容器单元接收区块链节点发送的合约部署交易;所述合约部署交易包含第二智能合约对应的第二合约标识以及智能合约代码。
60.具体的,区块链的合约管理人员想要在区块链网络中部署第二智能合约,可以向
区块链节点发起包含第二智能合约对应的第二合约标识以及智能合约代码的合约部署交易,区块链节点审核合约部署交易的合法性后,可以将合约部署交易发送至容器集群管理节点中的合约调度器容器单元,然后容器集群管理节点可以通过合约调度器容器单元去创建部署有第二智能合约的合约进程容器单元。
61.可选的,在创建包含第二智能合约的合约进程容器单元之前,可以先对交易发起对象的身份进行权限验证,以避免没有部署权限的人员在区块链网络中随意部署智能合约。因此在合约部署交易中,可以包含交易发起对象信息,此时容器集群管理节点可以在合约调度器容器单元中,根据交易发起对象信息进行部署权限验证处理,得到部署权限验证结果;若部署权限验证结果为部署权限验证通过结果,则执行步骤s202;若部署权限验证结果为部署权限验证不通过结果,则向区块链节点发送权限验证不通过提示信息。其中,根据交易发起对象信息进行部署权限验证处理,得到部署权限验证结果的一个可行实施过程,可以为:查找权限对象列表,若在权限对象列表中查找到交易发起对象信息,则确定部署权限验证结果为部署权限验证通过结果;若在权限对象列表中未查找到交易发起对象信息,则确定部署权限验证结果为部署权限验证不通过结果。其中,权限对象列表中包含具有部署权限的对象信息。
62.可选的,在创建包含第二智能合约的合约进程容器单元之前,可以先对智能合约的安全性进行审计,以避免智能合约的代码漏洞等情况造成的交易失败或者不安全的问题。容器集群管理节点中还可以包含合约审计容器单元,容器集群管理节点可以通过合约调度器容器单元从合约部署交易中获取智能合约代码,将智能合约代码发送至合约审计容器单元;在合约审计容器单元中,对智能合约代码进行代码安全验证处理,得到安全验证结果,将安全验证结果发送至合约调度器容器单元;若安全验证结果为安全验证通过结果,则在合约调度器容器单元中,执行步骤s202;若安全验证结果为安全验证不通过结果,则通过合约调度器容器单元向区块链节点发送安全验证不通过提示信息。其中,代码安全验证处理可以是对智能合约代码的逻辑性、语法等问题进行安全校验,以确保智能合约代码的安全性。
63.步骤s202,根据所述合约部署交易创建第一合约进程容器单元;所述第一合约进程容器单元中包含所述智能合约代码。
64.具体的,合约调度器容器单元中可以包含初始合约进程容器单元创建模板和容器单元创建器,根据合约部署交易创建第一合约进程容器单元的一个可行实施过程,可以为:在合约调度器容器单元中,获取初始合约进程容器单元创建模板,根据智能合约代码更新初始合约进程容器单元创建模板,得到部署合约进程容器单元创建模板;通过容器单元创建器运行部署合约进程容器单元模板,创建第一合约进程容器单元。其中,初始合约进程容器单元创建模板可以是事先配置的用于创建合约进程容器单元的文件。其中,根据智能合约代码更新初始合约进程容器单元创建模板,可以是将第二智能合约对应的智能合约代码写入初始合约进程容器单元创建模板中的合约相关部分,就可以得到部署合约进程容器单元创建模板。运行部署合约进程容器单元创建模板后,容器集群管理节点就可以创建一个包含有第二智能合约的智能合约代码的第一合约进程容器单元。
65.步骤s203,将所述合约部署交易以及所述第二合约标识与所述第一合约进程容器单元的关联关系发送至交易负载均衡器;在所述交易负载均衡器中,根据所述第二合约标
识与所述第一合约进程容器单元的关联关系将所述合约部署交易转发至所述第一合约进程容器单元。
66.具体的,第一合约进程容器单元在创建后,还需要进行合约初始化,因此,还需要将合约部署交易发送至第一合约进程容器单元中,此时可以通过交易负载均衡器进行合约部署交易的中继转发。此外,容器集群管理节点会在交易负载均衡器中记录第二合约标识与第一合约进程容器单元的关联关系,以便于之后有调用第二智能合约的业务交易时,在交易负载均衡器中,根据该关联关系将业务交易发送至第一合约进程容器单元。
67.步骤s204,在所述第一合约进程容器单元中,根据所述合约部署交易调用所述智能合约代码进行合约初始化处理,得到合约初始化结果,将所述合约初始化结果发送至所述区块链节点;所述合约初始化结果用于表征所述第二智能合约在所述第一合约进程容器单元中的部署情况。
68.具体的,合约部署交易中还可以包含调用第二智能合约中初始化方法的合约初始化请求,容器集群管理节点可以在第一合约进程容器单元中,根据该合约初始化请求调用第二智能合约中的初始化方法,然后执行该初始化方法,以进行合约初始化处理,得到合约初始化结果。其中,合约初始化结果可以包括合约初始化成功结果和合约初始化失败结果,合约初始化成功结果用于表明第二智能合约部署成功,合约初始化失败结果则用于表明第二智能合约部署失败。
69.可选的,合约部署交易中可以包含第一水平扩缩容参数;容器集群管理节点还包含水平扩缩容组件;容器集群管理节点可以在合约调度器容器单元中,根据第一水平扩缩容参数创建针对第二合约标识对应的水平扩缩容对象。其中,水平扩缩容组件可以是k8s集群中的hpa。其中,第二合约标识对应的水平扩缩容对象用于指示水平扩缩容组件根据第二合约标识对应的平均算力资源占用信息以及第一水平扩缩容参数调整第一合约进程容器单元对应的合约进程副本容器单元的数量;合约进程副本容器单元是水平扩缩容组件根据第一合约进程容器单元创建的;第一合约进程容器单元和第一合约进程容器单元对应的合约进程副本容器单元构成合约进程容器单元集合中,第二合约标识关联的一个或多个合约进程容器单元。其中,第二合约标识对应的平均算力资源占用信息是指第二合约标识关联的一个或多个合约进程容器单元分别对应的算力资源占用信息的平均值,也就是第一合约进程容器单元和第一合约进程容器单元对应的合约进程副本容器单元分别对应的算力资源占用信息的平均值。
70.也就是说,在创建第二合约标识对应的水平扩缩容对象后,容器集群管理节点在第二合约标识关联的一个或多个合约进程容器单元的运行过程中,可以通过水平扩缩容组件来动态创建或者删除第一合约进程容器单元对应的合约进程副本容器单元,例如,平均算力资源占用信息为cpu平均占用率为60%,第一水平扩缩容参数包含扩展参数50%和缩减参数20%,因为平均算力资源占用信息大于扩展参数,此时容器集群管理节点可以通过水平扩缩容组件来动态创建一个或者多个第一合约进程容器单元对应的合约进程副本容器单元,来减少已有的合约进程容器单元的算力资源压力。其中,根据水平扩缩容组件对合约进程副本容器单元的创建或者删除的具体实现过程可以参见下述图5所对应实施例中的描述。
71.采用本技术实施例提供的方法,区块链中的智能合约将部署在不同的合约进程容
器单元中,由于合约进程容器单元之间具有隔离性,可以避免智能合约调用时发生资源争抢的问题。可选的,为了避免智能合约被随意部署,容器集群管理节点在响应合约部署交易之前,还可以对合约部署交易对应的交易发起对象进行权限验证,只有通过权限验证的合约部署交易才能被响应。可选的,为了避免有漏洞的合约影响环境稳定性,还可以加入合约审计容器单元,容器集群管理节点在响应合约部署交易之前,都需要先通过合约申请容器单元对其进行审计,从而避免不安全的合约影响系统环境。
72.进一步地,请参见图5,图5是本技术实施例提供的又一种基于区块链的数据处理方法的流程示意图。其中,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;其中,该方法可以由容器集群管理节点(例如,上述图1所对应实施例中的容器集群管理节点100a)执行。以下将以本方法由容器集群管理节点执行为例进行说明,其中,该基于区块链的数据处理方法至少可以包括以下步骤s301-步骤s302:步骤s301,通过水平扩缩容组件获取第三合约标识对应的平均算力资源占用信息。
73.具体的,平均算力资源占用信息是根据m个合约进程容器单元分别对应的算力资源占用信息进行平均处理得到的。其中,m为正整数;m个合约进程容器单元是合约进程容器单元集合中与第三合约标识关联的合约进程容器单元,m个合约进程容器单元包含第二合约进程容器单元以及m-1个合约进程副本容器单元,该m-1个合约进程副本容器单元均是水平扩缩容组件根据第二合约进程容器单元创建的,也就是说,m-1个合约进程副本容器单元均是第二合约进程容器单元的副本。可以理解,m个合约进程容器单元,也就是第二合约进程容器单元与m-1个合约进程副本容器单元中均部署有第三合约标识对应的第三智能合约。
74.具体的,每个合约进程容器单元中均包含有资源检测组件,容器集群管理节点在合约进程容器单元运行时,可以通过资源检测组件实时获取合约进程容器单元的算力资源占用信息,然后将算力资源占用信息从合约进程容器单元中发送至接口服务(即k8s集群中的api服务器),然后再由接口服务转发至水平扩缩容组件。水平扩缩容组件接收到m个合约进程容器单元的算力资源占用信息后,可以对其进行平均处理,从而得到平均算力资源占用信息。
75.步骤s302,获取所述第三合约标识对应的第二水平扩缩容参数,根据所述平均算力资源占用信息和所述第二水平扩缩容参数对m个合约进程容器单元进行水平扩缩容处理。
76.具体的,每个合约标识对应的水平扩缩容参数可以是在为合约标识创建水平扩缩容对象时设置的,具体设置数值和设置参数类型可以基于实际情况来调整,本技术在此不作限制。
77.具体的,第二水平扩缩容参数可以包含算力资源最大占用阈值和容器单元最大数量,根据平均算力资源占用信息和第二水平扩缩容参数对m个合约进程容器单元进行水平扩缩容处理的一个可行实施过程,可以为:若平均算力资源占用信息超过算力资源最大占用阈值,则根据m、算力资源最大占用阈值以及平均算力占用信息确定预扩展副本容器单元数量;m和预扩展副本容器单元数量的总和小于或等于容器单元最大数量;根据第二合约进
程容器单元创建预扩展副本容器单元数量对应的扩展合约进程副本容器单元,将扩展合约进程副本容器单元添加至合约进程容器单元集合,将扩展合约进程副本容器单元与第三合约标识的关联关系发送至交易负载均衡器。其中,根据m、算力资源最大占用阈值以及平均算力占用信息确定预扩展副本容器单元数量的一个可行实施过程,可以为:将平均算力占用信息与算力资源最大占用阈值的比值,确定为调整系数;将调整系数与m相乘取整处理,得到调整总数量;若调整总数量小于或等于容器单元最大数量,则将调整总数量与m的差值,确定为预扩展副本容器单元数量;若调整总数量大于容器单元最大数量,则将容器单元最大数量与m的差值,确定为预扩展副本容器单元数量。其中,相乘取整处理是指对相乘的乘积向上取整,例如,乘积为2.1,向上取整就为3。为便于理解上述过程,假设算力资源最大占用阈值为0.6,容器单元最大数量为6,与合约标识
①
关联的3个合约进程容器单元对应的平均算力资源占用信息为0.8,此时,可以确定调整总数量为0.8∕0.6
×
3=4,因此,预扩展副本容器单元数量就为4-3=1,此时,容器集群管理节点可以通过水平扩缩容组件再创建一个第二合约进程容器单元对应的扩展合约进程副本容器单元,此时,与合约标识
①
关联的合约进程容器单元就变成了4个。
78.具体的,第二水平扩缩容参数可以包含算力资源最小占用阈值和容器单元最小数量;根据平均算力资源占用信息和第二水平扩缩容参数对第二合约进程容器单元进行水平扩缩容处理的一个可行实施过程,可以为:若平均算力资源占用信息小于算力资源最小占用阈值,则根据m、算力资源最小占用阈值、容器单元最小数量以及平均算力占用信息确定预缩减副本容器单元数量;m和预缩减副本容器单元数量的差值大于或等于容器单元最小数量;从m-1个合约进程副本容器单元中,选择预缩减副本容器单元数量对应的合约进程副本容器单元,作为待缩减合约进程副本容器单元;当确定待缩减合约进程副本容器单元处于空闲条件时,删除待缩减合约进程副本容器单元,在交易负载均衡器中,删除待缩减合约进程副本容器单元与第三合约标识的关联关系。其中,根据m、算力资源最小占用阈值、容器单元最小数量以及平均算力占用信息确定预缩减副本容器单元数量的一个可行实施过程,可以为:将平均算力占用信息与算力资源最小占用阈值的比值,确定为调整系数;将调整系数与m相乘取整处理,得到调整总数量;若调整总数量大于或等于容器单元最小数量,则将m与调整总数量的差值,确定为预缩减副本容器单元数量;若调整总数量小于容器单元最小数量,则将m与容器单元最小数量的差值,确定为预缩减副本容器单元数量。其中,空闲条件的设置是为了避免影响待缩减合约进程副本容器单元中的合约执行,例如,空闲条件可以是待缩减合约进程副本容器单元没有合约进程正在执行。
79.可选的,合约调度器容器单元还包括容器单元销毁器;合约进程容器单元包含第四合约标识关联的n个合约进程容器单元,n为正整数。容器集群管理节点可以获取第四合约标识对应的第四智能合约在目标时间段内的调用情况;若调用情况指示第四智能合约满足无任务调用条件,则通过容器单元销毁器清空第四合约标识关联的n个合约进程容器单元。其中,无任务调用条件可以是在目标时间段内一直没有接收到与第四合约标识相关的任务交易,此时可以说明第四智能合约一直没有被调用,因此可以清空部署有第四智能合约的合约进程容器单元,从而释放部署有第四智能合约的合约进程容器单元对应的算力资源。
80.采用本技术实施例提供的方法,容器集群管理节点可以通过水平扩缩容组件来动
态管理部署有第三智能合约的第二合约进程容器单元对应的合约进程副本容器单元的数量,在与第三合约标识关联的m个合约进程容器单元对应的平均算力资源占用信息过高时创建新的合约进程副本容器单元来缓解已有的m个合约进程容器单元的压力,在平均算力资源占用信息过低时删除部分合约进程副本容器单元来释放算力资源,从而保证了算力资源的动态平衡,使得为每个智能合约分配的算力资源更加合理。此外,为了避免大量智能合约安装导致的资源消耗,还可以通过容器单元消耗器来清空长时间没有任务执行的合约进程容器单元,从而保证算力资源动态可循环的调度。
81.进一步地,上述数据处理方法可以通过不同的区块链合约引擎调度方案的系统架构来实现,为便于理解,请参见图6,图6是本技术实施例提供的一种基于区块链的合约引擎命名空间的示意图。其中,合约引擎命名空间是kubernetes中一个单独的命名空间,其作用是为了实现本技术所提出的各个数据处理方法。其中,kubernetes中的命名空间是一种虚拟化的集群层级,用于对kubernetes 资源进行隔离和命名。
82.如图6所示,合约引擎命名空间可以包含合约进程调度pod、合约审计pod、交易负载均衡器以及合约进程pod。其中,合约进程调度pod(即上述各个实施例中所提到的合约调度器容器单元)用于负责调度所有的合约交易的任务;交易负载均衡器(即上述各个实施例中所提到的交易负载均衡器)用于负责将指定合约的交易分发到合适的合约进程pod上;合约进程pod(即上述各个实施例中所提到的合约进程容器单元)是实际执行合约任务的pod,其可以持续运行用于调用智能合约方法的合约进程。
83.如图6所示,合约进程调度pod中可以包括网络模块、鉴权模块、hpa动态管理、合约文件管理、合约进程pod创建器以及合约进程pod销毁器。其中,网络模块负责接收来自区块链的交易(即上述区块链节点发送的业务交易或者合约部署交易);鉴权模块负责对交易的权限进行校验(即进行如上述图4所对应实施例中所提到的权限验证处理);hpa动态管理用于负责对合约进程pod的副本数量进行动态的管理;合约文件管理负责管理所有的合约文件(合约代码);合约进程pod创建器负责创建合约进程pod;合约进程pod销毁器(即上述图5所对应实施例中所述的容器单元销毁器)负责销毁合约进程pod。
84.如图6所示,合约进程pod中可以包括网络模块、合约主代码以及合约sdk(software development kit,软件开发工具包)。其中,网络模块用于接收来自合约进程调度器pod的交易请求;合约主代码是指合约开发人员编写的合约主代码,主代码通常会调用合约sdk;合约sdk是智能合约提供的sdk服务,如存储数据、获取数据等等。
85.可以理解,如图6所示的合约引擎命名空间可以部署在容器集群管理节点,其包含的合约进程调度pod、合约审计pod、交易负载均衡器以及合约进程pod所提供的功能也均可以由容器集群管理节点实现。
86.进一步地,通过上述各实施例所提出的数据处理方法和上述合约引擎命名空间,可以实现将智能合约部署至合约引擎命名空间中的合约进程pod并进行hpa初始化。为便于理解,请参见图7,图7是本技术实施例提供的一种智能合约部署的流程示意图。如图7所示,整个智能合约部署的流程可以包括以下步骤s401-s422:步骤s401,区块链节点接收终端设备发送的合约部署交易。
87.具体的,合约管理人员在本地打包写好的智能合约后,可以通过终端设备在智能合约中添加智能合约初始化方法的参数,然后对智能合约以及参数打包进合约部署交易,
并对合约部署交易进行签名,得到签名数据,然后将合约部署交易以及签名数据一起发送至区块链节点。
88.步骤s402,区块链节点审核合约部署交易,若审核成功,则执行步骤s403;若审核失败,则执行步骤s422。
89.具体的,区块链节点审核合约部署交易时,可以对签名数据进行解签,若解签成功,则确定审核成功;若解签失败,则确定审核失败。
90.步骤s403,区块链节点将合约部署交易发送至合约进程调度器pod。
91.具体的,合约进程调度器pod有自己的ip和端口,因此,区块链节点可以直接将合约部署交易发送至k8s集群中的合约进程调度器pod中。
92.步骤s404,合约进程调度器pod的网络模块收到合约部署交易。
93.具体的,合约进程调度器pod的通信由其包含的网络模块实现,因此,合约进程调度器pod可以通过网络模块接收合约部署交易。
94.步骤s405,合约进程调度器pod鉴权模块进行权限校验,若权限校验成功,则执行步骤s406;若权限校验失败,则执行步骤s416。
95.具体的,合约进程调取器pod可以通过鉴权模块对合约部署交易进行权限校验,其中,权限校验的过程可以参见上述图4所对应实施例中步骤s201对部署权限验证处理过程的相关描述,这里不再进行赘述。
96.步骤s406,合约审计pod进行合约审计,若审计成功,则执行步骤s407;若审计失败,则执行步骤s417。
97.具体的,合约审计的过程可以参见上述图4所对应实施例中步骤s201对代码安全验证处理过程的相关描述,这里不再进行赘述。
98.步骤s407,合约进程调度器pod保存合约文件。
99.具体的,合约文件可以根据合约部署交易中包含的与智能合约相关的信息生成,如,智能合约代码、智能合约标识。合约进程调度器pod保存合约文件可以便于记录以及查阅。
100.步骤s408,合约进程调度器pod为待创建pod添加hpa动态管理。
101.具体的,合约进程调度器pod为待创建pod添加hpa动态管理,其实就是为待创建pod创建水平扩缩容对象,其实现过程可以参见上述图4所对应实施例中步骤s204中对水平扩缩容对象的创建过程的相关描述,这里不再进行赘述。
102.步骤s409,合约进程调度器pod创建新的合约进程pod。
103.步骤s410,合约进程调度器pod向交易负载均衡器发送合约部署交易。
104.步骤s411,交易负载均衡器将合约部署交易分发至合约进程pod。
105.步骤s412,合约进程pod网络模块接收合约部署交易。
106.步骤s413,合约进程pod调用合约主代码的初始化方法,若初始化成功,则执行步骤s414;若初始化失败,则执行步骤s415。
107.具体的,步骤s409-步骤s413的实现过程可以参见上述图4所对应实施例中步骤s202-步骤204的具体描述,这里不再进行赘述。
108.步骤s414,合约进程pod封装执行成功的结果,执行步骤s418。
109.步骤s415,合约进程pod封装执行错误的结果,执行步骤s418。
110.步骤s416,合约进程调度器pod向区块链节点返回权限校验失败的错误,执行步骤s418。
111.步骤s417,合约审计pod向区块链节点返回合约审计失败的错误,执行步骤s418。
112.步骤s418,区块链节点接收合约部署交易对应的执行结果。
113.具体的,执行结果可以为封装的执行成功的结果、封装的执行失败的结果、权限校验失败的错误或者合约审计失败的错误中的其中一个。
114.步骤s419,所有区块链节点对执行结果进行共识,若共识成功,则执行步骤s421;若共识失败,则执行步骤s420。
115.步骤s420,区块链节点向终端设备返回共识校验失败结果。
116.步骤s421,区块链节点向终端设备返回合约部署交易的执行结果。
117.具体的,区块链节点还会将合约部署交易以及执行结果写入区块链账本中。
118.步骤s422,区块链节点向终端设备返回审核交易不通过的错误。
119.进一步地,通过上述各实施例所提出的数据处理方法和上述合约引擎命名空间,可以实现调用已经部署在合约进程pod中的智能合约来执行业务交易。为便于理解,请参见图8,图8是本技术实施例提供的一种智能合约调用的流程示意图。如图8所示,整个智能合约调用的流程可以包括以下步骤s501-s517:步骤s501,区块链节点接收终端设备发送的业务交易。
120.具体的,终端设备可以响应业务对象的业务请求,将调用智能合约的方法和参数请求打包进业务交易,并对业务交易进行签名,得到业务交易的签名数据,然后将业务交易以及签名数据一起发送至区块链节点。
121.步骤s502,区块链节点审核业务交易,若审核成功,则执行步骤s403;若审核失败,则执行步骤s517。
122.具体的,区块链节点审核业务交易时,可以对业务交易的签名数据进行解签,若解签成功,则确定审核成功;若解签失败,则确定审核失败。
123.步骤s503,区块链节点将业务交易发送至合约进程调度器pod。
124.具体的,合约进程调度器pod有自己的ip和端口,因此,区块链节点可以直接将业务交易发送至k8s集群中的合约进程调度器pod中。
125.步骤s504,合约进程调度器pod的网络模块收到业务交易。
126.具体的,合约进程调度器pod的通信由其包含的网络模块实现,因此,合约进程调度器pod可以通过网络模块接收业务交易。
127.步骤s505,合约进程调度器pod鉴权模块进行权限校验,若权限校验成功,则执行步骤s506;若权限校验失败,则执行步骤s512。
128.具体的,合约进程调取器pod可以通过鉴权模块对业务交易进行权限校验,其中,权限校验的过程可以参见上述图4所对应实施例中步骤s201对部署权限验证处理过程的相关描述,这里不再进行赘述。
129.步骤s506,合约进程调度器pod向交易负载均衡器发送业务交易。
130.步骤s507,交易负载均衡器将业务交易分发至合约进程pod。
131.步骤s508,合约进程pod网络模块接收业务交易。
132.步骤s509,合约进程pod调用合约主代码的相应方法,若交易执行成功,则执行步
骤s510;若交易执行失败,则执行步骤s511。
133.具体的,步骤s506-步骤s509的实现过程可以参见上述图3所对应实施例中步骤s101-步骤103的具体描述,这里不再进行赘述。
134.步骤s510,合约进程pod封装执行成功的结果,执行步骤s513。
135.步骤s511,合约进程pod封装执行错误的结果,执行步骤s513。
136.具体的,步骤s506-步骤s511的实现过程可以参见上述图3所对应实施例中步骤s101-步骤103的具体描述,这里不再进行赘述。
137.步骤s512,合约进程调度器pod向区块链节点返回权限校验失败的错误,执行步骤s513。
138.步骤s513,区块链节点接收业务交易对应的执行结果。
139.具体的,执行结果可以为封装的执行成功的结果、封装的执行失败的结果、权限校验失败的错误中的其中一个。
140.步骤s514,所有区块链节点对业务交易的执行结果进行共识,若共识成功,则执行步骤s516;若共识失败,则执行步骤s515。
141.步骤s515,区块链节点向终端设备返回共识校验失败结果。
142.步骤s516,区块链节点向终端设备返回业务交易的执行结果。
143.具体的,区块链节点还会将业务交易以及执行结果写入区块链账本中。
144.步骤s517,区块链节点向终端设备返回审核交易不通过的错误。
145.进一步地,通过上述各实施例所提出的数据处理方法和上述合约引擎命名空间,可以实现合约进程pod的动态扩缩容,即随着算力资源的变化不断进行合约进程pod对应的副本pod的数量的扩增或者缩减。为便于理解,请参见图9,图9是本技术实施例提供的一种合约进程容器单元的动态扩展的流程示意图。如图9所示,整个动态扩展的流程可以包括以下步骤s601-s610:步骤s601,预先配置合约进程pod模板。
146.具体的,合约进程pod模板可以是上述图4所对应实施例中所述的初始合约进程容器单元创建模板,配置好的合约进程pod模板可以存储在合约进程调度器pod中。
147.步骤s602,在创建新的合约进程pod时获取上述合约进程pod模板。
148.步骤s603,合约进程调取器pod将模板中的合约相关信息修改为新合约的相关信息。
149.具体的,步骤s602-步骤s603的实现过程可以参见上述步骤s202的具体描述,这里不再进行赘述。
150.步骤s604,合约进程调度器pod为新合约创建hpa对象。
151.具体的,hpa对象即上述图4所对应实施例中所述的水平扩缩容对象,其创建过程可以参见上述图4所对应实施例中步骤s204中对水平扩缩容对象创建的描述,这里不再进行赘述。
152.步骤s605,合约进程调度器pod在hpa对象中指定水平扩缩容参数。
153.具体的,水平扩缩容参数可以包含算力资源最大占用阈值、算力资源最小占用阈值、容器单元最大数量以及容器单元最小数量。例如,可以指定水平扩缩容参数为cpu最大占用阈值为80%,cpu最小占用阈值为20%,容器单元最大数量为4,此时一个合约进程pod最
多可以创建3个合约进程pod副本,容器单元最小数量为1,此时一个合约进程pod可以没有对应的合约进程pod副本。
154.具体的,请参见下述表2,表2是本技术实施例给出的一个实现pod动态扩展的hpa对象的示例yaml(一种文件格式)文件:表2可以理解,上述表2指定了目标 deployment 的名称以及最小和最大 pod 数量。它还定义了两个 cpu 资源度量指标,一个用于缩容,一个用于扩容,当 cpu 占用率低于50%时,hpa 自动缩减 pod 数量,当 cpu 占用率高于70%时,hpa 自动增加 pod 数量。此外,还可以设置可选的参数,如 `stabilizationwindowseconds` 用于防止短暂的 cpu 波动影响pod 数量,`cooldownseconds` 用于在缩容和扩容之间设置冷却时间,`value` 可以替代 `averageutilization`,用于指定 cpu 的绝对值,`selector` 用于指定关注的 pod 的标签选择器。
155.步骤s606,启动合约进程pod。
156.步骤s607,启动合约进程pod中的资源检测组件。
157.步骤s608,资源检测组件实时将算力资源占用信息发送给k8s中的api服务器。
158.步骤s609,hpa根据平均算力资源占用信息自动调整pod副本数。
159.具体的,api服务器会将接收到的算力资源占用信息发送给hpa,hpa会根据一个智能合约关联的所有合约进程pod分别对象的算力资源占用信息确定出该智能合约对应的平均算力资源占用信息,然后根据平均算力资源占用信息调整该智能合约对应的合约进程pod对应的合约进程pod副本的数量。调整合约进程pod副本数量的具体实现过程可以参见上述图5所对应实施例中步骤s302的具体描述,这里不再进行赘述。
160.步骤s610,合约进程pod销毁器在智能合约满足无任务调用条件时清空该智能合约对应的合约进程pod以及pod副本。
161.具体的,步骤s610的实现可以参见上述图5所对应实施例中对容器单元销毁器清空合约进程容器单元的具体描述,这里不再进行赘述。
162.通过本技术提出的区块链合约引擎命名空间的系统架构来管理所有的区块链合约进程,可以自动解决合约进程之间的权限问题和资源管理问题。本技术还使用了hpa来动态管理每个智能合约的pod副本数量,在cpu占用过高或过低时自动调整数量,保证资源的动态平衡,每个智能合约的资源利用更加合理。此外,为了避免大量智能合约安装导致的资源消耗,本技术还加入了合约进程pod销毁器,在合约进程pod长时间没有任务执行时,销毁该pod,从而保证了资源动态可循环的调度。为了避免有漏洞的合约影响环境稳定性,本技术还加入了合约审计pod,每个智能合约安装时都需要先进行审计,避免不安全的合约影响系统环境。
163.请参见图10,图10是本技术实施例提供的一种基于区块链的数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该数据处理装置1可以用于执行本技术实施例提供的基于区块链的数据处理方法中的相应步骤。如图10所示,该数据处理装置1可以包括:调度模块101、负载均衡模块102以及执行模块103。
164.调度模块101,用于通过合约调度器容器单元接收区块链节点发送的业务交易,将业务交易转发至交易负载均衡器中;业务交易包含第一智能合约对应的第一合约标识;负载均衡模块102,用于在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;一个或多个合约进程容器单元中均部署有第一智能合约;执行模块103,用于通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。
165.其中,调度模块101、负载均衡模块102以及执行模块103的具体实现方式可以参见上述图3所对应实施例中对步骤s101-步骤s103的具体描述,这里不再进行赘述。
166.其中,负载均衡模块102,包括:第一获取单元1021、第二获取单元1022以及确定单元1023。
167.第一获取单元1021,用于在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元;
第二获取单元1022,用于获取与第一合约标识关联的一个或多个合约进程容器单元对应的算力资源占用信息,将算力资源占用信息最小的合约进程容器单元确定为符合空闲调度条件的合约进程容器单元;确定单元1023,用于将符合空闲调度条件的合约进程容器单元作为目标合约进程容器单元。
168.其中,第一获取单元1021、第二获取单元1022以及确定单元1023的具体实现方式可以参见上述图3所对应实施例中对步骤s102的具体描述,这里不再进行赘述。
169.其中,上述数据处理装置1,还包括:接收模块104、创建模块105、发送模块106、转发模块107以及初始化模块108。
170.接收模块104,用于通过合约调度器容器单元接收区块链节点发送的合约部署交易;合约部署交易包含第二智能合约对应的第二合约标识以及智能合约代码;创建模块105,用于根据合约部署交易创建第一合约进程容器单元;第一合约进程容器单元中包含智能合约代码;发送模块106,用于将合约部署交易以及第二合约标识与第一合约进程容器单元的关联关系发送至交易负载均衡器;转发模块107,用于在交易负载均衡器中,根据第二合约标识与第一合约进程容器单元的关联关系将合约部署交易转发至第一合约进程容器单元;初始化模块108,用于在第一合约进程容器单元中,根据合约部署交易调用智能合约代码进行合约初始化处理,得到合约初始化结果,将合约初始化结果发送至区块链节点;合约初始化结果用于表征第二智能合约在第一合约进程容器单元中的部署情况。
171.其中,接收模块104、创建模块105、发送模块106、转发模块107以及初始化模块108的具体实现方式可以参见上述图4所对应实施例中对步骤s201-步骤s204的具体描述,这里不再进行赘述。
172.其中,合约调度器容器单元包含初始合约进程容器单元创建模板和容器单元创建器;创建模块105,包括:第三获取单元1051以及创建单元1052。
173.第三获取单元1051,用于在合约调度器容器单元中,获取初始合约进程容器单元创建模板,根据智能合约代码更新初始合约进程容器单元创建模板,得到部署合约进程容器单元创建模板;创建单元1052,用于通过容器单元创建器运行部署合约进程容器单元模板,创建第一合约进程容器单元。其中,第三获取单元1051以及创建单元1052的具体实现方式可以参见上述图4所对应实施例中对步骤s202的具体描述,这里不再进行赘述。
174.其中,合约部署交易包含交易发起对象信息;上述数据处理装置1,还包括:权限验证模块109。
175.权限验证模块109,用于在合约调度器容器单元中,根据交易发起对象信息进行部署权限验证处理,得到部署权限验证结果;权限验证模块109,还用于若部署权限验证结果为部署权限验证通过结果,则调用创建模块执行根据合约部署交易创建第一合约进程容器单元的步骤;
权限验证模块109,还用于若部署权限验证结果为部署权限验证不通过结果,则向区块链节点发送权限验证不通过提示信息。
176.其中,权限验证模块109的具体实现方式可以参见上述图4所对应实施例中对步骤s201的可选描述,这里不再进行赘述。
177.其中,容器集群管理节点还包含合约审计容器单元;上述数据处理装置1,还包括:合约审计模块110。
178.合约审计模块110,用于通过合约调度器容器单元从合约部署交易中获取智能合约代码,将智能合约代码发送至合约审计容器单元;合约审计模块110,还用于在合约审计容器单元中,对智能合约代码进行代码安全验证处理,得到安全验证结果,将安全验证结果发送至合约调度器容器单元;合约审计模块110,还用于若安全验证结果为安全验证通过结果,则在合约调度器容器单元中,调用创建模块执行根据合约部署交易创建第一合约进程容器单元的步骤;合约审计模块110,还用于若安全验证结果为安全验证不通过结果,则通过合约调度器容器单元向区块链节点发送安全验证不通过提示信息。
179.其中,合约审计模块110的具体实现方式可以参见上述图4所对应实施例中对步骤s201的可选描述,这里不再进行赘述。
180.其中,合约部署交易还包含第一水平扩缩容参数;容器集群管理节点还包含水平扩缩容组件;上述数据处理装置1,还包括:扩缩容对象创建模块111。
181.扩缩容对象创建模块111,用于在合约调度器容器单元中,根据第一水平扩缩容参数创建针对第二合约标识对应的水平扩缩容对象;第二合约标识对应的水平扩缩容对象用于指示水平扩缩容组件根据第二合约标识对应的平均算力资源占用信息以及第一水平扩缩容参数调整第一合约进程容器单元对应的合约进程副本容器单元的数量;合约进程副本容器单元是水平扩缩容组件根据第一合约进程容器单元创建的;第一合约进程容器单元和第一合约进程容器单元对应的合约进程副本容器单元构成合约进程容器单元集合中,第二合约标识关联的一个或多个合约进程容器单元。
182.其中,扩缩容对象创建模块111的具体实现方式可以参见上述图4所对应实施例中对步骤204的可选描述,这里不再进行赘述。
183.其中,容器集群管理节点还包含水平扩缩容组件;合约进程容器单元集合包含第三合约标识关联的m个合约进程容器单元;m个合约进程容器单元包含第二合约进程容器单元以及m-1个合约进程副本容器单元,m为正整数;m-1个合约进程副本容器单元均是水平扩缩容组件根据第二合约进程容器单元创建的;m个合约进程容器单元均部署有第三合约标识对应的第三智能合约;上述数据处理装置1,还包括:信息获取模块112、参数获取模块113以及水平扩缩容模块114。
184.信息获取模块112,用于通过水平扩缩容组件获取第三合约标识对应的平均算力资源占用信息;平均算力资源占用信息是根据m个合约进程容器单元分别对应的算力资源占用信息进行平均处理得到的;参数获取模块113,用于获取第三合约标识对应的第二水平扩缩容参数;
水平扩缩容模块114,用于根据平均算力资源占用信息和第二水平扩缩容参数对m个合约进程容器单元进行水平扩缩容处理。
185.其中,信息获取模块112、参数获取模块113以及水平扩缩容模块114的具体实现方式可以参见上述图5所对应实施例中对步骤s301-步骤s302的具体描述,这里不再进行赘述。
186.其中,第二水平扩缩容参数包含算力资源最大占用阈值和容器单元最大数量;水平扩缩容模块114,包括:扩展数量确定单元1141以及扩展单元1142。
187.扩展数量确定单元1141,用于若平均算力资源占用信息超过算力资源最大占用阈值,则根据m、算力资源最大占用阈值、容器单元最大数量以及平均算力占用信息确定预扩展副本容器单元数量;m和预扩展副本容器单元数量的总和小于或等于容器单元最大数量;扩展单元1142,用于根据第二合约进程容器单元创建预扩展副本容器单元数量对应的扩展合约进程副本容器单元,将扩展合约进程副本容器单元添加至合约进程容器单元集合,将扩展合约进程副本容器单元与第三合约标识的关联关系发送至交易负载均衡器。
188.其中,扩展数量确定单元1141以及扩展单元1142的具体实现方式可以参见上述图5所对应实施例中对步骤s302的具体描述,这里不再进行赘述。
189.其中,扩展数量确定单元1141,包括:系数确定子单元11411以及计算子单元11412。
190.系数确定子单元11411,用于将平均算力占用信息与算力资源最大占用阈值的比值,确定为调整系数;计算子单元11412,用于将调整系数与m相乘取整处理,得到调整总数量;计算子单元11412,还用于若调整总数量小于或等于容器单元最大数量,则将调整总数量与m的差值,确定为预扩展副本容器单元数量;计算子单元11412,还用于若调整总数量大于容器单元最大数量,则将容器单元最大数量与m的差值,确定为预扩展副本容器单元数量。
191.其中,系数确定子单元11411以及计算子单元11412的具体实现方式可以参见上述图5所对应实施例中对步骤s302的具体描述,这里不再进行赘述。
192.其中,第二水平扩缩容参数包含算力资源最小占用阈值和容器单元最小数量;水平扩缩容模块114,包括:缩减数量确定单元1143以及缩减单元1144。
193.缩减数量确定单元1143,用于若平均算力资源占用信息小于算力资源最小占用阈值,则根据m、算力资源最小占用阈值、容器单元最小数量以及平均算力占用信息确定预缩减副本容器单元数量;m和预缩减副本容器单元数量的差值大于或等于容器单元最小数量;缩减单元1144,用于从m-1个合约进程副本容器单元中,选择预缩减副本容器单元数量对应的合约进程副本容器单元,作为待缩减合约进程副本容器单元;缩减单元1144,还用于当确定待缩减合约进程副本容器单元处于空闲条件时,删除待缩减合约进程副本容器单元,在交易负载均衡器中,删除待缩减合约进程副本容器单元与第三合约标识的关联关系。
194.其中,缩减数量确定单元1143以及缩减单元1144的具体实现方式可以参见上述图5所对应实施例中对步骤s302的具体描述,这里不再进行赘述。
195.其中,合约调度器容器单元还包括容器单元销毁器;合约进程容器单元包含第四
合约标识关联的n个合约进程容器单元,n为正整数;上述数据处理装置1,还包括:调用获取模块115以及清空模块116。
196.调用获取模块115,用于获取第四合约标识对应的第四智能合约在目标时间段内的调用情况;清空模块116,用于若调用情况指示第四智能合约满足无任务调用条件,则通过容器单元销毁器清空第四合约标识关联的n个合约进程容器单元。
197.其中,调用获取模块115以及清空模块116的具体实现方式可以参见上述图5所对应实施例中对步骤s302的可选描述,这里不再进行赘述。
198.请参见图11,图11是本技术实施例提供的一种计算机设备的结构示意图。如图11所示,上述图10所对应实施例中的数据处理装置1可以应用于计算机设备1000,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
199.在如图11所示的计算机设备1000中,网络接口1004可提供网络通讯网元;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:通过合约调度器容器单元接收区块链节点发送的业务交易,将业务交易转发至交易负载均衡器中;业务交易包含第一智能合约对应的第一合约标识;在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;一个或多个合约进程容器单元中均部署有第一智能合约;通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果,将交易执行结果发送至区块链节点。
200.应当理解,本技术实施例中所描述的计算机设备1000可执行前文图3任一个所对应实施例中对该数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
201.此外,这里需要指出的是:本技术实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3任一个所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本技术所涉及的计算机可读存储介质实施例
中未披露的技术细节,请参照本技术方法实施例的描述。
202.上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
203.此外,这里需要指出的是:本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3、图4任一个所对应实施例提供的方法。
204.本技术实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
205.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照网元一般性地描述了各示例的组成及步骤。这些网元究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的网元,但是这种实现不应认为超出本技术的范围。
206.以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
技术特征:
1.一种基于区块链的数据处理方法,其特征在于,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;所述容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;所述方法由容器集群管理节点执行;所述方法包括:通过所述合约调度器容器单元接收所述区块链节点发送的业务交易,将所述业务交易转发至所述交易负载均衡器中;所述业务交易包含第一智能合约对应的第一合约标识;在所述交易负载均衡器中,从所述合约进程容器单元集合中获取与所述第一合约标识关联的一个或多个合约进程容器单元,从所述一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;所述一个或多个合约进程容器单元中均部署有所述第一智能合约;通过所述交易负载均衡器将所述业务交易发送至所述目标合约进程容器单元,在所述目标合约进程容器单元中,调用所述目标智能合约执行所述业务交易,得到交易执行结果,将所述交易执行结果发送至所述区块链节点。2.根据权利要求1所述的方法,其特征在于,所述在所述交易负载均衡器中,从所述合约进程容器单元集合中获取与所述第一合约标识关联的一个或多个合约进程容器单元,从所述一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元,包括:在所述交易负载均衡器中,从所述合约进程容器单元集合中获取与所述第一合约标识关联的一个或多个合约进程容器单元;获取与所述第一合约标识关联的一个或多个合约进程容器单元对应的算力资源占用信息,将算力资源占用信息最小的合约进程容器单元确定为符合空闲调度条件的合约进程容器单元;将所述符合空闲调度条件的合约进程容器单元作为目标合约进程容器单元。3.根据权利要求1所述的方法,其特征在于,还包括:通过所述合约调度器容器单元接收所述区块链节点发送的合约部署交易;所述合约部署交易包含第二智能合约对应的第二合约标识以及智能合约代码;根据所述合约部署交易创建第一合约进程容器单元;所述第一合约进程容器单元中包含所述智能合约代码;将所述合约部署交易以及所述第二合约标识与所述第一合约进程容器单元的关联关系发送至所述交易负载均衡器;在所述交易负载均衡器中,根据所述第二合约标识与所述第一合约进程容器单元的关联关系将所述合约部署交易转发至所述第一合约进程容器单元;在所述第一合约进程容器单元中,根据所述合约部署交易调用所述智能合约代码进行合约初始化处理,得到合约初始化结果,将所述合约初始化结果发送至所述区块链节点;所述合约初始化结果用于表征所述第二智能合约在所述第一合约进程容器单元中的部署情况。4.根据权利要求3所述的方法,其特征在于,所述合约调度器容器单元包含初始合约进程容器单元创建模板和容器单元创建器;所述根据所述合约部署交易创建第一合约进程容器单元,包括:
在所述合约调度器容器单元中,获取所述初始合约进程容器单元创建模板,根据所述智能合约代码更新所述初始合约进程容器单元创建模板,得到部署合约进程容器单元创建模板;通过所述容器单元创建器运行所述部署合约进程容器单元模板,创建所述第一合约进程容器单元。5.根据权利要求3所述的方法,其特征在于,所述合约部署交易包含交易发起对象信息;所述方法还包括:在所述合约调度器容器单元中,根据所述交易发起对象信息进行部署权限验证处理,得到部署权限验证结果;若所述部署权限验证结果为部署权限验证通过结果,则执行所述根据所述合约部署交易创建第一合约进程容器单元的步骤;若所述部署权限验证结果为部署权限验证不通过结果,则向区块链节点发送权限验证不通过提示信息。6.根据权利要求3所述的方法,其特征在于,所述容器集群管理节点还包含合约审计容器单元;所述方法还包括:通过所述合约调度器容器单元从所述合约部署交易中获取所述智能合约代码,将所述智能合约代码发送至所述合约审计容器单元;在所述合约审计容器单元中,对所述智能合约代码进行代码安全验证处理,得到安全验证结果,将所述安全验证结果发送至所述合约调度器容器单元;若所述安全验证结果为安全验证通过结果,则在所述合约调度器容器单元中,执行所述根据所述合约部署交易创建第一合约进程容器单元的步骤;若所述安全验证结果为安全验证不通过结果,则通过所述合约调度器容器单元向区块链节点发送安全验证不通过提示信息。7.根据权利要求3所述的方法,其特征在于,所述合约部署交易还包含第一水平扩缩容参数;所述容器集群管理节点还包含水平扩缩容组件;所述方法还包括:在所述合约调度器容器单元中,根据所述第一水平扩缩容参数创建针对所述第二合约标识对应的水平扩缩容对象;所述第二合约标识对应的水平扩缩容对象用于指示所述水平扩缩容组件根据所述第二合约标识对应的平均算力资源占用信息以及所述第一水平扩缩容参数调整所述第一合约进程容器单元对应的合约进程副本容器单元的数量;所述合约进程副本容器单元是所述水平扩缩容组件根据所述第一合约进程容器单元创建的;所述第一合约进程容器单元和所述第一合约进程容器单元对应的合约进程副本容器单元构成所述合约进程容器单元集合中,所述第二合约标识关联的一个或多个合约进程容器单元。8.根据权利要求1所述的方法,其特征在于,所述容器集群管理节点还包含水平扩缩容组件;所述合约进程容器单元集合包含第三合约标识关联的m个合约进程容器单元;所述m个合约进程容器单元包含第二合约进程容器单元以及m-1个合约进程副本容器单元,m为正整数;所述m-1个合约进程副本容器单元均是所述水平扩缩容组件根据所述第二合约进程容器单元创建的;所述m个合约进程容器单元均部署有所述第三合约标识对应的第三智能合约;
所述方法还包括:通过所述水平扩缩容组件获取所述第三合约标识对应的平均算力资源占用信息;所述平均算力资源占用信息是根据所述m个合约进程容器单元分别对应的算力资源占用信息进行平均处理得到的;获取所述第三合约标识对应的第二水平扩缩容参数;根据所述平均算力资源占用信息和所述第二水平扩缩容参数对所述m个合约进程容器单元进行水平扩缩容处理。9.根据权利要求8所述的方法,其特征在于,所述第二水平扩缩容参数包含算力资源最大占用阈值和容器单元最大数量;所述根据所述平均算力资源占用信息和所述第二水平扩缩容参数对所述m个合约进程容器单元进行水平扩缩容处理,包括:若所述平均算力资源占用信息超过所述算力资源最大占用阈值,则根据所述m、所述算力资源最大占用阈值、所述容器单元最大数量以及所述平均算力占用信息确定预扩展副本容器单元数量;所述m和所述预扩展副本容器单元数量的总和小于或等于所述容器单元最大数量;根据所述第二合约进程容器单元创建所述预扩展副本容器单元数量对应的扩展合约进程副本容器单元,将所述扩展合约进程副本容器单元添加至所述合约进程容器单元集合,将所述扩展合约进程副本容器单元与所述第三合约标识的关联关系发送至所述交易负载均衡器。10.根据权利要求9所述的方法,其特征在于,所述根据所述m、所述算力资源最大占用阈值、所述容器单元最大数量以及所述平均算力占用信息确定预扩展副本容器单元数量,包括:将所述平均算力占用信息与所述算力资源最大占用阈值的比值,确定为调整系数;将所述调整系数与所述m相乘取整处理,得到调整总数量;若所述调整总数量小于或等于所述容器单元最大数量,则将所述调整总数量与所述m的差值,确定为预扩展副本容器单元数量;若所述调整总数量大于所述容器单元最大数量,则将所述容器单元最大数量与所述m的差值,确定为预扩展副本容器单元数量。11.根据权利要求8所述的方法,其特征在于,所述第二水平扩缩容参数包含算力资源最小占用阈值和容器单元最小数量;所述根据所述平均算力资源占用信息和所述第二水平扩缩容参数对所述m个合约进程容器单元进行水平扩缩容处理,包括:若所述平均算力资源占用信息小于所述算力资源最小占用阈值,则根据所述m、所述算力资源最小占用阈值、所述容器单元最小数量以及所述平均算力占用信息确定预缩减副本容器单元数量;所述m和所述预缩减副本容器单元数量的差值大于或等于所述容器单元最小数量;从所述m-1个合约进程副本容器单元中,选择所述预缩减副本容器单元数量对应的合约进程副本容器单元,作为待缩减合约进程副本容器单元;当确定所述待缩减合约进程副本容器单元处于空闲条件时,删除所述待缩减合约进程
副本容器单元,在所述交易负载均衡器中,删除所述待缩减合约进程副本容器单元与所述第三合约标识的关联关系。12.根据权利要求1所述的方法,其特征在于,所述合约调度器容器单元还包括容器单元销毁器;所述合约进程容器单元包含第四合约标识关联的n个合约进程容器单元,n为正整数;所述方法还包括:获取所述第四合约标识对应的第四智能合约在目标时间段内的调用情况;若所述调用情况指示所述第四智能合约满足无任务调用条件,则通过所述容器单元销毁器清空所述第四合约标识关联的n个合约进程容器单元。13.一种基于区块链的数据处理装置,其特征在于,区块链网络包含区块链节点以及区块链节点对应的容器集群管理节点;所述容器集群管理节点包含合约调度器容器单元、交易负载均衡器以及合约进程容器单元集合;所述装置由容器集群管理节点运行;所述装置包括:调度模块,用于通过所述合约调度器容器单元接收所述区块链节点发送的业务交易,将所述业务交易转发至所述交易负载均衡器中;所述业务交易包含第一智能合约对应的第一合约标识;负载均衡模块,用于在所述交易负载均衡器中,从所述合约进程容器单元集合中获取与所述第一合约标识关联的一个或多个合约进程容器单元,从所述一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;所述一个或多个合约进程容器单元中均部署有所述第一智能合约;执行模块,用于通过所述交易负载均衡器将所述业务交易发送至所述目标合约进程容器单元,在所述目标合约进程容器单元中,调用所述目标智能合约执行所述业务交易,得到交易执行结果,将所述交易执行结果发送至所述区块链节点。14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-12任一项所述的方法。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-12任一项所述的方法。
技术总结
本发明公开了一种基于区块链的数据处理方法、装置、设备及可读存储介质,方法包括:通过合约调度器容器单元接收包含第一智能合约对应的第一合约标识的业务交易,将业务交易转发至交易负载均衡器中;在交易负载均衡器中,从合约进程容器单元集合中获取与第一合约标识关联的一个或多个合约进程容器单元,从一个或多个合约进程容器单元中选择符合空闲调度条件的合约进程容器单元,作为目标合约进程容器单元;通过交易负载均衡器将业务交易发送至目标合约进程容器单元,在目标合约进程容器单元中,调用目标智能合约执行业务交易,得到交易执行结果。采用本发明,可以实现资源的动态分配,提高合约执行效率。提高合约执行效率。提高合约执行效率。
技术研发人员:卢光宏
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2023.07.29
技术公布日:2023/9/26
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/