本发明提供了一种基于智能合约的约束求解器分布式调度方法,属于云测试技术领域。
背景技术:
随着云计算技术在计算机网络技术中的发展,云服务模式基于互联网为用户提供动态的、可扩展的虚拟化资源。云资源调度作为云计算的重要研究内容之一,深得技术领域人员的研究,从而实现调度模型的优化。当需要求解复数个并行测试用例中的约束集合时,分别选择调用合适的约束求解器的过程变得异常复杂,同时调用符号执行工具求解复数个约束集合,会产生一系列的路径爆炸等问题,为避免路径爆炸问题的发生,相关人员从调度模式方面提出可扩展分布式调度方法,以实现高效的资源匹配算法,其做法如下:当数据中心待调度的求解器的数量比较大时,将所有求解器自动划分为若干个求解器群,然后在每个求解器群中建立分配约束模型,通过分而治之的方法来降低资源分配的复杂度,实现高能效的资源分配。
但是基于该种分布式调度方法,无法记录求解完成时,约束集合与约束求解器匹配过程中的具体匹配模式,而且也无法记录约束求解器求解的进度,于是需要一种能够记录约束求解器的调度情况的方法,进而获取求解不同类型的约束集合的具体调度路径。
技术实现要素:
(一)目的
本发明提供的一种基于智能合约的约束求解器分布式调度方法,能够解决现有的调度约束求解器的过程中无法记录约束求器的求解进度以及求解完成时约束集合与约束求解器的具体匹配路径的问题。
(二)技术方案
本发明提供了一种基于智能合约的约束求解器分布式调度方法,其实施步骤具体如下:
步骤1:获取并行程序中的复数种类型的约束集合,置于第一云端;
步骤2:获取复数种类型的约束求解器,置于第二云端;
步骤3:将匹配原则写入智能合约,将智能合约部署到区块链上;
步骤4:调用智能合约,基于合约中的匹配原则,完成调度;
步骤5:获取调度过程中约束求解器与约束集合间的调度路径;
通过以上步骤,实现了将约束集合以及约束求解器间的匹配关系写入智能合约中,将智能合约部署到区块链上,从而完成基于智能合约的约束求解器的调度过程,应用智能合约进行调度,可以实现实时记录约束求解器的求解进度,也可以记录求解结束时,每种类型的约束集合所对应的约束求解器类型,从而选取所记录的约束集合与约束求解器间的匹配模式,进行模型训练,将所得模型作为本技术领域人员约束求解的依据。
其中,在步骤1中所述的“获取并行程序中的复数种类型的约束集合,置于第一云端”,其具体作法如下:根据约束集合中约束的表现形式,将约束分为禁止约束、必须约束、数值约束和屏蔽约束;根据约束集合中约束的变量类型,将约束分为实数变量约束,整型变量约束,和布尔变量约束;根据约束集合中约束是否为线性,将约束分为线性约束和非线性约束;根据约束集合中约束的本质内容,将约束分为数值约束、规则约束和符号约束;将并行程序中出现的复数种类型的约束集合,置于第一云端,作为任务调度的需求方。
其中,在步骤2中所述的“获取复数种类型的约束求解器,置于第二云端”,其具体作法如下:获取复数种类型的约束求解器以及了解所述约束求解器的求解性能,具体如下:获取命题满足性(propositionalsatisfisfiablity,sat)求解器和可满足性模论(satisfiabilitymodulartheory,smt)求解器,两者均能求解命题逻辑性约束,其中sat求解器能解决只包含布尔变量的逻辑命题,基于sat的进化求解器包括:hysat、isat和sat4j,前两者用于处理非线性的实数约束,而sat4j的开发基于minisat,支持求解可满足问题、部分极大可满足问题和带权的极大可满足问题;其中smt求解器解决更为广泛的命题逻辑变量,该逻辑变量包括整数变量和实数类型变量,基于smt求解器的进化求解器包括:yices求解器、copsmtcheck求解器、smtcop求解器、z3求解器以及minismt,其中yices求解器能解决加权的smt问题,copsmtcheck求解器能解决实数相关的简单数学命题,其中smtcop支持对整数、布尔值以及机器整数相关命题的翻译和证明,其中z3求解器用于求解非线性约束,只支持特定的泛型函数,其中minismt用bit位表示整型变量,将非线性约束转化为位向量的算术约束;当然,约束求解器还包括利用回溯搜索和约束传播算法实现求解可满足性约束的mistral和simsolver约束求解器,也包括通过分支搜索进行顺序求解约束的or-tools求解器和gecode求解器,基于数值、规则和符号求解的几何约束求解器--d-tree约束求解器;将上述复数种约束求解器进行分类后,置于第二云端作为任务调度的资源方。
其中,步骤3中所述的“将匹配原则写入智能合约,将智能合约部署到区块链上”,其中,所述匹配原则为调度信息的函数形式,函数包含两个参数,分别为地址信息和调度的内容信息;其具体作法如下:根据步骤1和步骤2中获取的复数种类型的约束集合以及对应的复数种类型的约束求解器,确定出一系列的匹配原则,也即是,针对每一种类型的约束集合构建该类集合映射到相应约束求解器的路径;将匹配原则写入智能合约的过程,也即是将路径以程序代码的形式编译成与区块链对应的二进制形式的过程;将智能合约部署到区块链时,其源码安装到区块链的节点上,其合约地址同时部署于区块链,基于部署后的智能合约地址或基于调用请求是否满足匹配原则实现后续使用者的调用;
在另一种实施方式中,智能合约之间可以互相调用,也即是一个智能合约的功能需要另一个智能合约的配合完成,因此得到智能合约的源码后,可以对源代码进行预处理,也即是当其中一个智能合约调用了另一个智能合约的函数,便将被调用的函数扩充到调用函数的对应位置;在本实施例中表现为,部署于区块链中的智能合约不仅包括针对每一种类型的约束集合映射到相应约束求解器的路径,还包括,当某一路径执行后无法完成约束求解时,针对每一类型的约束集合映射到备用约束求解器的路径。
其中,在步骤4中所述的“调用智能合约,基于合约中的匹配原则,完成调度”,其具体作法如下:面对并行程序中的复数个约束集合,根据智能合约中的每一种类型的约束集合映射到相应求解器的路径,调用对应的约束求解器进行求解,记录该路径中约束集合的类型、约束求解器的类型以及约束求解的完成度。
其中,在步骤5中所述的“获取调度过程中约束求解器与约束集合间的调度路径”,其具体作法如下:在调度过程中,区块链上形成复数个区块文件,该区块文件以账本的形式记录了调度过程中约束求解器与约束集合间的匹配关系,区块链中的记账节点对节点本地的账本进行维护,通过读取区块文件中的数据信息,获取每条求解路径中的约束集合的类型、约束求解器的类型以及约束求解的完成度,进而获取调度过程中约束求解器与约束集合间的调度路径。
(三)优点及功效
通过以上步骤,实现了将约束集合以及约束求解器间的匹配关系写入智能合约中,将智能合约部署到区块链上,从而完成基于智能合约的约束求解器的调度过程,应用智能合约进行调度,可以实现实时记录约束求解器的求解进度,也可以记录求解结束时,每种类型的约束集合所对应的约束求解器类型,从而选取所记录的约束集合与约束求解器间的匹配模式,进行模型训练,将所得模型作为本技术领域人员约束求解的依据。
附图说明
为了更清楚的说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图做简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种方法流程图。
图2是本发明实施例提供的一种方法示意图。
图3是本发明实施例提供的一种方法的又一示意图。
图中序号、符号、代号说明如下:
图1中,101、102、103、104和105分别表示本发明实施例的步骤编号;
图3中的约束集合1、约束集合2、……约束集合n表示并行程序中符号执行获取的不同的约束集合类型;
图3中的约束求解器集合中示出大量的约束求解器的型号及类型,解释如下:
hysat—一种属于sat的求解器;
isat—一种属于sat的求解器;
sat4j—用来解决布尔可满足问题和最优化问题的求解器;
yices求解器—用于大规模程序验证型求解器;
copsmtcheck求解器—一种基于cop模型的约束求解器;
smtcop求解器—一种属于smt的约束求解器;
z3求解器—一种定理证明器,属于smt求解器;
minismt—一种简约型smt求解器,开源的布尔可满足求解器。
具体实施方式
本发明提供了一种基于智能合约的约束求解器的分布式调度方法,为使本发明的目的、技术方案和优点更加清楚,下面将结合附图1、附图2和附图3对本发明实施方式做详细的描述。
参见图1,示出了本发明实施例提供的一种方法流程图,具体步骤如下:
101、获取并行程序中的复数种类型的约束集合,置于第一云端。
其中,约束集合的获取过程可以包括:基于并行的复数个程序初始化参数列表,获取需求解路径的参数集合;在程序中间表示的基础上通过符号替换和约束收集,构建约束集合。具体实施步骤如下:根据约束集合中约束的表现形式,将约束分为禁止约束、必须约束、数值约束和屏蔽约束;根据约束集合中约束的变量类型,将约束分为实数变量约束,整型变量约束,和布尔变量约束;根据约束集合中约束是否为线性,将约束分为线性约束和非线性约束;根据约束集合中约束的本质内容,将约束分为数值约束、规则约束和符号约束。将并行程序中出现的复数种类型的约束集合,置于第一云端,作为任务调度的需求方。
102、获取复数种类型的约束求解器,置于第二云端。
其中,获取复数种类型的约束求解器以及了解所述约束求解器的求解性能,具体如下:获取命题满足性(propositionalsatisfisfiablity,sat)求解器和可满足性模论(satisfiabilitymodulartheory,smt)求解器,两者均可以求解命题逻辑性约束,其中sat求解器能解决只包含布尔变量的逻辑命题,基于sat的进化求解器包括:hysat、isat和sat4j,前两者用于处理非线性的实数约束,而sat4j的开发基于minisat,支持求解可满足问题、部分极大可满足问题和带权的极大可满足问题;其中smt求解器解决更为广泛的命题逻辑变量,该逻辑变量包括整数变量和实数类型变量,基于smt求解器的进化求解器包括:yices求解器、copsmtcheck求解器、smtcop求解器、z3求解器以及minismt,其中yices求解器可解决加权的smt问题,copsmtcheck求解器可以解决实数相关的简单数学命题,smtcop支持对整数、布尔值以及机器整数相关命题的翻译和证明,z3用于求解非线性约束,只支持特定的泛型函数,minismt用bit位表示整型变量,将非线性约束转化为位向量的算术约束。当然,约束求解器还包括利用回溯搜索和约束传播算法实现求解可满足性约束的mistral和simsolver约束求解器,也包括通过分支搜索进行顺序求解约束的or-tools求解器和gecode求解器,基于数值、规则和符号求解的几何约束求解器——d-tree约束求解器。将上述复数种约束求解器进行分类后,置于第二云端作为任务调度的资源方。
需要说明的是,所述第一云端和第二云端均属于云存储平台架构,可以分为四层:数据存储层、管理层、数据服务层和用户访问层。其中,上述复数种类型的约束集合和约束求解器被放置于数据存储层;数据服务层用作响应用户方的需求,包括获取资源需求、存储需求、数据备份需求等;管理层通过设计统一的安全管理、用户管理、安全管理和策略管理风公共数据管理功能,将底层存储和上层应用无缝衔接,实现多存储设备的协同工作;用户访问层用于使授权用户在任何地方使用联网的终端设备登录云存储平台。
103、将匹配原则写入智能合约,将智能合约部署到区块链上。
其中,将智能合约部署到区块链上的具体实施步骤如下:根据步骤1和步骤2中获取的复数种类型的约束集合以及对应的复数种类型的约束求解器,确定出一系列的匹配原则,也即是,根据每种类型的约束求解器可以求解的约束集合类型,为各个类型的约束集合分配约束求解器,参见图3,例如:当约束集合中的约束条件为布尔型变量的逻辑命题时,可以将sat求解器分配给该约束集合,针对每一种类型的约束集合开辟出该类集合映射到相应约束求解器的路径。将匹配原则写入智能合约的过程也即是将路径以程序代码的形式编译成与区块链对应的二进制形式。将智能合约部署到区块链时,其源码安装到区块链的节点上,其合约地址将同时部署于区块链,基于部署后的智能合约地址或基于调用请求是否满足匹配原则实现后续使用者的调用。智能合约的整体流程图如图2所示。
在另一种实施方式中,智能合约之间可以互相调用,也即是一个智能合约的功能需要另一个智能合约的配合完成,因此得到智能合约的源码后,可以对源代码进行预处理,也即是当其中一个智能合约调用了另一个智能合约的函数,便将被调用的函数扩充到调用函数的对应位置。在本实施例中,表现为,部署于区块链中的智能合约不仅包括针对每一种类型的约束集合映射到相应约束求解器的路径,还包括,当某一路径执行后无法得到约束求解的结果,进而针对每一类型的约束集合映射到的备用约束求解器的路径。
104、调用智能合约,基于合约中的匹配原则,完成调度。
其中,调用智能合约完成调度的具体实施步骤如下:面对并行程序中的复数个约束集合,根据智能合约中的每一种类型的约束集合映射到相应求解器的路径,调用对应的约束求解器进行求解,记录该路径中约束集合的类型、约束求解器的类型以及约束求解的完成度。
在一种实施方式中,当基于约束集合与约束求解器间的匹配原则针对某一约束集合调用其匹配的约束求解器进行求解,无法解得约束集合的取值组合时,采用该约束集合映射到备用约束求解器的路径进行求解,记录该路径中约束集合的类型、约束求解器的类型以及约束求解的完成度。
105、获取调度过程中约束求解器与约束集合间的调度路径。
其中,获取调度过程中约束求解器与约束集合间的调度路径具体实施步骤如下:在调度过程中,区块链上形成复数个区块文件,区块链中的记账节点对节点本地的账本进行维护,通过读取区块文件中的数据信息,记录每条求解路径中的约束集合的类型、约束求解器的类型以及约束求解的完成度,得到调度过程中约束求解器与约束集合间的匹配模式。当然,该求解路径不仅包含预先设定的某一约束集合映射到约束求解器的路径,也包含调用过程中该约束集合映射到备用约束求解器的路径。在一种实施方式中,该步骤还包括基于所获取的约束求解器与约束集合间的调度路径,进行模型训练,从而为本领域技术人员选取最优求解路径提供依据。
本说明书所涉及到的外文、外文符号及外文代号补充统一说明如下:
sat求解器—propositionalsatisfisfiablity,sat求解器
hysat—一种属于sat的求解器
isat—一种属于sat的求解器
sat4j—用来解决布尔可满足问题和最优化问题的求解器
minisat—一种小型的可满足问题的求解器
smt求解器—可满足性模论求解器,即satisfiabilitymodulartheory,smt求解器
yices求解器—用于大规模程序验证型求解器
copsmtcheck求解器—一种基于cop模型的约束求解器
smtcop求解器—一种属于smt的约束求解器
z3求解器—一种定理证明器,属于smt求解器
minismt—一种简约型smt求解器,开源的布尔可满足求解器
bit—位
mistral—能为给定需求设计整体思路的一种求解器
simsolver约束求解器—一种基于sim的约束求解器
or-tools求解器—一种专门快速解决优化问题的约束求解器
gecode求解器—一种基于开源编程软件的求解器。