CN114979160A - 区块链任务的分配方法及装置 - Google Patents
区块链任务的分配方法及装置 Download PDFInfo
- Publication number
- CN114979160A CN114979160A CN202210605497.4A CN202210605497A CN114979160A CN 114979160 A CN114979160 A CN 114979160A CN 202210605497 A CN202210605497 A CN 202210605497A CN 114979160 A CN114979160 A CN 114979160A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- task
- calculation
- computing
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000004364 calculation method Methods 0.000 claims abstract description 179
- 238000003860 storage Methods 0.000 claims description 17
- 230000003862 health status Effects 0.000 claims description 16
- 230000036541 health Effects 0.000 claims description 13
- 238000009826 distribution Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 101001125214 Hordeum vulgare Non-specific lipid-transfer protein 4.1 Proteins 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书提供一种区块链任务的分配方法及装置。所述方法应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,包括:在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链任务的分配方法及装置。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
区块链网络中的区块链节点产生的区块链任务,可以由其对应的链下计算节点执行。具体的,链下计算节点可以将该任务调度至其中的某个计算单元执行。为了提升对区块链任务的执行效率,链下计算节点需要采用负载均衡策略确定合适的计算单元执行该任务。
发明内容
本发明的目的在于提供一种区块链任务的分配方法及装置。
根据本说明书一个或多个实施例的第一方面,提出了一种区块链任务的分配方法,应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,所述方法包括:
在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;
根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链任务的分配装置,应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,所述装置包括:
权重获取单元,用于在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;
任务分配单元,用于根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
在上述实施例中,链下计算节点中的调度引擎用于对区块链节点产生的区块链任务进行调度,具体的,在接收到该任务的情况下,先获取根据运行信息确定的链下计算节点中的计算单元的权重值,所述运行信息中的负载程度对权重值产生负向影响。进而,调度引擎根据所述权重值从所述计算单元确定第一目标计算单元并将所述区块链任务分配至该计算单元执行。
可以理解的是,因为计算单元的权重值根据其运行信息确定,而运行信息中的负载程度则会对该权重值产生负向影响,所以某一计算单元的当前负载越多(如正在执行或待执行的区块链任务数量越多)的计算单元,其权重值应当越低,使得该计算单元被选取为第一目标计算单元的可能性越小。可见,该方式能够将所述区块链任务尽量分配至当前负载程度较低的第一目标计算单元执行,而在分配完成后,该计算单元的负载程度将有所升高,从而实现对各个计算单元的负载均衡。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种链下计算节点的结构示意图。
图2是一示例性实施例提供的一种区块链任务的分配方法的流程图。
图3是一示例性实施例提供的一种区块链任务的分配方法的交互流程图。
图4是一示例性实施例提供的一种设备的结构示意图。
图5是一示例性实施例提供的一种区块链任务的分配装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
为在执行区块链任务的过程中实现对各个计算单元的负载均衡,本说明书提出一种区块链任务的分配方法,通过获取根据计算单元的执行信息确定出的权重值在调度引擎的计算单元中确定当前负载程度较为合适的第一目标计算单元,并将区块链节点产生的区块链任务分配至该计算单元执行。该方法应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元。下面结合附图及相应的实施例对该方案进行详细说明。
首先,结合图1对本说明书实施例所述的链下计算节点的结构进行介绍。如图1所示,区块链网络由nodeA~E等多个区块链节点构成,任一区块链节点均可以对应于相应的链下计算节点。以nodeA为例,该节点对应的链下计算节点A可以包括调度引擎和至少一个计算引擎框架。例如,调度引擎连接有n个计算引擎框架,如计算引擎框架1~n。其中,任一计算引擎框架及其所管理的m个计算单元构成一个计算引擎。例如,计算引擎1包括计算引擎框架1和计算单元11~13(此时m=3)、计算引擎2包括计算引擎框架2和计算单元21~22(此时m=2)、…、计算引擎n包括计算引擎框架n和计算单元n1~nm等。可见,任一链下计算节点包含一个调度引擎、至少一个计算引擎框架和至少一个计算单元,该调度引擎可以调度各个计算单元分别执行相应的区块链任务。其中,上述n和m均为大于或等于1的整数。
需要说明的是,任一链下计算节点是由相应的调度引擎、计算引擎框架和计算单元在逻辑层面构成的计算主体,就实体设备来说,该链下计算节点的各个组成部分可以部署在相同或不同的实体设备中,本说明书实施例并不对此进行限制。例如,链下计算节点A可以被部署于相应区块链节点所属的节点设备中,即链下计算节点A和区块链节点A被部署于同一节点设备中,此时该链下计算节点所包含的调度引擎、计算引擎框架和计算单元可以为运行于该节点设备中的相应功能模块。或者,上述调度引擎和各个计算引擎框架可以为运行于该节点设备中的功能模块,而各个计算引擎框架所管理的计算单元可以运行于其他的计算设备中,从而由计算引擎框架实现对计算单元的远程调用。再例如,链下计算节点A也可以被部署于节点设备之外的计算设备中,而相应的计算引擎框架和计算单元则可以被部署于该节点设备或者其他节点设备中,不再赘述。
所述链下计算节点中的调度引擎、各个计算引擎框架和各个计算单元均可以视为供区块链节点调用的功能模块,为实现对各个功能模块的高效管理,上述各个功能模块可以被预先注册至统一的服务中心。分别对应于区块链网络中各个区块链节点的链下计算节点所包含的功能模块,可以被分别注册至所述服务中心。其中,计算单元可以将自身的计算类型、访问地址等相关信息注册至服务中心,而服务中心可以为计算单元分配服务标识以便识别。在任一计算单元注册完成后,服务中心可以维护该计算单元的上述注册信息。类似的,各个链下计算节点中的调度引擎和计算引擎框架均可以注册至所述服务中心,称为由该服务中心所管理的已注册服务。任一链下计算节点包含的已经注册至所述服务中心的计算引擎框架和计算单元,即为调度引擎对应的可用服务,可以被调度引擎调度用于执行区块链任务。换言之,调度引擎可以将自身接收到的区块链任务分配至自身所对应任一计算引擎框架管理的任一计算单元执行。
下面结合图2所示的区块链任务的分配方法,对确定第一目标计算单元并将区块链任务分配至该计算单元执行的过程进行说明。该方法应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元。如图2所示,该方法包括步骤202-204。
步骤202,在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度。
本说明书所述的区块链任务可以由所述区块链节点执行区块链网络中部署的智能合约产生,或者也可以由该区块链节点从其他区块链节点处同步到的,当然,所述区块链节点可以通过执行智能合约或者区块链交易产生该任务。其中,所述区块链任务可以是独立区块链任务,即该任务与其他任务之间并不存在依赖关系;或者,所述区块链任务也可以是非独立区块链任务,如该任务可以依赖于其他任务或者被其他任务所依赖,此时该任务与其他任务可以视为构成某一工作流任务的子任务。其中,执行所述工作流任务的过程,即为按照所述依赖关系依次执行各个子任务的过程。
区块链节点可以在产生区块链任务之后将其发送至链下计算节点的调度引擎,以便尽量减少从任务产生至任务分配之间的间隔时间,从而提升区块链任务的整体处理效率。或者,考虑到区块链节点需要参与处理区块链网络中的其他事务(如交易共识、消息转发、数据存证等),所以为优先保证上述事务的顺利完成,也可以由调度引擎通过监听机制监听区块链节点所产生的区块链任务,如调度引擎可以监听所述区块链节点产生的任务分配事件以获取所述区块链任务。该方式无需区块链节点实时发送所述区块链任务,不仅能够适当降低区块链节点处理区块链任务过程中的资源开销,而且对调度引擎与区块链节点之间的时序同步性要求较低,通用性较强。
在接收到区块链节点产生的所述区块链任务的情况下,调度引擎可以开始针对该任务的分配过程。具体的,调度引擎需要从链下计算节点所包含的各个计算单元中确定用于执行该任务的计算单元,进而将该任务分配至确定出的计算单元执行。
通常情况下,链下计算节点中的各个计算单元分别具有相应的计算类型,任一计算单元的计算类型可以视为该计算单元能够执行的任务的类型。其中,在任一计算引擎中包含多个计算单元的情况下,这些计算单元的计算类型可能相同或不同。类似的,在所述链下计算节点中包含多个计算单元的情况下,这些计算单元的计算类型也可能相同或不同。另外,链下计算节点中的计算单元可以包括复合计算单元和单一计算单元,所述复合计算单元可以具有多种计算类型,该类计算单元可以用于执行多种类型的区块链任务;所述单一计算单元具有一种计算类型,即该类计算单元可以用于执行该计算类型对应的区块链任务。其中,所述计算类型可以为转发类型、MFT(Managed File Transfer,大文件传输)类型、隐私计算类型、数据查询类型等,本说明书实施例并不对此进行限制。
基于此,为了确保执行所述区块链任务的计算单元的计算类型匹配于该任务的目标计算类型,从而保证该任务的顺利执行,调度引擎可以维护有链下计算节点包含的各个计算单元的计算类型,以便根据所述计算类型和所述区块链任务对应的目标计算类型确定相应类型的计算单元用于执行该任务。例如,调度引擎可以先确定区块链任务对应的目标计算类型,并将各个计算单元中计算类型为该目标计算类型的计算单元确定为对应于所述区块链任务的候选计算单元——即确定出链下计算节点中计算类型对应于所述区块链任务的候选计算单元。可以理解的是,上述方式确定出的候选计算单元可以为链下计算节点中的全部或部分计算单元。进一步的,此后调度引擎可以从所述候选计算单元中选取第一目标计算单元或者第二目标计算单元用于执行所述区块链任务,如获取各个候选计算单元的权重值,并根据获取到的权重值从各个候选计算单元中选取第一目标计算单元,不再赘述。通过该方式,可以保证执行该任务的计算单元的计算类型匹配于该任务的目标计算类型,从而尽量避免执行出错,并在一定程度上提升区块链任务的执行效率。
如前所述,调度引擎接收到的所述区块链任务可以由区块链节点通过执行智能合约的方式产生,通常情况下,执行同一智能合约所产生的各个区块链任务对应于相同的目标计算类型,有鉴于此,为了提升区块链任务的执行效率,调度引擎可以将执行同一智能合约所产生的各个区块链任务分配至同一计算单元(即下述第二目标计算单元)执行,以便利用该计算单元的缓存信息,避免计算引擎框架拉起频繁启动计算单元。例如,调度引擎可以先根据所述智能合约的合约地址计算相应的地址摘要,然后对该地址摘要与所述计算单元的个数进行取模运算,并将运算结果所指示的计算单元确定为对应于所述区块链任务的第二目标计算单元。其中,所述智能合约的合约地址可以记录于所述区块链任务中,或者也可以从通过前述监听机制监听到的任务分配事件中获取;而进行取模运算的所述计算单元的个数,可以为链下计算节点中全部计算单元的个数或者前述候选计算单元的个数,不再赘述。当然,除了使用智能合约的合约地址之外,也可以对智能合约的创建方标识和创建时刻等其他形式的唯一合约标识信息进行哈希运算,以便保证同一智能合约所产生的各个区块链任务能够对应于同一哈希结果。
以候选计算单元为例,如图1所示,不妨假设n=3且m=2,则链下计算节点中共包含六个计算单元。此时,若通过前述方式确定出的候选计算单元依次为计算单元11、21和31(候选计算单元的个数为三个),则调度引擎可以将智能合约的地址哈希与3进行取模运算,并根据运算结果先从这三个候选计算单元中确定所述第二目标计算单元。通过该方式,调度引擎可以从链下计算节点包含的各个计算单元中确定对应于所述链下协作计算任务的候选计算节点,然后从中选取某一候选计算单元作为第二目标计算单元。因为各个候选计算节点的计算类型均为所述目标计算类型,所以从中选取的第二目标计算单元的计算类型也为目标计算类型,匹配于所述链下协作计算任务。
对于接收到的所述区块链任务,调度引擎可以从链下计算节点所包含的各个计算单元中或者所述候选区块链任务中随机选取某一计算单元,并将所述区块链任务分配至该计算单元执行。但该随机分配的方式的负载均衡的效果可能欠佳,因此还可以采用其他方式进行分配。
可以理解的是,要保证第二目标计算单元能够顺序执行所述区块链任务,该计算单元需要具备针对该任务的执行条件,因此调度引擎可以先确定该计算单元的健康状态。例如,在从所述计算单元中确定出第二目标计算单元的情况下,调度引擎可以进一步确定该计算单元的健康状态信息,如该计算单元当前正在执行的任务个数、已分配至该计算单元但尚未执行的任务个数、计算单元当前可以调用的内存大小和/或CPU(CentralProcessing Unit)内核个数等,不再赘述。所述健康状态信息可以用于体现第二目标计算单元在当前时刻的运行状态,所以调度引擎可以根据该运行状态确定后续处理方式。
若所述健康状态信息表明第二目标计算单元处于健康状态,则说明该计算单元可以正常接收并执行区块链任务(如运行状态正常、可用资源充足等),此时可以直接将所述区块链任务分配至该计算单元执行,显然,此时虚无再确定所述第一目标计算单元用于执行该任务,因此可以避免获取所述计算单元的权重值。
若所述健康状态信息表明第二目标计算单元处于不健康状态,则说明该计算单元虽然可以接收并执行区块链任务,但是可能当前时刻的运行状态不佳或者可用资源不足,因此可能难以确保区块链任务被快速、顺利执行。此时,调度引擎可以进一步获取包括第二目标计算单元在内的所述计算单元(或各个候选计算单元)的权重值,以便根据所述权重值从中选取(运行状态最好的)第一目标计算单元用于接收并执行区块链任务。
若所述健康状态信息表明第二目标计算单元处于不可用状态,则说明该计算单元当前时刻无法接收并执行区块链任务(如可能被前行暂停、已分配但尚未执行的任务个数超出阈值、资源被全部占用等),因此应当避免向该计算单元分配区块链任务,故此时调度引擎可以进一步获取除第二目标计算单元之外的其他计算单元(或其他候选计算单元)的权重值,以便根据所述权重值从这些计算单元中选取(运行状态最好的)第一目标计算单元用于接收并执行区块链任务。
由上述方式可见,调度引擎可以第二目标计算单元处于健康状态的情况下,将区块链任务分配至该计算单元执行,从而保证所述区块链任务与产生该任务的智能合约所产生的其他区块链任务均被该计算单元所执行,使得该计算单元在执行后一区块链任务的过程中可以使用前一区块链任务的缓存数据,而链下计算节点中的计算引擎框架也无需重复启动新的计算单元执行同一智能合约产生的不同区块链任务,从而提升了各个区块链任务的执行效率。而在第二目标计算单元不处于健康状态(即处于不健康状态或者不可用状态)的情况下,调度引擎均可以获取相应的计算单元的权重值,并根据该权重值进一步确定相应的第一目标计算单元用于执行所述区块链任务。而且,在第二目标计算单元处于不健康状态的情况下,仍然获取该计算单元的权重值,使得该计算单元仍然有可能被根据权重值确定为第一目标计算单元,从而能够在其他计算单元的状态比第二目标计算单元更差的情况下,选取第二目标计算单元作为第一目标计算单元执行区块链任务,从而不仅能够避免对其他计算单元的任务执行情况产生干扰,也有助于所述区块链任务的顺利执行。
在一实施例中,调度引擎可以通过多种方式获取所述计算单元的权重值。例如,调度引擎可以临时获取所述计算单元的运行信息,并根据该运行信息确定所述计算单元的权重值。其中,任一计算单元的运行信息可以包括任务执行信息和/或资源占用信息,所述任务执行信息可以包括当前执行任务个数、已分配但尚未执行的任务数量、平均任务执行时长等,该信息用于表征该计算单元的任务执行情况;所述资源占用信息可以为CPU利用率、内存使用率、磁盘剩余空间、IO(Input/Output,输入/输出)使用情况等,该信息用于表征该计算单元的可调用资源。在任一计算单元的运行信息包括上述任务执行信息和资源占用信息的情况下,调度引擎可以根据这两类信息综合确定所述任一计算单元的权重值,如可以通过加权平均的方式确定所述权重值。当然,通过运行信息确定权重值的具体方式可以根据方案场景、任务情况等实际情况进行设置,本说明书对此并不进行限定。
例如,调度引擎可以按照预设周期获取所述计算单元的运行信息,在任一周期内,可以根据在该周期内获取到的所述运行信息确定所述计算单元的初始权重值,具体的,可以通过前述任务执行信息和/或资源占用信息进行确定,不再赘述。另外,调度引擎可以接收到多个区块链任务,而在任一周期内分配某一任务完成的情况下,可以根据该任务的分配情况相应的更新链下计算节点中各个计算单元或者各个相应计算类型的候选计算单元的权重值,以便根据更新后的权重值分配下一区块链任务。其中,上述预设周期可以为30min、2h、1h等,本说明书并不对此进行限定。可见,在任意周期内,所述计算单元的权重值(无论是初始权重值还是经过至少一次更新后的权重值)均可以视为根据该周期内获取到的所述计算单元的运行信息确定得到。基于此,在当前周期内,调度引擎可以获取根据前一区块链任务的分配情况更新后的所述计算单元的权重值,以便根据该权重值确定第一目标计算单元,其中,该权重值根据在当前周期内获取的所述计算单元的运行信息确定得到。通过该方式,调度引擎可以在任一周期的开始时刻获取所述计算单元的运行信息并确定相应的初始权重值,然后随着分配区块链任务依次相应的更新所述权重值,使得调度引擎可以根据所述初始权重值或者更新后的权重值分配该周期内的区块链任务。通过对上述权重值的动态更新过程,调度引擎可以根据区块链任务的实际分配情况实时调整权重值以作为下一任务的分配依据,从而时实现对区块链任务的负载均衡。
在上述实施例中,调度引擎可以通过多种方式获取任一计算引擎框架所管理的任一计算单元的运行信息。例如,上述任一计算引擎框架可以周期性采集各个计算单元的运行信息,并将其周期性发送至调度引擎,即调度引擎可以接收所述任一计算引擎框架周期性发送的所述任一计算单元的运行信息。在该方式下,调度引擎可以接收链下计算节点中各个计算引擎分别周期性发送的自身所管理计算单元的运行信息,进而,可以在接收到任一调度引擎的运行信息时即确定相应的初始权重值并维护在本地,以便后续使用;也可以将接收到的所述运行信息缓存在本地,并在需要获取所述计算单元的权重值时从缓存中读取运行信息并确定权重值。或者,调度引擎也可以向所述任一计算引擎框架发起针对所述任一计算单元的信息获取请求,并接收其返回的所述任一计算单元在当前时刻的运行信息。其中,所述任一计算引擎框架向调度引擎返回的所述运行信息可以响应于所述信息获取请求所采集,或者也可以按照预设周期预先采集并缓存在本地,以便提升调度引擎获取该信息的效率并节省其本地存储空间。
步骤204,根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
在通过前述方式获取到所述计算单元的权重值的情况下,调度引擎可以根据该权重值确定所述计算单元的中的第一目标计算单元,并将所述区块链任务分配至该计算单元执行。
在本方案所述实施例中,链下计算节点中的调度引擎用于对区块链节点产生的区块链任务进行调度,具体的,在接收到该任务的情况下,先获取根据运行信息确定的链下计算节点中的计算单元的权重值,所述运行信息中的负载程度对权重值产生负向影响。进而,调度引擎根据所述权重值从所述计算单元确定第一目标计算单元并将所述区块链任务分配至该计算单元执行。
可以理解的是,因为计算单元的权重值根据其运行信息确定,而运行信息中的负载程度则会对该权重值产生负向影响,所以某一计算单元的当前负载越多(如正在执行或待执行的区块链任务数量越多)的计算单元,其权重值应当越低,使得该计算单元被选取为第一目标计算单元的可能性越小。可见,该方式能够将所述区块链任务尽量分配至当前负载程度较低的第一目标计算单元执行,而在分配完成后,该计算单元的负载程度将有所升高,从而实现对各个计算单元的负载均衡。
在一实施例中,调度引擎可以将所述计算单元中权重值最大的计算单元作为第一目标计算单元。可以理解的是,任一计算单元的权重值越大,通常表明该计算单元的当前运行状态越好,越应该将所述区块链任务分配至该计算单元执行。因此将所述权重值最大的计算单元作为第一目标计算单元,可以保证用于执行区块链任务的计算单元是所述计算单元(或者所述候选计算单元)中运行状态最好的计算单元,从而尽量保证区块链任务的顺利执行。
进一步的,调度引擎在确定出第一目标计算单元之后,可以通过计算引擎框架转发所述区块链任务。例如,调度引擎可以先确定管理第一目标计算单元的目标计算引擎框架,并通过所述目标计算引擎框架将所述区块链任务转发至第一目标计算单元执行。其中,目标计算引擎框架在接收到所述区块链任务的情况下,可以先确定第一目标计算单元的运行状态:若第一目标计算单元当前时刻并未执行任何任务,则目标计算引擎框架可以将所述区块链任务直接发送至该计算单元执行。在第一目标计算单元支持同时执行一个任务的情况下,若第一目标计算单元当前时刻正在执行其他任务,则目标计算引擎框架可以将所述区块链任务缓存在本地,并在确定第一目标计算单元执行所述其他任务完成的情况下,在将缓存中的所述区块链任务发送至该计算单元执行。而在第一目标计算单元支持同时执行n(n为大于2的整数)任务的情况下,若第一目标计算单元当前时刻正在执行其他任务,其他任务的个数等于n和/或该计算单元的当前可用资源小于所述区块链任务的所需资源阈值,则目标计算引擎框架可以将所述区块链任务缓存在本地,并在至少一个其他任务完成且当前可用资源不小于所述所需资源阈值的情况下,将所述区块链任务调度至该计算单元执行;若第一目标计算单元当前时刻正在执行其他任务,其他任务的个数小于n且当前可用资源不小于所述所需资源阈值,则调度引擎可以将所述区块链任务调度至该计算单元执行。通过该方式,目标计算引擎框架可以利用本地缓存进一步确保被分配至第一目标计算单元的区块链任务能够被其顺利执行。
当然,在前述实施例中将所述区块链任务分配至第二目标计算单元执行时,同样可以通过管理该计算单元的计算引擎框架转发该任务,并由该计算引擎框架进一步决定何时将区块链任务发送至第二目标计算单元执行,具体过程与所述目标计算引擎框架向第一目标计算单元转发所述区块链任务类似,此处不再赘述。
如前所述,调度引擎可以获取在分配前一区块链任务之后的更新的所述权重值确定第一目标计算单元以用于执行所述区块链任务,类似的,在将所述区块链任务分配至第一目标计算单元执行的情况下,更新所述计算单元的权重值以用于分配接收到的下一区块链任务,其中,第一目标计算单元更新后的权重值小于其更新前的权重值。承接于前述实施例,在所述区块链任务对应的候选计算单元包括图1所示的计算单元11、21和31的情况下,不妨假设在当前周期的起始时刻根据运行信息确定出的三者的初始权重值分别为W01、W02和W03(其他计算单元不再赘述),此时调度引擎所维护的权重表TW0={W01,W02,W03}。在当前周期内接收到的首个区块链任务(下称任务1)对应的第二目标计算单元不处于健康状态的情况下,可以将各个候选计算单元的初始权重值作为当前权重值,即此时的当前的权重表TCW1={CW11,CW12,CW13}。若其中CW11<CW12>CW13,则调度引擎可以将CW12对应的计算单元21确定为任务1对应的第一目标计算单元,此时可以通过计算引擎框架2将任务1转发至计算单元21执行。然后,可以更新所述权重表,如更新后的权重表TCW2={CW21,CW22,CW23}={CW12+W01,CW12-Wsum+W02,CW13+W03},其中,Wsum=W01+W02+W03,从而使得CW22<CW12,即在将任务1分配至计算单元21后,相应的降低该计算单元的权重值,以一定程度上避免将下一区块链任务(下称任务2)分配至该计算单元执行。
相应的,在任务2对应的第二目标计算单元不处于健康状态的情况下,调度引擎可以使用更新后的权重表TCW2确定任务2对应的第一目标计算单元,例如,若此时权重值CW21>CW22>CW23,则调度引擎可以将CW21对应的计算单元11确定为任务2对应的第一目标计算单元,并通过计算引擎框架1将任务2转发至计算单元11执行。类似的,此后可以进一步更新上述权重表,并使用更新后的权重表进一步确定下一区块链任务对应的第一目标计算单元,不再赘述。当然,上述过仅以更新同一计算类型的候选计算单元的权重值为例进行说明,实际上,调度引擎也可以在分配任一区块链任务后更新链下计算节点中全部计算单元的权重权,而且上述初始权重值以及具体更新方式均可以根据实际情况进行设置,本说明书并不对此进行限定。直至当前周期到时,调度引擎可以重新获取链下计算节点中各个链下计算节点的运行信息并确定相应的初始权重值,用于分配新一周期内接收到的各个区块链任务,具体过程与当前周期的上述过程类似,不再赘述。
另外,第一目标计算单元或第二目标计算单元在执行所述区块链任务完成后,可以通过管理自身的计算引擎框架将相应的执行结果返回至调度引擎,以由调度引擎将该执行结果提交至所述区块链节点,实现对该执行结果的存证。
在上述如图1所示的实施例中,实际上是从调度引擎的角度描述了本说明书所述方案中区块链任务的分配过程。下面结合图3,以当前周期内从候选计算单元中确定第一目标计算单元为例对上述过程进行示例性说明。容易理解的是,图3所示的实施例与图1所示的实施例并不存在本质上的差异,前文针对图1所示实施例的描述,可以适用于图3所示的实施例。
请参见图3,图3是一示例性实施例提供的一种区块链任务的分配方法的交互流程图。如图3所示,该方法包括步骤301-310。
步骤301,调度引擎获取链下计算节点中各个计算单元的运行信息。
在当前周期的起始时刻,调度引擎可以通过链下计算节点中的各个计算引擎框架分别获取各个计算单元的运行信息,如任务执行信息和资源占用信息等。其中,任一计算引擎框架可以在所述起始时刻采集自身所管理的各个计算单元的运行信息并提交至调度引擎。
步骤302,调度引擎根据获取到的运行信息分别确定各个计算单元的初始权重值,并维护相应的权重表。
调度引擎在获取到各个计算单元的运行信息后,可以从上述信息中提取相应的参数,然后通过加权平均法等预设算法分别计算各个计算单元的初始权重值。并将所述初始权重值记录在权重表中,以便后续步骤306b进行查询。
步骤303,调度引擎从区块链节点处接收区块链任务。
调度引擎可以接收区块链节点生成后主动发送的区块链任务,或者也可以通过监听机制监听区块链节点生成的区块链任务。其中,该区块链任务可以由区块链网络中的任一区块链节点执行智能合约产生。
需要说明的是,步骤303~307a与步骤302之间并不存在必然的先后关系,而且在步骤303位于步骤302之后的情况下,两步骤之间的间隔时间也并不确定,本说明书并不对此进行限定。
步骤304,调度引擎根据区块链任务所对应智能合约的地址摘要确定第二目标计算单元。
在接收到所述区块链任务后,调度引擎一方面可以确定生成该区块链任务的智能合约的合约地址,并计算该地址的地址摘要;另一方面可以确定该任务对应的目标计算类型,然后根据本地维护的各个计算单元的计算类型确定其中计算类型为所述目标计算类型的第二目标计算单元,假设为所述计算单元2。
步骤305,调度引擎确定第二目标计算单元的运行状态。
另外,调度引擎还可以获取计算单元2的健康状态信息。其中,计算单元2的健康状态信息与可以与步骤301中获取的运行信息类似,包括任务执行信息和/或资源占用信息。但需要强调的是,计算单元2的运行信息与健康状态信息的获取时刻并不相同:所述运行信息可以是计算单元2在当前周期的起始时刻的任务执行信息和/或资源占用信息,而所述健康状态信息可以是计算单元2在接收到区块链任务之后的任务执行信息和/或资源占用信息,可见所述健康状态信息的实时性优于所述运行信息。
调度引擎可以根据获取到的上述健康状态信息确定计算单元2的运行状态:在所述健康状态信息表明所述计算单元2处于健康状态的情况下,可以转入步骤306a;否则,在所述健康状态信息表明所述计算单元2不处于健康状态的情况下,可以转入步骤306b。
步骤306a,调度引擎将所述区块链任务分配至计算单元2。
步骤307a,计算单元2执行所述区块链任务。
此时,计算单元2可以正常接收区块链任务并顺利执行该任务,所以调度引擎可以通过管理计算单元2的计算引擎框架将所述区块链任务转发至计算单元2,并由该计算单元D执行该任务。计算单元2在执行所述区块链任务完成后,可以通过管理计算单元2的计算引擎框架将相应的执行结果返回至调度引擎,以由调度引擎将该执行结果提交至所述区块链节点,实现对该执行结果的存证。
步骤306b,调度引擎从权重表中查询计算单元的权重值。
在所述健康状态信息表明所述计算单元2处于不健康状态的情况下,该计算单元虽然当前运行状态不佳,但仍然能够接收并执行区块链任务,此时调度引擎可以在所述权重表中查询包括计算单元2在内的各个候选计算单元的权重值。而在所述健康状态信息表明所述计算单元2处于不可用状态的情况下,该计算单元无法接收所述区块链任务,此时调度引擎可以在所述权重表中查询除计算单元2之外的其他候选计算单元的权重值。
步骤307b,调度引擎根据权重值从候选中确定第一目标计算单元。
调度引擎在查询到的各个权重值中确定最大权重值,并将该权重值确定为第一目标计算单元,假设为所述计算单元1。可以理解的是,计算单元1即为当前时刻运行状态最优的候选计算单元。
步骤308b,调度引擎将所述区块链任务分配至计算单元1。
步骤309b,计算单元1执行所述区块链任务。
在确定计算单元1为第一目标计算单元的情况下,调度引擎可以通过管理计算单元1的计算引擎框架将所述区块链任务转发至该计算单元,以由其执行该任务。与计算单元2类似的,计算单元1在执行所述区块链任务完成后,也可以通过管理计算单元1的计算引擎框架将相应的执行结果返回至调度引擎,以由调度引擎将该执行结果提交至所述区块链节点,实现对该执行结果的存证。
步骤310,调度引擎更新权重表。
在将上述区块链任务分配至第一目标计算单元(或者第二目标计算单元)完成的情况下,可以相应的更新所述权重表,以相应的减小所述第一目标计算单元(或者第二目标计算单元)的权重值,从而尽量避免所述区块链任务之后的下一任务被仍然被分配至该计算单元,实现负载均衡过程的连续性。
因为计算单元的权重值根据其运行信息确定,而运行信息中的负载程度则会对该权重值产生负向影响,所以某一计算单元的当前负载越多(如正在执行或待执行的区块链任务数量越多)的计算单元,其权重值应当越低,使得该计算单元被选取为第一目标计算单元的可能性越小。可见,上述方案能够将所述区块链任务尽量分配至当前负载程度较低的第一目标计算单元(如计算单元1)执行,而在分配完成后,该计算单元的负载程度将有所升高,从而实现对各个计算单元的负载均衡。
图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图5所示,图5是本说明书根据一示例性实施例提供的一种区块链任务的分配装置的框图,该装置可以应用于如图4所示的设备中,以实现本说明书的技术方案。该装置应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,所述装置包括:
权重获取单元501,用于在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;
任务分配单元502,用于根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
可选的,调度引擎维护有所述链下计算节点包含的各个计算单元的计算类型,所述权重获取单元501还用于:
确定所述区块链任务对应的目标计算类型,并将各个计算单元中计算类型为所述目标计算类型的计算单元确定为对应于所述区块链任务的候选计算单元;
获取所述候选计算单元的权重值。
可选的,所述权重获取单元501还用于:
从所述计算单元中确定对应于所述区块链任务的第二目标计算单元及其健康状态信息;
在所述健康状态信息表明第二目标计算单元不处于健康状态的情况下,获取所述计算单元的权重值。
可选的,所述区块链任务通过执行智能合约产生,所述权重获取单元501还用于:
根据所述智能合约的合约地址计算相应的地址摘要;
对所述地址摘要与所述计算单元的个数进行取模运算,并将运算结果所指示的计算单元确定为对应于所述区块链任务的第二目标计算单元。
可选的,所述权重获取单元501还用于:
在所述健康状态信息表明第二目标计算单元处于不健康状态的情况下,获取包括第二目标计算单元在内的所述计算单元的权重值;
在所述健康状态信息表明第二目标计算单元处于不可用状态的情况下,获取除第二目标计算单元之外的其他计算单元的权重值。
可选的,还包括:
第二分配单元503,用于在所述健康状态信息表明第二目标计算单元处于健康状态的情况下,避免获取所述计算单元的权重值,并将所述区块链任务分配至第二目标计算单元执行。
可选的,所述权重获取单元501还用于:
获取根据前一区块链任务的分配情况更新后的所述计算单元的权重值,该权重值根据在当前周期内获取的所述计算单元的运行信息确定得到;或者,
获取所述计算单元的运行信息,并根据该运行信息确定所述计算单元的权重值。
可选的,所述权重获取单元501还用于:
接收所述任一计算引擎框架周期性发送的所述任一计算单元的运行信息;或者,
向所述任一计算引擎框架发起针对所述任一计算单元的信息获取请求,并接收其返回的所述任一计算单元在当前时刻的运行信息。
可选的,任一计算单元的运行信息包括任务执行信息和资源占用信息,所述任务执行信息用于表征该计算单元的任务执行情况,所述资源占用信息用于表征该计算单元的可调用资源,所述权重获取单元501还用于:
根据所述任务执行信息和资源占用信息综合确定所述任一计算单元的权重值。
可选的,所述任务分配单元502还用于:
将所述计算单元中权重值最大的计算单元作为第一目标计算单元。
可选的,还包括:
权重更新单元504,用于在将所述区块链任务分配至第一目标计算单元执行的情况下,更新所述计算单元的权重值以用于分配接收到的下一区块链任务,其中,第一目标计算单元更新后的权重值小于其更新前的权重值。
可选的,所述权重获取单元501还用于:
接收到所述区块链节点发送的所述区块链任务;或者,
通过监听所述区块链节点产生的任务分配事件获取到所述区块链任务。
可选的,所述链下计算任务由所述区块链节点执行区块链交易所产生,或者由所述区块链节点从其他区块链节点处同步得到。
可选的,所述任务分配单元502还用于:
确定管理第一目标计算单元的目标计算引擎框架,并通过所述目标计算引擎框架将所述区块链任务转发至第一目标计算单元执行。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本发明不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (17)
1.一种区块链任务的分配方法,应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,所述方法包括:
在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;
根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
2.根据权利要求1所述的方法,调度引擎维护有所述链下计算节点包含的各个计算单元的计算类型,所述获取所述计算单元的权重值,包括:
确定所述区块链任务对应的目标计算类型,并将各个计算单元中计算类型为所述目标计算类型的计算单元确定为对应于所述区块链任务的候选计算单元;
获取所述候选计算单元的权重值。
3.根据权利要求1所述的方法,所述获取所述计算单元的权重值,包括:
从所述计算单元中确定对应于所述区块链任务的第二目标计算单元及其健康状态信息;
在所述健康状态信息表明第二目标计算单元不处于健康状态的情况下,获取所述计算单元的权重值。
4.根据权利要求3所述的方法,所述区块链任务通过执行智能合约产生,所述从所述计算单元中确定对应于所述区块链任务的第二目标计算单元,包括:
根据所述智能合约的合约地址计算相应的地址摘要;
对所述地址摘要与所述计算单元的个数进行取模运算,并将运算结果所指示的计算单元确定为对应于所述区块链任务的第二目标计算单元。
5.根据权利要求3所述的方法,所述在所述健康状态信息表明第二目标计算单元不处于健康状态的情况下,获取所述计算单元的权重值,包括:
在所述健康状态信息表明第二目标计算单元处于不健康状态的情况下,获取包括第二目标计算单元在内的所述计算单元的权重值;
在所述健康状态信息表明第二目标计算单元处于不可用状态的情况下,获取除第二目标计算单元之外的其他计算单元的权重值。
6.根据权利要求3所述的方法,还包括:
在所述健康状态信息表明第二目标计算单元处于健康状态的情况下,避免获取所述计算单元的权重值,并将所述区块链任务分配至第二目标计算单元执行。
7.根据权利要求1所述的方法,所述获取所述计算单元的权重值,包括:
获取根据前一区块链任务的分配情况更新后的所述计算单元的权重值,该权重值根据在当前周期内获取的所述计算单元的运行信息确定得到;或者,
获取所述计算单元的运行信息,并根据该运行信息确定所述计算单元的权重值。
8.根据权利要求7所述的方法,获取任一计算引擎框架所管理的任一计算单元的运行信息,包括:
接收所述任一计算引擎框架周期性发送的所述任一计算单元的运行信息;或者,
向所述任一计算引擎框架发起针对所述任一计算单元的信息获取请求,并接收其返回的所述任一计算单元在当前时刻的运行信息。
9.根据权利要求7所述的方法,任一计算单元的运行信息包括任务执行信息和资源占用信息,所述任务执行信息用于表征该计算单元的任务执行情况,所述资源占用信息用于表征该计算单元的可调用资源,根据所述任一计算单元的运行信息确定所述任一计算单元的权重值,包括:
根据所述任务执行信息和资源占用信息综合确定所述任一计算单元的权重值。
10.根据权利要求1所述的方法,所述根据所述权重值从所述计算单元中选取第一目标计算单元,包括:
将所述计算单元中权重值最大的计算单元作为第一目标计算单元。
11.根据权利要求1所述的方法,还包括:
在将所述区块链任务分配至第一目标计算单元执行的情况下,更新所述计算单元的权重值以用于分配接收到的下一区块链任务,其中,第一目标计算单元更新后的权重值小于其更新前的权重值。
12.根据权利要求1所述的方法,所述接收到所述区块链节点产生的区块链任务,包括:
接收到所述区块链节点发送的所述区块链任务;或者,
通过监听所述区块链节点产生的任务分配事件获取到所述区块链任务。
13.根据权利要求1所述的方法,所述链下计算任务由所述区块链节点执行区块链交易所产生,或者由所述区块链节点从其他区块链节点处同步得到。
14.根据权利要求1所述的方法,所述将所述区块链任务分配至第一目标计算单元执行,包括:
确定管理第一目标计算单元的目标计算引擎框架,并通过所述目标计算引擎框架将所述区块链任务转发至第一目标计算单元执行。
15.一种区块链任务的分配装置,应用于链下计算节点所包含的调度引擎,所述链下计算节点对应于区块链节点,所述链下计算节点还包含至少一个计算引擎,任一计算引擎包括计算引擎框架及其所管理的至少一个计算单元,所述装置包括:
权重获取单元,用于在接收到所述区块链节点产生的区块链任务的情况下,获取所述计算单元的权重值,所述权重值被根据所述计算单元的运行信息所确定,所述运行信息包括对所述权重值产生负向影响的负载程度;
任务分配单元,用于根据所述权重值从所述计算单元中选取第一目标计算单元,并将所述区块链任务分配至第一目标计算单元执行。
16.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-14中任一项所述的方法。
17.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-14中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210605497.4A CN114979160B (zh) | 2022-05-30 | 2022-05-30 | 区块链任务的分配方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210605497.4A CN114979160B (zh) | 2022-05-30 | 2022-05-30 | 区块链任务的分配方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979160A true CN114979160A (zh) | 2022-08-30 |
CN114979160B CN114979160B (zh) | 2024-06-14 |
Family
ID=82958039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210605497.4A Active CN114979160B (zh) | 2022-05-30 | 2022-05-30 | 区块链任务的分配方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979160B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218424A (zh) * | 2018-09-14 | 2019-01-15 | 四川海纳仁东科技有限公司 | 基于区块链节点算力的任务分配方法 |
US20200081746A1 (en) * | 2018-09-07 | 2020-03-12 | International Business Machines Corporation | Load leveler |
US20200084019A1 (en) * | 2018-09-07 | 2020-03-12 | Nebulas IO Limited | Blockchain Ranking Engine |
CN113608878A (zh) * | 2021-08-18 | 2021-11-05 | 上海德拓信息技术股份有限公司 | 一种基于资源权重计算的任务分布式调度方法与系统 |
-
2022
- 2022-05-30 CN CN202210605497.4A patent/CN114979160B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200081746A1 (en) * | 2018-09-07 | 2020-03-12 | International Business Machines Corporation | Load leveler |
US20200084019A1 (en) * | 2018-09-07 | 2020-03-12 | Nebulas IO Limited | Blockchain Ranking Engine |
CN109218424A (zh) * | 2018-09-14 | 2019-01-15 | 四川海纳仁东科技有限公司 | 基于区块链节点算力的任务分配方法 |
CN113608878A (zh) * | 2021-08-18 | 2021-11-05 | 上海德拓信息技术股份有限公司 | 一种基于资源权重计算的任务分布式调度方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114979160B (zh) | 2024-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647394B (zh) | 一种资源分配方法、装置及设备 | |
Wang et al. | Workflow as a service in the cloud: architecture and scheduling algorithms | |
JP6490913B2 (ja) | グリッドコンピューティングシステムの遊休リソースによるタスク実行 | |
CN112463375B (zh) | 一种数据处理的方法和装置 | |
Chang et al. | Selecting the most fitting resource for task execution | |
CN111861412A (zh) | 面向完成时间优化的科学工作流调度方法及系统 | |
Imai et al. | Accurate resource prediction for hybrid IaaS clouds using workload-tailored elastic compute units | |
CN114356587B (zh) | 算力任务跨区域调度方法、系统及设备 | |
JP2021520578A (ja) | タスクスケジューリング | |
CN112202829A (zh) | 基于微服务的社交机器人调度系统和调度方法 | |
CN111597035A (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
Benini et al. | Resource management policy handling multiple use-cases in mpsoc platforms using constraint programming | |
Ghouma et al. | Context aware resource allocation and scheduling for mobile cloud | |
CN116880996A (zh) | 虚拟计算资源的调度方法及控制面组件 | |
CN114979160A (zh) | 区块链任务的分配方法及装置 | |
CN114860400A (zh) | 区块链任务的链下处理方法及装置 | |
CN111475277A (zh) | 一种资源分配方法、系统、设备及机器可读存储介质 | |
Djebbar et al. | Task scheduling strategy based on data replication in scientific cloud workflows | |
CN111966456A (zh) | 一种容器显存动态分配方法、装置、设备 | |
Cao et al. | Performance optimization of budget-constrained mapreduce workflows in multi-clouds | |
Li et al. | Topology-aware scheduling on blue waters with proactive queue scanning and migration-based job placement | |
Posner et al. | Evolving APGAS Programs: Automatic and Transparent Resource Adjustments at Runtime | |
Tahirović | Computation Offloading for Real-Time Applications | |
CN116151137B (zh) | 一种仿真系统、方法及装置 | |
CN109412973A (zh) | 一种音频处理方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |