一种区块链任务调度的方法及miner节点与流程

文档序号:25490332发布日期:2021-06-15 21:55阅读:252来源:国知局
一种区块链任务调度的方法及miner节点与流程

本申请实施例涉及区块链技术领域,尤其涉及一种区块链任务调度的方法及miner节点。



背景技术:

星际文件系统(ipfs,interplanetaryfilesystem)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。ipfs的出现,给人们提供了一种降低数据的维护成本的方案。而基于ipfs的区块链项目如filecoin、filecash以及filestar等应运而生。在基于ipfs的区块链项目中,通常采用一个miner节点和多个worker节点配合组成挖矿集群的方案为需求方提供存储数据的服务。

现有技术中,当miner节点从任务队列中获取一个区块时,往往需要先获取到与之关联的所有的worker节点的任务情况,然后筛选出符合条件的worker节点,再根据一定的规则例如随机分配给符合条件的worker节点中的任意一个worker节点,或者分配给符合条件的worker节点中待执行任务数最少的worker节点或者按照其他的方式分配任务等。

然而,miner节点从获取区块到完成分配的过程太过繁琐,分配区块的效率低下。



技术实现要素:

本申请实施例提供了一种区块链任务调度的方法及miner节点,可以简化miner节点分配区块的过程,提高分配区块的效率。

本申请实施例第一方面提供了一种区块链任务调度的方法,应用于miner节点,方法包括:

从任务队列获取目标区块的区块号,所述区块号包括标识位、地址位以及阶段位,所述标识位保存所述目标区块的唯一标识,所述地址位保存有与所述miner节点相关联的worker节点的互联网协议ip地址,所述阶段位保存所述目标区块的阶段信息;

对所述区块号进行解析,得到第一ip地址;

根据所述第一ip地址确定第一worker节点;

判断所述第一worker节点是否满足处理所述目标区块的预设条件;

若是,则将所述目标区块分配给所述第一worker节点进行处理。

可选的,所述判断所述第一worker节点是否满足处理所述目标区块的预设条件包括:

判断所述第一worker节点的待完成任务数是否小于任务数阈值;

若是,则确定所述第一worker节点满足处理所述目标区块的预设条件。

可选的,所述判断所述第一worker节点的待完成任务数是否小于任务数阈值之后,所述方法还包括:

若否,则获取所有的待完成任务数低于所述任务数阈值的worker节点作为预选worker节点;

从所述预选worker节点中随机选取一个作为第二worker节点;

将所述目标区块分配给所述第二worker节点进行处理。

可选的,所述从所述预选worker节点中随机选取一个作为第二worker节点之后,所述将所述目标区块分配给所述第二worker节点进行处理之前,所述方法还包括:

将所述区块号的地址位改为第二ip地址,所述第二ip地址为所述第二worker节点的ip地址。

可选的,所述将所述目标区块分配给所述第二worker节点进行处理之后,所述方法还包括:

当接收到所述第二worker节点发送的与所述目标区块对应的阶段变更通知时,更新所述区块号的阶段位。

可选的,所述从任务队列获取目标区块的区块号之前,所述方法还包括:

根据预设命名规则生成目标区块的区块号;

将所述区块号加入任务队列。

可选的,所述根据预设命名规则生成目标区块的区块号包括:

根据历史任务分配记录,获取权值最高的worker节点的ip地址;

根据目标区块的上一个区块的唯一标识生成所述目标区块的唯一标识;

根据所述ip地址、所述目标区块的唯一标识生成所述目标区块的区块号。

本申请实施例第二方面提供了一种miner节点,包括:

获取单元,用于从任务队列获取目标区块的区块号,所述区块号包括标识位、地址位以及阶段位,所述标识位保存所述目标区块的唯一标识,所述地址位保存有与所述miner节点相关联的worker节点的互联网协议ip地址,所述阶段位保存所述目标区块的阶段信息;

解析单元,用于对所述区块号进行解析,得到第一ip地址;

确定单元,用于根据所述第一ip地址确定第一worker节点;

判断单元,用于判断所述第一worker节点是否满足处理所述目标区块的预设条件;

第一分配单元,用于当所述判断单元确定所述第一worker节点满足处理所述目标区块的预设条件时,将所述目标区块分配给所述第一worker节点进行处理。

可选的,所述判断单元具体用于:

判断所述第一worker节点的待完成任务数是否小于任务数阈值;

若是,则确定所述第一worker节点满足处理所述目标区块的预设条件。

可选的,所述miner节点还包括第二分配单元,所述第二分配单元用于:

当所述判断单元确定所述第一worker节点不满足处理所述目标区块的预设条件时,获取所有的待完成任务数低于所述任务数阈值的worker节点作为预选worker节点;

从所述预选worker节点中随机选取一个作为第二worker节点;

将所述目标区块分配给所述第二worker节点进行处理。

可选的,所述第二分配单元具体用于:

当所述判断单元确定所述第一worker节点不满足处理所述目标区块的预设条件时,获取所有的待完成任务数低于所述任务数阈值的worker节点作为预选worker节点;

从所述预选worker节点中随机选取一个作为第二worker节点;

将所述区块号的地址位改为第二ip地址,所述第二ip地址为所述第二worker节点的ip地址。

将所述目标区块分配给所述第二worker节点进行处理。

可选的,所述miner节点还包括第二更新单元,所述第二更新单元具体用于:

当接收到所述第二worker节点发送的与所述目标区块对应的阶段变更通知时,更新所述区块号的阶段位。

可选的,所述miner节点还包括命名单元,所述命名单元用于:

根据预设命名规则生成目标区块的区块号;

将所述区块号加入任务队列。

可选的,所述命名单元具体用于:

根据历史任务分配记录,获取权值最高的worker节点的ip地址;

根据目标区块的上一个区块的唯一标识生成所述目标区块的唯一标识;

根据所述ip地址、所述目标区块的唯一标识生成所述目标区块的区块号;

将所述区块号加入任务队列。

本申请实施例第三方面提供了一种miner节点,包括:

处理器、存储器、输入输出单元、总线;

所述处理器与所述存储器、所述输入输出单元以及所述总线相连;

所述处理器具体执行如下操作:

从任务队列获取目标区块的区块号,所述区块号包括标识位、地址位以及阶段位,所述标识位保存所述目标区块的唯一标识,所述地址位保存有与所述miner节点相关联的worker节点的互联网协议ip地址,所述阶段位保存所述目标区块的阶段信息;

对所述区块号进行解析,得到第一ip地址;

根据所述第一ip地址确定第一worker节点;

判断所述第一worker节点是否满足处理所述目标区块的预设条件;

若是,则将所述目标区块分配给所述第一worker节点进行处理。

本申请实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,当所述程序在计算机上执行时,使得所述计算机执行如第一方面及第一方面任意一种可能的实施方式中的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中,miner节点从任务队列中获取目标区块之后,首先对目标区块的区块号进行解析,从而得到目标区块中携带的第一互联网协议(ip,internetprotocol)地址,然后根据第一ip地址确定第一worker节点,如果第一worker节点满足处理目标区块的预设条件,则直接将目标区块分配给第一worker节点处理。本申请实施例对区块号进行了改进,在兼顾区块号唯一性的同时中加入了与miner节点相关联的worker节点的ip地址,使得miner节点在为目标区块分配任务时,只要确定目标区块的区块号中携带的第一ip地址对应的第一worker节点满足处理目标区块预设条件,则直接将目标区块分配给第一worker节点处理,简化了分配区块的过程,提高了分配区块的效率。

附图说明

图1为本申请实施例提供的区块链任务调度的方法一个实施例的流程示意图;

图2为本申请实施例提供的区块链任务调度的方法另一个实施例的流程示意图;

图3为本申请实施例提供的miner节点一个实施例的结构示意图;

图4为本申请实施例提供的miner节点另一个实施例的结构示意图;

图5为本申请实施例提供的miner节点另一个实施例的结构示意图。

具体实施方式

本申请实施例提供了一种区块链任务调度的方法及miner节点,用于简化miner节点分配区块的过程,提高分配区块的效率。

下面对本申请实施例中区块链任务调度的方法进行详细描述。

请参阅图1,本申请实施例中区块链任务调度的方法一个实施例包括:

101、miner节点从任务队列获取目标区块的区块号;

在一个miner节点和多个worker节点组成的挖矿集群中,miner节点可以从任务队列中获取目标区块的区块号,而区块号包括标识位、地址位以及阶段位,标识位保存目标区块的唯一标识,以保证区块号的唯一性;地址位保存有与miner节点相关联的worker节点的互联网协议ip地址;而阶段位保存目标区块的阶段信息,表示目标区块的执行阶段。

需要说明的是,地址位中保存的ip地址,只需保证可以确定唯一的worker节点,可以是完整的ip地址,也可以仅仅是包含ip地址的一部分比如尾部,具体此处不做限定。

102、miner节点对所述区块号进行解析,得到第一ip地址;

由于区块号的地址位保存有与miner节点相关联的worker节点的互联网协议ip地址,因此miner节点可以通过对区块号进行解析,根据地址位得到第一ip地址。

103、miner节点根据所述第一ip地址确定第一worker节点;

第一ip地址是挖矿集群中某个worker节点的ip地址,具有唯一性,因此miner节点可以根据第一ip地址在挖矿集群中确定与第一ip地址对应的第一worker节点。

104、miner节点判断所述第一worker节点是否满足处理所述目标区块的预设条件,若是,则执行步骤105;

miner节点在确定第一worker节点之后,可以对第一worker节点进行判断,如果第一worker节点满足处理目标区块的预设条件,则可以执行步骤105。

105、miner节点将所述目标区块分配给所述第一worker节点进行处理。

当第一worker节点满足处理目标区块的预设条件,miner节点可以直接将目标区块分配给第一worker节点,由第一worker节点对目标区块进行处理。

本申请实施例中,miner节点从任务队列中获取目标区块之后,首先对目标区块的区块号进行解析,从而得到目标区块中携带的第一ip地址,然后根据第一ip地址确定第一worker节点,如果第一worker节点满足处理目标区块的预设条件,则直接将目标区块分配给第一worker节点处理。本申请实施例对区块号进行了改进,在兼顾区块号唯一性的同时中加入了与miner节点相关联的worker节点的ip地址,使得miner节点在为目标区块分配任务时,只要确定目标区块的区块号中携带的第一ip地址对应的第一worker节点满足处理目标区块预设条件,则直接将目标区块分配给第一worker节点处理,简化了分配区块的过程,提高了分配区块的效率。

请参阅图2,本申请实施例中区块链任务调度的方法另一个实施例包括:

201、miner节点根据历史任务分配记录,获取权值最高的worker节点的ip地址;

在实际应用中,在miner节点为可以根据历史任务分配记录,即以前的区块的分配记录,动态的计算出miner节点下每一个worker节点的权值,这里的权值指的是为分配区块的有限度,miner节点在计算出每一个worker节点的权值之后,可以对每一个worker节点的权值进行比较,然后从中确定权值最高的worker节点,接着获取该worker节点的ip地址。

需要说明的是,miner节点可以根据历史任务分配记录中最近的一部分分配记录计算worker节点的权值,比如最近100个区块任务分配;也可以根据全部的历史任务记录计算worker节点的权值,具体此处不做限定。

本实施例中,worker节点的权值的高低的原则,可以是历史任务分配记录分配到区块的次数越高则权值越高,例如历史任务分配记录为100次,挖矿集群中aworker节点分配到了9次区块任务,bworker节点分配到了7次区块任务,cworker节点分配到了22次区块任务,则这三个worker节点的权值高低为cworker节点>aworker节点>bworker节点;也可以是其他原则,具体此处不做限定。

202、miner节点根据目标区块的上一个区块的唯一标识生成所述目标区块的唯一标识;

miner节点可以根据目标区块的上一个区块的唯一标识生成目标区块的唯一标识,例如目标区块的上一个区块的唯一标识为10783672,而唯一标识生成的规则为每次递增1,则miner节点可以得到目标区块的唯一标识10783673,同理,可以得出目标区块的下一个区块的唯一标识为10783674。

203、miner节点根据所述ip地址、所述目标区块的唯一标识生成所述目标区块的区块号;

miner节点可以根据获取到的权值最高的worker节点的ip地址、目标区块的唯一标识生成目标区块的区块号,需要说明的是,新生成的区块号的阶段位的值都为默认值。

204、miner节点将所述区块号加入任务队列;

miner节点在生成目标区块的区块号之后,可以将该区块号加入任务队列中。

205、miner节点从任务队列获取目标区块的区块号;

206、miner节点对所述区块号进行解析,得到第一ip地址;

207、miner节点根据所述第一ip地址确定第一worker节点;

本实施例中,步骤205至207与前述实施例中的步骤101至103类似,此处不再赘述。

208、miner节点判断所述第一worker节点的待完成任务数是否小于任务数阈值,若是,则执行步骤209;若否,则执行步骤212。

miner节点可以通过第一worker节点的待完成任务数判断是否将目标任务分配给第一worker节点。如果第一worker节点的待完成任务数小于任务数阈值,则说明第一worker节点满足处理目标区块的预设条件,此时miner节点可以执行步骤209;否则,miner节点执行步骤212。

209、miner节点确定所述第一worker节点满足处理所述目标区块的预设条件;

当第一worker节点的待完成任务数小于任务数阈值,miner节点可以确定第一worker节点满足处理目标区块的预设条件。

210、miner节点将所述目标区块分配给所述第一worker节点进行处理;

本实施例中,步骤210与前述实施例中的步骤105类似,此处不再赘述。

211、当miner节点接收到所述第一worker节点发送的与所述目标区块对应的阶段变更通知时,更新所述区块号的阶段位;

miner节点将目标区块分配给第一worker节点之后,如果第一worker节点处理完目标区块的相应任务,则会向miner节点发送阶段变更通知,而miner节点在接收到第一worker节点发送的阶段变更通知之后,可以更新目标区块的区块号中的阶段位。

本实施例中,当目标区块的阶段信息发生变化时,miner节点可以接收到第一worker节点发送的阶段变更通知,然后对区块号中的阶段位进行相应的更新。

本实施例中,当目标区块的阶段发生变化时,miner节点可以对目标区块的区块号中的阶段位进行相应的更新,可以对目标区块的阶段进行跟踪,如果目标区块异常时,通过区块号中的阶段位就可以获取到目标区块产生异常的阶段。

212、miner节点获取所有的待完成任务数低于所述任务数阈值的worker节点作为预选worker节点;

当miner节点确定第一worker节点不满足处理目标区块的预设条件时,则可以从挖矿集群中筛选出待完成任务数低于任务数阈值的worker节点作为处理目标区块的预选worker节点。

213、miner节点从所述预选worker节点中随机选取一个作为第二worker节点;

miner节点获取到预选worker节点之后,可以从预选worker节点中随机选取一个作为处理目标区块的第二worker节点。

214、miner节点将所述区块号的地址位改为第二ip地址;

miner节点确定第二worker节点之后,可以将目标区块的区块号中的地址位更改为第二ip地址,第二ip地址位第二worker节点的ip地址。

215、miner节点将所述目标区块分配给所述第二worker节点进行处理;

miner节点在更改区块号中的地址位之后,可以将目标区块分配给第二worker节点,由第一worker节点对目标区块进行处理。

本实施例中,当第一worker节点不满足预设条件时,miner节点可以动态的将目标区块分配给挖矿集群中满足预设条件的第二worker节点处理,提高了健壮性。

本实施例中,miner节点在将目标区块分配给第二worker节点之前,会先将目标区块的区块号中的地址位改为第二worker节点对应的第二ip地址,因此miner节点可以通过查询区块号中的地址位对应的ip地址跟踪到正在处理目标区块的worker节点,而无需再去查询日志文件,提高了效率。

216、当miner节点接收到所述第二worker节点发送的与所述目标区块对应的阶段变更通知时,更新所述区块号的阶段位。

miner节点将目标区块分配给第二worker节点之后,如果第二worker节点处理完目标区块的相应任务,则会向miner节点发送阶段变更通知,而miner节点在接收到第二worker节点发送的阶段变更通知之后,可以更新目标区块的区块号中的阶段位。

上面对本申请实施例中区块链任务调度的方法进行了详细描述,下面对本申请实施例中miner节点进行详细描述。

请参阅图3,本申请实施例中miner节点的一个实施例包括:

获取单元301,用于从任务队列获取目标区块的区块号,区块号包括标识位、地址位以及阶段位,标识位保存目标区块的唯一标识,地址位保存有与miner节点相关联的worker节点的互联网协议ip地址,阶段位保存目标区块的阶段信息;

解析单元302,用于对区块号进行解析,得到第一ip地址;

确定单元303,用于根据第一ip地址确定第一worker节点;

判断单元304,用于判断第一worker节点是否满足处理目标区块的预设条件;

第一分配单元305,用于当判断单元304确定第一worker节点满足处理目标区块的预设条件时,将目标区块分配给第一worker节点进行处理。

本申请实施例中,获取单元301从任务队列中获取目标区块之后,解析单元302首先对目标区块的区块号进行解析,从而得到目标区块中携带的第一ip地址,然后确定单元303根据第一ip地址确定第一worker节点,如果第一worker节点满足处理目标区块的预设条件,则第一分配单元305直接将目标区块分配给第一worker节点处理。本申请实施例对区块号进行了改进,在兼顾区块号唯一性的同时中加入了与miner节点相关联的worker节点的ip地址,使得miner节点在为目标区块分配任务时,只要判断单元304确定目标区块的区块号中携带的第一ip地址对应的第一worker节点满足处理目标区块预设条件,则第一分配单元305就可以直接将目标区块分配给第一worker节点处理,因此简化了分配区块的过程,提高了分配区块的效率。

下面对本申请实施例中miner节点进行详细描述,请参阅图4,本申请实施例中miner节点的另一个实施例包括:

获取单元301,用于从任务队列获取目标区块的区块号,区块号包括标识位、地址位以及阶段位,标识位保存目标区块的唯一标识,地址位保存有与miner节点相关联的worker节点的互联网协议ip地址,阶段位保存目标区块的阶段信息;

解析单元302,用于对区块号进行解析,得到第一ip地址;

确定单元303,用于根据第一ip地址确定第一worker节点;

判断单元304,用于判断第一worker节点是否满足处理目标区块的预设条件;

第一分配单元305,用于当判断单元304确定第一worker节点满足处理目标区块的预设条件时,将目标区块分配给第一worker节点进行处理。

本实施例中,判断单元具体用于:

判断第一worker节点的待完成任务数是否小于任务数阈值;

若是,则确定第一worker节点满足处理目标区块的预设条件。

本实施例中,miner节点还可以进一步包括第一更新单元406、第二分配单元407、第二更新单元408以及命名单元409。

第一更新单元406具体用于:

当接收到第一worker节点发送的与目标区块对应的阶段变更通知时,更新区块号的阶段位。

第二分配单元407具体用于:

当判断单元404确定第一worker节点不满足处理目标区块的预设条件时,获取所有的待完成任务数低于任务数阈值的worker节点作为预选worker节点;

从预选worker节点中随机选取一个作为第二worker节点;

将区块号的地址位改为第二ip地址,第二ip地址为第二worker节点的ip地址;

将目标区块分配给第二worker节点进行处理。

第二更新单元408具体用于:

当接收到第二worker节点发送的与目标区块对应的阶段变更通知时,更新区块号的阶段位。

命名单元409具体用于:

根据历史任务分配记录,获取权值最高的worker节点的ip地址;

根据目标区块的上一个区块的唯一标识生成目标区块的唯一标识;

根据ip地址、目标区块的唯一标识生成目标区块的区块号;

将区块号加入任务队列。

本实施例中,各单元的功能和前述图2所示实施例中的步骤对应,此处不再赘述。

下面对本申请实施例中miner节点进行详细描述,请参阅图5,本申请实施例中miner节点的另一个实施例包括:

处理器501、存储器502、输入输出单元503、总线504;

处理器501与存储器502、输入输出单元503以及总线504相连;

处理器501具体执行如下操作:

从任务队列获取目标区块的区块号,区块号包括标识位、地址位以及阶段位,标识位保存目标区块的唯一标识,地址位保存有与miner节点相关联的worker节点的互联网协议ip地址,阶段位保存目标区块的阶段信息;

对区块号进行解析,得到第一ip地址;

根据第一ip地址确定第一worker节点;

判断第一worker节点是否满足处理目标区块的预设条件;

若是,则将目标区块分配给第一worker节点进行处理。

本实施例中,处理器501的功能与前述图1至图2所示实施例中的步骤对应,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1