掌桥专利:专业的专利平台
掌桥专利
首页

一种基于区块链的可信分布式计算卸载方法

文献发布时间:2023-06-19 19:30:30


一种基于区块链的可信分布式计算卸载方法

技术领域

本发明属于分布式环境下边缘计算技术领域,涉及一种基于区块链的可信分布式计算卸载方法。

背景技术

随着工业物联网各种关键任务应用的发展,例如图像识别、视频流等数据的采集与分析的发展,现有技术对应的物联网设备往往没有足够的计算能力,需要为其提供支撑计算能力和超低延迟连接。传统的云计算面对“低延迟”要求已经无法满足技术要求,计算中心逐渐从云计算下沉到边缘计算。边缘计算指的是接近于事物、数据和行动源头处的计算,与传统的集中式云计算系统相比,具有更低的时延、更快的响应速度和更好的用户体验。目前的边缘计算网络充斥着大量分散的、异构的资源,网络和网络之间缺乏有效的资源整合手段,资源和资源之间的信任问题也无法解决,计算任务卸载的安全性和隐私问题一直以来都是边缘计算卸载的重要挑战。因为边缘计算天然与区块链的去中心化模式吻合,且区块链具有可追溯、防篡改的特征,许多研究尝试结合区块链技术来解决边缘计算卸载中面临的安全性和隐私问题。

区块链能够在缺乏信任的分布式网络环境下实现交易的安全性和数据的高度一致性,然而,区块链“可信”付出的代价之一就是性能,这与工业物联网场景下对边缘计算的超低时延要求相悖。以比特币为例,区块链平均每秒能处理5至7笔交易,但需要10分钟才能出1个块,而达到交易需要6个块,达成一次交易记录需要长达1个小时。一方面,区块链无差别地保存海量数据,开销巨大,另一方面,复杂的计算任务如高斯消元等可用有向无环图表示的任务,子任务之间一般具有不同程度的数据与时间关联性,导致分布式环境下任务卸载存在诸多限制。因此区块链与边缘计算结合应用,存在以下不足:1.如何利用区块链有效整合边缘计算网络中的各种异构资源;2.区块链交易成本高,效率低,需要对区块链进行降本增效。

发明内容

本发明针对现有分布式边缘计算中任务卸载存在的缺陷,提供了一种在边缘计算中基于区块链的可信计算任务卸载系统及方法。

本发明提供以下技术方案:基于用户或者任务卸载需求方、边缘计算服务商或者资源提供方、以及联盟链构成的分布式系统模型,提供一种基于联盟链的链上、链下数据协同方法;

其中,用户或者任务卸载需求方,为当前时刻需要进行任务卸载请求的代理方;当前时刻存在多个用户发布任务卸载请求,或者,一个用户提供多个卸载任务,且任务之间可能具有数据关联性,即任务一的计算结果是任务二的输入数据;

边缘计算服务商或者资源提供方,为当前时刻存在空闲资源的边缘计算服务器的代理方;当前时刻存在多个边缘计算服务商,或者,一个边缘计算服务商提供多台边缘计算服务器,各个服务器分布在不同地区;

联盟链负责处理并记录用户的卸载请求和边缘计算服务商的资源分布情况,通过部署的智能合约提供包括注册、认证、卸载请求和资源发布的分布式服务;

分布式非关系数据库Mongodb,Mongodb是一个基于分布式文件存储的数据库,负责储存任务卸载全过程中产生的数据,包括中间文档记录;Mongodb是强数据一致性的,为任务卸载与联盟链可查性提供数据支撑;

链上的数据存储仅保存重要数据的摘要,包括:用户索引、在线节点索引、交易列表或者任务卸载记录、计算文件的数字指纹MD5(MD5校验和由128位值组成,该值通常表示为十六进制格式,由32个字符组成。通常通过MD5对一段信息产生信息摘要,以防止信息被篡改。)、用户的签名以及资源节点的签名;上述数据存于联盟链的区块链账本,简称Ledger中;Ledger指的是区块链账本,由世界状态和区块链组成,世界状态保存了账本数据的当前值,可以频繁更改,便于应用程序直接访问,区块链记录了导致当前世界状态的所有更改日志,写入后无法修改,便于历史追踪;

链下的数据存储保存全复制数据,包括:用户上传的任务列表、用户信息、用户行为记录、资源节点信息、资源节点行为记录、算法信息以及任务计算中产生的一些中间数据文件的存储信息;上述数据存于Mongodb的非关系型数据库的collection中,collection是Mongodb数据库中的表。

联盟链部署的智能合约用于约束用户或边缘计算服务提供商的注册与初始化,智能合约为一段描述业务模型和交互规则的可自动执行程序,智能合约定义了不同组织之间的规则;应用程序调用智能合约来生成被记录到账本上的交易,包括:

用户或边缘计算服务商根据自身的身份ID注册并登录联盟链;

用户或边缘计算服务商根据自身私钥对哈希值、时间戳以及加密后的身份信息进行签名,并将签名后的哈希值、时间戳以及加密后的身份信息索引存储在联盟链的当值节点中;

边缘计算服务商根据现实情况更新资源信息;

边缘计算服务商到指定URL下载最新的算法代码,保证任务卸载的正常进行;

智能合约分别进行提交记录和摘要索引的上链,完整的用户信息及资源节点信息进行链下数据库存储。

智能合约的卸载申请发生时,用户上传任务数据至联盟链,包括:

用户向联盟链发起任务卸载请求;

联盟链根据自身的智能合约以及当前的资源情况判断用户的请求是否合理,并且链上存储该请求中包含的任务索引;

当判断结果为是时,联盟链中的智能合约将用户上传任务数据进行授权,区块链节点根据用户提交的授权确认交易,调用联盟链中智能合约中定义的授权接口,使任务数据使用方获得授权;并将授权后的任务数据链下存储;然后将卸载请求发送调度器等待进行任务卸载,将用户行为等其他主要信息进行链下存储;

当判断结果为否时,拒绝该任务卸载请求;

在调度器中调用卸载算法得到预卸载结果,进行实际的卸载调度。

智能合约的卸载申请发生时,边缘计算服务提供商通过联盟链对任务数据进行访问,包括:

接收联盟链广播的卸载请求,更新自己接受卸载后的资源剩余情况,将资源情况索引上链,其他主要信息链下存储;

向联盟链请求解密后的任务索引,根据索引从链下数据库获得指定的任务URL和算法,到指定URL下载任务文件,并将算法预装载;

获得任务文件后,计算文件的MD5,和链上对应的信息进行比对,验证数字签名,判断是否收到了正确、完整的文件;

当判断结果为是时,进行任务计算工作,并将计算结果返回给请求用户,等待用户确认;用户确认后将卸载结果的索引信息上链,卸载结果的完整信息进行链下数据库存储;

当判断结果为否时,向联盟链提交错误报告,并重新向请求解密后的交易数据。

联盟链上的任务卸载决策方法以智能合约形式部署,包括以下步骤:

步骤1、数据采集:用户通过物联网设备采集任务数据,上传卸载任务信息到联盟链的智能合约中,同时,智能合约主动更新所有边缘计算服务商的资源情况;

步骤2、排序:智能合约根据要卸载的批量任务信息,通过聚类方法,简称Kmeans,进行分类和排序,最大程度保证任务间的内在关联性,确定批量任务的卸载顺序;

步骤3、过滤:按照卸载顺序遍历任务,将就绪任务加入就绪队列,其他未就绪任务加入等待队列;

步骤4、预绑定:遍历运行队列,对于队列中每个任务,找到满足任务所需计算资源且使得它时延最小的边缘服务器节点,进行卸载预绑定;

步骤5、绑定:根据步骤4中得到的预卸载结果进行任务卸载,卸载失败的任务加入重试队列。就绪队列为空时,将等待队列中的就绪任务加入就绪队列。重试队列中的任务将在就绪队列与等待队列均为空时启动重试;

步骤6、重复步骤4与步骤5,直到所有队列均为空,则该次任务卸载完成,智能合约将记录本次卸载结果。

所述的步骤1中,卸载任务请求只上传任务摘要信息,在用户和联盟链之间作一次对链上账本的小数据量的写入,传输的时间小到可以被忽略,系统中维护的资源表的更新与任务卸载请求摘要信息的上传同时进行;

分布式计算卸载研究普遍使用有向无环图Directed Acyclic Graph,简称DAG,指的是一个无回路的有向图,来表示任务之间的依赖关系,表示为G=(V,E),

其中V表示DAG中节点的集合,每个节点i∈V表示运行的复杂计算任务中的一个子任务;E表示DAG中边的集合,每条边e(i,j)∈E表示任务i和j之间的依赖关系,即任务j需要任务i的输出数据作为自己的输入,并把任务i称为j的前驱,任务j为i的后继,一个任务只有在其所有前驱任务完成后才能开始执行;在一个DAG中,没有前驱任务的任务被称为入口任务,没有后继任务的任务被称为出口任务,一个应用允许同时有多个入口任务和出口任务。假设用户集合表示为U={u

所述的步骤2中,设同一个用户提交的任务大概率是相关的,智能合约根据手肘法确定任务分类的初始类别K,再根据K值判断是否进行资源节点分类,将任务属性T

手肘法通过计算SSE来评价K值的好坏,当K到达最佳聚类数时,再增加K所得到的SSE的下降幅度会骤减,由此来确定最佳聚类数量K,SSE的计算方法表示为:

设当前需要进行任务卸载的任务总数量为α,智能合约检验在线资源节点数量β,对资源节点进行分类具有以下约束:

当β≤α时,参与本次卸载的资源节点数量β=β;

当β>α时,参与本次卸载的资源节点数量β=max{α,β×A},A∈[0,1],表示从在线资源节点中取样的百分比,默认设置为0.5,可通过配置自定义;

类间数量调整具有以下约束:ActualSkew=count[allocated]-min(count[allocated]),ActualSkew

所述的步骤3中,通过判断任务t

所述的步骤4中,通过智能合约进行卸载的预绑定,该智能合约具体介绍如下:任务t

预绑定排序通过优先级进行,优先级

所述的步骤5中,计算当前资源节点的碎片率,根据碎片率与预绑定阶段分配的节点情况实际进行调度,MemFragmentationRatio=MemAllocatable/MemRequest,1≤MemFragmentationRatio<1.6时,表示当前节点是可调度的,且实际卸载过程中具有以下约束:

(1)用户提交的所有任务都应该被卸载到边上执行;

(2)每个上传的任务都是被分割后的原子性的,不能被进一步分割;

(3)一个任务被假定只会被卸载到一个在线资源节点上;

(4)队列插入操作也要保留优先级约束。

所述的步骤5和步骤6中,将会一直累计本次批量任务完成的时延,和边缘服务器能耗,在所有任务完成后,将统计计算任务完成率:

批量任务完成的总时延的计算方法定义为:

Ttotal=Tfinal,T

边缘计算服务器对于用户提交的计算任务t

表示边缘计算服务器在执行任务t

边缘计算服务器的批量任务卸载完成总能耗定义为:

E

任务完成率定义为:

F

本发明的优点和有益效果为:

(1)本发明一种基于区块链的可信分布式计算卸载方法,将区块链技术与边缘计算卸载技术进行融合,利用区块链可信的访问控制机制解决资源安全共享与计算卸载过程可追溯的问题,实现了分布式的链上链下数据协同的交互方式一定程度解决了区块链巨额开销对边缘计算的时延影响问题,对于计算卸载性能保障具有重要意义;

(2)本发明一种基于区块链的可信分布式计算卸载方法,将任务依赖问题作为核心问题进行考虑,通过聚类算法得到计算任务卸载的最佳卸载顺序与卸载策略,降低了复杂计算任务的整体卸载时延与边缘服务器计算运行能耗。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作详细描述,其中:

图1为一种基于区块链的分布式计算任务卸载的系统模型图,

图2为一种基于链上链下数据协同的计算任务卸载框架图,

图3为一种基于聚类方法的优先队列设计图,

图4为一种基于联盟链的分布式计算任务卸载的流程示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式。本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。以下将参照附图1至4更详细地描述本发明:

基于用户或者任务卸载需求方、边缘计算服务商或者资源提供方、以及联盟链构成的分布式系统模型,提供一种基于联盟链的链上、链下数据协同方法;

其中,用户或者任务卸载需求方,为当前时刻需要进行任务卸载请求的代理方;当前时刻存在多个用户发布任务卸载请求,或者,一个用户提供多个卸载任务,且任务之间可能具有数据关联性,即任务一的计算结果是任务二的输入数据;

边缘计算服务商或者资源提供方,为当前时刻存在空闲资源的边缘计算服务器的代理方;当前时刻存在多个边缘计算服务商,或者,一个边缘计算服务商提供多台边缘计算服务器,各个服务器分布在不同地区;

联盟链负责处理并记录用户的卸载请求和边缘计算服务商的资源分布情况,通过部署的智能合约提供包括注册、认证、卸载请求和资源发布的分布式服务;

分布式非关系数据库Mongodb,Mongodb是一个基于分布式文件存储的数据库,负责储存任务卸载全过程中产生的数据,包括中间文档记录;Mongodb是强数据一致性的,为任务卸载与联盟链可查性提供数据支撑;

链上的数据存储仅保存重要数据的摘要,包括:用户索引、在线节点索引、交易列表或者任务卸载记录、计算文件的数字指纹MD5(MD5校验和由128位值组成,该值通常表示为十六进制格式,由32个字符组成。通常通过MD5对一段信息产生信息摘要,以防止信息被篡改。)、用户的签名以及资源节点的签名;上述数据存于联盟链的区块链账本,简称Ledger中;Ledger指的是区块链账本,由世界状态和区块链组成,世界状态保存了账本数据的当前值,可以频繁更改,便于应用程序直接访问,区块链记录了导致当前世界状态的所有更改日志,写入后无法修改,便于历史追踪;

链下的数据存储保存全复制数据,包括:用户上传的任务列表、用户信息、用户行为记录、资源节点信息、资源节点行为记录、算法信息以及任务计算中产生的一些中间数据文件的存储信息;上述数据存于Mongodb的非关系型数据库的collection中,collection是Mongodb数据库中的表。

联盟链部署的智能合约用于约束用户或边缘计算服务提供商的注册与初始化,智能合约为一段描述业务模型和交互规则的可自动执行程序,智能合约定义了不同组织之间的规则;应用程序调用智能合约来生成被记录到账本上的交易,包括:

用户或边缘计算服务商根据自身的身份ID注册并登录联盟链;

用户或边缘计算服务商根据自身私钥对哈希值、时间戳以及加密后的身份信息进行签名,并将签名后的哈希值、时间戳以及加密后的身份信息索引存储在联盟链的当值节点中;

边缘计算服务商根据现实情况更新资源信息;

边缘计算服务商到指定URL下载最新的算法代码,保证任务卸载的正常进行;

智能合约分别进行提交记录和摘要索引的上链,完整的用户信息及资源节点信息进行链下数据库存储。

智能合约的卸载申请发生时,用户上传任务数据至联盟链,包括:

用户向联盟链发起任务卸载请求;

联盟链根据自身的智能合约以及当前的资源情况判断用户的请求是否合理,并且链上存储该请求中包含的任务索引;

当判断结果为是时,联盟链中的智能合约将用户上传任务数据进行授权,区块链节点根据用户提交的授权确认交易,调用联盟链中智能合约中定义的授权接口,使任务数据使用方获得授权;并将授权后的任务数据链下存储;然后将卸载请求发送调度器等待进行任务卸载,将用户行为等其他主要信息进行链下存储;

当判断结果为否时,拒绝该任务卸载请求;

在调度器中调用卸载算法得到预卸载结果,进行实际的卸载调度。

智能合约的卸载申请发生时,边缘计算服务提供商通过联盟链对任务数据进行访问,包括:

接收联盟链广播的卸载请求,更新自己接受卸载后的资源剩余情况,将资源情况索引上链,其他主要信息链下存储;

向联盟链请求解密后的任务索引,根据索引从链下数据库获得指定的任务URL和算法,到指定URL下载任务文件,并将算法预装载;

获得任务文件后,计算文件的MD5,和链上对应的信息进行比对,验证数字签名,判断是否收到了正确、完整的文件;

当判断结果为是时,进行任务计算工作,并将计算结果返回给请求用户,等待用户确认;用户确认后将卸载结果的索引信息上链,卸载结果的完整信息进行链下数据库存储;

当判断结果为否时,向联盟链提交错误报告,并重新向请求解密后的交易数据。

智能合约保证双方在任务卸载时以协同的方式将任务在链上卸载,任务明文在链下传输。这种链上链下协同的方式使得任务数据与区块链的P2P网络隔离,而任务计算文件和卸载过程又可以与链上交易信息进行相互验证,避免了任务数据泄露,又降低了区块链成本,提高了区块链运行效率,在成本、效率与隐私安全中取得了平衡。

联盟链上的任务卸载决策方法以智能合约形式部署,包括以下步骤:

步骤1、数据采集:用户通过物联网设备采集任务数据,上传卸载任务信息到联盟链的智能合约中,同时,智能合约主动更新所有边缘计算服务商的资源情况;

步骤2、排序:智能合约根据要卸载的批量任务信息,通过聚类方法,简称Kmeans,进行分类和排序,最大程度保证任务间的内在关联性,确定批量任务的卸载顺序;

步骤3、预绑定:遍历运行队列,对于队列中每个任务,找到满足任务所需计算资源且使得它时延最小的边缘服务器节点,进行卸载预绑定;

步骤4、预绑定:遍历运行队列,对于队列中每个任务,找到满足任务所需计算资源且使得它时延最小的边缘服务器节点,进行卸载预绑定;

步骤5、绑定:根据步骤4中得到的预卸载结果进行任务卸载,卸载失败的任务加入重试队列。就绪队列为空时,将等待队列中的就绪任务加入就绪队列。重试队列中的任务将在就绪队列与等待队列均为空时启动重试;

步骤6、重复步骤4与步骤5,直到所有队列均为空,则该次任务卸载完成,智能合约将记录本次卸载结果。

所述的步骤1中,卸载任务请求只上传任务摘要信息,在用户和联盟链之间作一次对链上账本的小数据量的写入,传输的时间小到可以被忽略,系统中维护的资源表的更新与任务卸载请求摘要信息的上传同时进行;

分布式计算卸载研究普遍使用有向无环图Directed Acyclic Graph,简称DAG,指的是一个无回路的有向图,来表示任务之间的依赖关系,表示为G=(V,E),

其中V表示DAG中节点的集合,每个节点i∈V表示运行的复杂计算任务中的一个子任务;E表示DAG中边的集合,每条边e(i,j)∈E表示任务i和j之间的依赖关系,即任务j需要任务i的输出数据作为自己的输入,并把任务i称为j的前驱,任务j为i的后继,一个任务只有在其所有前驱任务完成后才能开始执行;在一个DAG中,没有前驱任务的任务被称为入口任务,没有后继任务的任务被称为出口任务,一个应用允许同时有多个入口任务和出口任务。

假设用户集合表示为U={u

所述的步骤2中,设同一个用户提交的任务大概率是相关的,智能合约根据手肘法确定任务分类的初始类别K,再根据K值判断是否进行资源节点分类,将任务属性T

手肘法通过计算SSE来评价K值的好坏,当K到达最佳聚类数时,再增加K所得到的SSE的下降幅度会骤减,由此来确定最佳聚类数量K,SSE的计算方法表示为:

设当前需要进行任务卸载的任务总数量为α,智能合约检验在线资源节点数量β,对资源节点进行分类具有以下约束:

当β≤α时,参与本次卸载的资源节点数量β=β;

当β>α时,参与本次卸载的资源节点数量β=max{α,β×A},A∈[0,1],表示从在线资源节点中取样的百分比,默认设置为0.5,可通过配置自定义;

类间数量调整具有以下约束:ActualSkew=count[allocated]-min(count[allocated]),ActualSkew

所述的步骤3中,通过判断任务t

所述的步骤4中,通过智能合约进行卸载的预绑定,该智能合约具体介绍如下:任务t

预绑定排序通过优先级进行,优先级

所述的步骤5中,计算当前资源节点的碎片率,根据碎片率与预绑定阶段分配的节点情况实际进行调度,MemFragmentationRatio=MemAllocatable/MemRequest,1≤MemFragmentationRatio<1.6时,表示当前节点是可调度的,且实际卸载过程中具有以下约束:

(1)用户提交的所有任务都应该被卸载到边上执行;

(2)每个上传的任务都是被分割后的原子性的,不能被进一步分割;

(3)一个任务被假定只会被卸载到一个在线资源节点上;

(4)队列插入操作也要保留优先级约束。

所述的步骤5和步骤6中,将会一直累计本次批量任务完成的时延,和边缘服务器能耗,在所有任务完成后,将统计计算任务完成率:

批量任务完成的总时延的计算方法定义为:

Ttotal=Tfinal,T

边缘计算服务器对于用户提交的计算任务t

表示边缘计算服务器在执行任务t

边缘计算服务器的批量任务卸载完成总能耗定义为:

E

任务完成率定义为:

F

本发明的有益效果在于:(1)提出了一种链上存证、链下数据传输的数据协同方法,减轻区块链存储开销。(2)利用聚类方法对任务和资源进行分类,使得相似的任务可以更好的卸载到合适的资源节点上,再通过卸载调度策略以减少任务间的传输等待时间,提高整体任务完成时延。(3)数据存证和卸载策略都通过智能合约自动化执行,确保整个卸载过程的不可篡改、可见性和可追溯性。

详细实施例提供一种基于区块链的可信分布式计算任务卸载方法,包括如下步骤:

1)建立面向边缘计算任务卸载的去中心化分布式联盟链架构;

2)提出针对复杂计算任务子任务间具有内部关联问题的聚类任务卸载方法;

3)以链上链下数据协同的方式降低区块链对任务卸载时延要求的影响。

如图1所示,是由用户(任务卸载需求方)、边缘计算服务商(资源提供方)、以及联盟链构成的系统模型。边缘端和用户端通过互联网进行数据传输。

其中,用户为当前时刻需要进行任务卸载请求的代理方,一个用户可能由多个物联网设备构成,提供多个卸载任务,且任务之间可能具有时序关联性。用户端利用各种传感器进行任务数据的采集,包括各种传感器、摄像头、采集硬件等。物联网的这些设备,往往本身的计算能力有限,无法对收集的数据进行处理。因此需要将任务到有计算能力和一定存储空间的设备进行卸载。

边缘计算服务商为当前时刻存在空闲资源的边缘计算服务器的代理方,一个边缘计算服务商可能提供多台边缘计算服务器,服务器上搭载各种不同的服务,且同一个边缘计算服务商的各个服务器可能分布在不同地区。联盟链和分布式的mongoDB数据库也部署在边缘计算服务商提供的服务器节点上。

联盟链负责处理并记录用户的卸载请求和边缘计算服务商的资源分布情况,通过部署的智能合约提供包括注册、认证、卸载请求和资源发布的分布式服务。由于联盟链只搭载在资源节点上,所以区块链的运行性能能够得到极大保障。用户端通过前端交互界面对系统进行访问,用户端设备不搭载联盟链,所以用户的使用体验也能得到极大保障。

如图2所示,是由交互界面、用户管理、资源节点管理、任务管理、定时器、卸载策略管理、调度器和数据库等多个模块构成的基于联盟链的任务卸载决策框架。以下是对各模块的具体说明:

1.交互界面

便于用户直观、便捷的发布任务卸载请求,上传任务信息及查询任务卸载结果。用户在交互界面上传任务的完整信息;

交互界面的存在使得用户在设备能力受限的情况下,不需要在设备端费力搭建不是区块链,通过界面进行任务卸载请求,使得设备可以只专注于自己的数据采集过程。只要有网络,用户即可享受区块链卸载服务;

2.用户管理

本发明只做基础的用户管理功能,包括用户的注册、登录校验与注销。用户在注册认证后,系统将用户唯一标识UserId、用户名UserName、用户密码UserPwd、用户私钥UserSK和用户公钥UserPK在链下存储,用户唯一标识符上链存储;

用户管理模块可以方便的根据实际使用场景进行扩展,例如增添用角色-权限的对应关系等;3.定时器

本身是一个回调函数,该函数会每隔一段时间被调用一次,函数功能是间隔一段时间自动调用智能合约和存储API程序。包括进行资源更新、任务更新、任务采集、卸载结果更新等程序模块。每次调用间隔的时间,单位是毫秒,默认设置为1000ms,可自定义。当系统中任务流量过大时,可设置超低间隔,例如10ms;

4.资源节点管理

本发明只做基础的资源节点管理功能,包括边缘计算服务商的注册、登录校验与注销,资源节点的注册、上线校验与注销。边缘计算服务商在注册认证后,系统将用户唯一标识、用户名、用户密码、用户私钥和用户公钥在链下存储,用户唯一标识符上链存储。边缘计算服务商的资源节点在注册认证后,系统将边缘计算服务商的唯一标识、资源节点唯一标识NodeId、资源节点公私钥NodeSK/NodePK、资源节点所在经度NodeLon、资源节点所在纬度NodeLat、资源节点CPU周期NodeResource、资源节点传输速率NodeDTR、资源节点计算处理能力NodeMIPS、资源节点能耗NodeEnergy在链下存储,资源节点唯一标识上链存储;

在联盟链中会维护一张在线资源节点表,表中存储在线资源节点唯一标识符,而资源信息则从MongoDB中获取。除此之外,还会维护一张网络图,引入边的概念存储边缘网络结构,边集合{EdgeId,SrcId,DstId,Length,Delay,Bandwidth}用以描述边的属性。EdgeId表示边唯一标识,SrcId表示这条边的源头,DstId表示这条边的终点,SrcId和DstId都是资源节点ID,一条边表示两个资源节点间是可以直接互相通信的。Length表示这条边的实际物理距离,Delay表示SrcId与DstId之间的传输延迟,Delay并不是一开始就有的,而是通过不断地测试更新,保留下来的平均值,通过Delay可以推测大致的传输时延,对于预绑定过程中的计算大有帮助。Bandwidth表示这条边的传输带宽,同样地,Bandwidth也并不是一开始就有的,而是通过不断地测试更新,保留下来的平均值;

5.任务管理

支持对计算任务的创建与管理,同时支持对计算任务的启动、停止。任务信息包括:任务唯一标识符TaskId、任务所请求的计算CPU周期数TaskResource、任务大小TaskSize、任务最大可容忍时间TaskDeadline、任务类型TaskType(任务是否是依赖型任务)、任务的前驱任务TaskFathers、任务文件的链接TaskURL。任务唯一标识符和用户唯一标识符将会上链存储(被存储在联盟链账本中),而其他信息则在链下存储(被存储在分布式MongoDB数据库中);创建任务前,需已创建算法信息,此部分在卸载策略管理中进行阐述。任务创建完成后,任务状态开关默认为关闭,正在运行的任务不可编辑或删除。任务包括以下三个状态:

①任务就绪:任务的前驱任务们已完成,但任务还未运行,等待运行;

②任务运行:任务执行中;

③任务重试:任务执行失败,将加入重试队列;

特别说明,任务依赖通过一个DAG图表示,是先验的。任务依赖必须需要用户通过使用其他的任务分割工具预先得到,本发明不做任务分割;

6.策略管理

支持对算法的获取、聚类方式的选取。策略管理的工作流程如下:

①根据用户的偏好获取聚类算法,判断任务聚类的簇数,并进行任务分类;

②根据任务分类情况判断是否进行资源节点分类,若分类则按照分类约束取样和调整。若资源节点分类后,一个任务簇中任务数量远大于资源节点数量,将导致任务卸载效果极差,因此需要进行类间数量调整,让每个资源节点簇服务适宜的任务簇,可以最大程度降低批量任务的整体完成时延。举例说明类间数量调整方法:

假设10个任务分类为3簇,MaxSkew=1,现分类情况为<2,3,5>,即第一簇2个任务,第二簇3个任务,第三簇5个任务。计算ActualSkew的值为(0,1,3),不满足类间数量约束条件,则将第三簇的多余任务调整到第一簇,此时ActualSkew的值为(0,0,1),满足约束条件。类间数量调整完成,资源节点调整同理;

7.调度器

进行实际的调度,包括排序、过滤、预绑定、绑定等工作流程:

①排序

智能合约根据要卸载的批量任务信息,通过聚类方法Kmeans进行分类和排序,最大程度保证任务间的内在关联性,确定批量任务的卸载顺序。Kmeans进行聚类时,是进行多维度的聚类,必须将任务属性{S

聚类完成后得到的结果如图3任务簇所示,绿色的表示就绪任务,橙色的表示等待任务;

②过滤

按照卸载顺序遍历任务,将就绪任务加入就绪队列,其他未就绪任务加入等待队列,过滤的过程如图3所示的三个队列,且按照队列的操作从队尾插入新的任务,队首取出就绪任务。红色的表示执行失败的任务在等待重试;

任务就绪必须满足两个条件:任务数据已取得,任务的前驱任务们已完成,且前驱任务们的任务结果数据已确认。调度器判断任务已经就绪后,则将任务状态更改为开启;

③预绑定

遍历运行队列,对于队列中任务t

数据矩阵D是α×α的矩阵,D

需要注意的是,所有任务数据的获取,都是并行进行的,且计算结果的文档往往远小于原始计算数据,所以计算结果数据的回传时间相对来说在建模时可以忽略不计,故任务t

④绑定

根据预卸载顺序进行任务卸载,卸载失败的任务加入重试队列。就绪队列为空时,将等待队列中的就绪任务加入就绪队列。重试队列中的任务将在就绪队列与等待队列均为空时启动重试;

绑定阶段必须遵循碎片率的约束:举例说明,当MemFragmentationRatio<1时,假设预绑定资源节点可用CPU资源为1000,任务t

当智能合约判断卸载调度满足碎片率的约束时,即开始卸载任务,记录下当前任务开始的系统时间和任务结束的系统时间,该任务的完成时间记录为任务结束的系统时间。任务执行时间记录为任务结束的系统时间与任务开始的系统时间的差值t

系统执行完α个任务的执行成本可表示为:

U=max{λ

8.数据库

用于实现链上和链下数据存储,对所有数据结构进行建表,并存储在MongoDB中。维持本系统链上链下协同MongoDB中至少需要以下七张数据表:Users、Tasks、Nodes、Edges、Algorithms、Offloading-Orders、Task-List。在联盟链账本中只需要对应维护Users、Tasks、Nodes、Algorithms、Offloading-Orders五张表,且都以key-value组存储唯一标识符即可。mongoDB数据库和账本可根据系统实际情况进行扩展。

本发明一种基于区块链的可信分布式计算卸载方法包括卸载决策与资源分配两部分,统称为任务卸载决策,卸载决策包括本地执行、完全卸载和部分卸载三种方式,本发明中的卸载均指的是完全卸载;资源分配主要是选择哪个边缘资源节点进行卸载,更具体的,还可以指定到哪个处理器进行执行,本发明中包含在任务卸载中。

如图4所示,采用本发明方法进行任务卸载发布与卸载决策的过程如下:

任务卸载请求发布:包括图4中的1-6。用户向联盟链发布具体任务卸载请求,由联盟链校验卸载请求是否能被响应,对应1-3。若能,则用户上传任务信息,数据库更新任务列表,对应5-6。任意用户可成为任务卸载请求方的角色。

任务卸载决策:包括图4中的7-9。对于每项任务,联盟链要求在线资源节点在执行任务之前,先预返回执行该任务后剩余资源量,以进行下一次任务卸载决策,对应7-8。然后由在线资源节点执行任务卸载的智能合约,并由最快的获取到预卸载结果的在线资源节点将结果范围给联盟链,并开始实际执行任务卸载,对应8-9。

任务部署:包括图4中的10。确定预卸载结果后,任务卸载请求用户将任务计算所需数据发送至指定的任务卸载计算执行节点,任务部署直接由用户和指定的任务卸载计算执行节点链下接触执行,不通过联盟链。

任务卸载执行:包括图4中的10-12。任务部署完毕后,由任务卸载计算执行节点完成任务,基于节点当前性能参数可计算出实际执行时延与执行能耗,并将结果返回给联盟链和任务卸载请求用户。

任务卸载结果上链:包括图4中的13-14。当用户检查所执行任务结果通过后,联盟链将卸载订单id,任务id、用户id、在线资源节点id等信息记录至链上。

任务卸载结果完全存储:包括图4中的15-16。当任务卸载结果上链后,数据库将卸载订单id,任务id、用户id、在线资源节点id、任务开始时间、任务结束时间、任务所用算法、任务执行成本等信息记录至链下分布式数据库中,便于以后查找。

综上所述:本发明公开了一种基于区块链的可信分布式计算卸载方法,首先,建立面向边缘计算任务卸载的去中心化分布式联盟链架构,其次,提出了针对复杂计算任务子任务间具有内部关联性的聚类任务卸载方法,最后,灵活使用了链上链下数据协同的方式降低区块链对任务卸载时延要求的影响。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于车路云协作的多小区分布式计算卸载方法
  • 一种在随机网络中基于算网协同的分布式计算卸载方法
技术分类

06120115935153