主页 > 区块链 > 将计算任务使用众包的方式动态分配到边缘网络节点上的分布式计算平台

将计算任务使用众包的方式动态分配到边缘网络节点上的分布式计算平台

佚名 区块链 2021年11月28日

《基于区块链的可信分布式计算平台的设计与实现》

本文提出了一种分布式计算平台,该平台使用众包将计算任务动态分配到边缘网络节点。平台会在用户附近动态选择满足用户需求的计算节点,形成临时计算集群,执行计算任务。服务提供商不需要自己维护计算节点,也不需要考虑节点选择的问题。不同的服务可以共享同一个计算设备,大大降低了维护成本,使资源利用效率更高。

论文的主要研究工作包括以下两点:

使用区块链智能合约建立计算任务与合约的关联,使用智能合约跟踪和管理分布式计算的全过程,实现可信交易。

结合容器技术实现一个简单的Map-Reduce计算框架,配合上述合约实现可信分布式计算。

需求分析与系统总体设计系统总体需求分析

本课题开发的是一个分布式平台,利用众包提供第三方边缘计算服务。系统的参与者主要包括计算资源的提供者和消费者。计算资源的消费者可以在平台上发布计算任务和确定报酬,计算资源的提供者可以设置本地资源的占用配额和哪些消费者提供计算(即设置过滤条件)。系统用例图如下:

注意图中的消费者和提供者不一定是人,也可能是调用平台的第三方程序。计算资源的消费者可以执行以下操作:

1)后计算任务

消费者可以通过平台程序DApp或直接通过区块链控制台调用预先发布在区块链上的智能合约接口来发布计算任务。发布任务需要提供任务类型、任务奖励和分配方案、所需节点数和节点要求,以及任务分解、执行、整合的流程和数据。DApp 将计算任务转化为合约中标准化的任务描述,发布到区块链上。任务的发布涉及到区块链内容的改变,会消耗一点gas。

2) 查询任务处理状态

用户可以通过终端程序查询自己下发的某项计算任务的处理状态。处理状态包括“已发布”、“预付费”、“已转包”、“正在计算”、“待处理”和“因多个节点故障超过预期次数而停止”。如果任务已经计算完成,可以得到参与计算的节点数、任务的细分情况、每个子任务的执行情况以及预期的奖励分配情况。查询不消耗gas。

获取计算结果

如果自己发布的任务已经计算或者中途停止,用户可以获取计算结果。计算结果的密钥和IPFS地址存储在区块链上,因此计算结果只能由任务的发布者获得。

计算资源提供者可以执行以下操作:

获取可用的计算任务

计算资源提供者可以通过客户端获取当前可用的计算任务。任务描述包括该任务的执行程序链接、数据源(包括测试数据源)、报酬等。计算资源提供者可以设置是否开启自动申领任务,对自动接收的任务进行过滤条件。任务征集与竞价

当客户端需要接收任务(自动或手动)时,会根据当前网络状况、CPU和内存的性能和占用率、同时执行的任务数综合计算节点的评估分数。时间和历史执行。然后通过智能合约中的竞价方式,得到最符合目标要求的Top N计算节点。招标需要耗气量,

同时,招投标也可能失败。查询任务状态

用户可以查询某个任务的当前执行状态。此外,在计算过程中区块链编程实现,终端程序也会自动监控区块链事件,判断是否需要暂停当前的计算任务。当任务被发布者提前终止或因多个节点多次故障而自动终止时,终端程序会自动停止当前正在执行的任务。提交计算结果

计算完成后,终端程序默认将计算结果发布到IPFS和区块链(用户也可以实现自己的结果收集程序,自行处理计算结果)。智能合约会修改任务状态并触发报酬分配过程。设置参与计算任务的过滤条件

用户可以设置程序自动接受满足过滤条件的计算任务。系统整体架构设计

该平台主要由三部分组成,即众包任务发布模块、分布式计算模块和边缘计算设备管理模块。

整体系统架构如图所示。上层默认依赖下层。其中,基础平台层为运行环境提供支持;基础服务层封装了数据访问和基础操作;任务发布模块、分布式计算模块、边缘计算设备管理模块提供具体的业务实现。下面分别介绍每一层包含的组件以及各个组件的功能:

1)基础平台层

a) 区块链

用于存储边缘计算任务及相关数据,解决众包环境下任务发布者与计算提供者之间的信任问题。本项目选择以太坊,区块链在支持智能合约方面相对成熟。

b) IPFS

IPFS 是一种点对点分布式超媒体分发协议,我们可以通过它分发文件。由于在区块链上存储内容成本较高,因此平台中的镜像和文件数据都将通过IPFS进行存储。

2)基础服务层:封装了数据访问和基础操作。

3)任务发布模块

该模块是一个使用Truffle框架开发的DApp和一个使用Web3j接口与以太坊通信的在线App。该模块提供了任务入口的接口。用户完成录入后,模块将录入的内容转化为任务发布合约中的任务描述。此外,该模块还提供任务状态查询、充值、提现等功能。

4)边缘计算设备管理模块

该模块提供了加载、执行和监控Docker镜像的功能。平台提供了一个标准的基础镜像,包括一个默认的JMX控制组件,平台通过JMX实现对内部镜像的外部访问。

5)分布式计算模块

该模块为特定计算提供过程控制功能。任务采集、投标流程、状态管理、任务提交均由该模块实现。

系统设计

本章将分别介绍众包任务发布模块、分布式计算模块、边缘计算设备管理模块三个模块的详细设计。

众包任务发布模块详细设计

本节将详细描述与众包任务相关的合约和 DApp 的数据结构、算法和功能结构。(老实说)

众包任务智能合约设计

以太坊的智能合约包含数据、事件和功能。我们可以将智能合约视为单例类。合约的构造函数会在合约发布时执行。智能合约也可以被继承和推广。有复杂的类型,如结构、字典和数组。为了让平台实现的合约能够提供充值提现、任务分包、任务阶段分解等功能,平台提出以下设计方法:

结构代表合约的结构。智能合约的结构类似于没有访问控制的C语言的结构。智能合约支持多重继承。图中Crowdsource合约继承自Owner和MyBank,JobPool继承自Crowdsource。

图像加载、执行和卸载

本节将讲解如何通过远程下载的镜像配置文件进行批量构建、启动和卸载。根据用户提交的任务中图片格式的不同,平台采用不同的管理方式。

当用户只提交镜像的构建文件时,平台使用Docker Compose对镜像进行批量管理。Docker Compose 使用 yml 作为配置文件。当获取到任务所需的Dockerfile后,平台会根据用户设置的名称在设置的镜像构建目录下创建相应的目录,并添加相应的镜像和文件。目录结构生成后,模块会创建对应的docker-compose.yml,为每个镜像生成服务配置,并分配对应的网络地址(地址随机指定)。配置生成后,模块会调用Process类中的方法,通过执行外部进程来执行“docker-compose up”批量启动镜像,同时,

当用户只提交构建的路径时,平台使用Docker的标准工具来拉取镜像区块链编程实现,设置端口映射,并启动它。

通过 JMX 进行镜像管理

由于容器内外的隔离,我们无法直接操作容器内部。为此,平台需要镜像内部的JMX支持来实现对镜像内部程序的管理。

镜像内部的程序需要实现接口,并通过标准的JMX方法(如MBeanServer)将接口的实现发布到8888端口。这样就可以通过镜像外部的JMX提供的JMXConnector Server来实现镜像的内部功能。称呼。

广告位