海洋计算模型协同一体化流程管理系统研究

2020-06-18 03:41赵丹枫刘新阳戴舒原黄冬梅梅海彬
计算机工程 2020年6期
关键词:业务流程粒度鸡群

赵丹枫,刘新阳,戴舒原,黄冬梅,2,梅海彬

(1.上海海洋大学 信息学院,上海 201306; 2.上海电力大学,上海 200090)

0 概述

现有海洋计算模型涉及众多学科领域,开发环境各不相同,并且使用的数据源结构复杂、规模庞大,不同模型之间的数据格式和数据结构很难匹配,导致其在进行传统的协同计算时存在较多问题。在传统海洋计算模型的计算应用方面,不同领域的模型关联程度很低。如果要完成一次协同计算,需要人工将模型计算结果进行转换、整理甚至是修补后再复用,如风暴潮预测使用的数值模拟方法[1],首先使用流体力学方法处理初始数据,当台风中心到达海岸时,再利用风、气压模型计算在沿岸引起的风暴潮分布的动力学模式,该方法是基于风暴潮控制方程、计算方法和计算机应用的一种人工计算预测方法。在传统的业务流程配置方面,海洋业务流程在多数据、多模型之间的连通上存在困难。由于数据在定义标准、格式标准以及信息标准等方面都存在不统一性[2-4],实现海洋业务的流程化管理需要综合考虑海洋计算模型和数据的特殊性,如地理空间约束下的业务流程建模[5],也需要考虑如何将地理信息引入到业务流程管理中。针对流程优化问题[6],需要采取特殊的建模方式处理流程结构、资源调度和流程的容错性等问题。

为解决传统海洋计算模型协同计算时存在的上述问题,本文设计面向海洋计算模型的协同一体化流程管理系统。在该系统中,只需输入采集到的数据,根据业务流程配置模型运行规则与参数即可完成协同计算。系统通过模型封装、数据转换解决模型因关联度低难以调用的问题,通过引入业务流程配置交互机制实现多粒度流程配置,同时利用搭载额外的资源调度策略保证计算流程的执行效率。

1 系统体系架构

为了使系统具有良好的可扩展性和可维护性,系统的总体架构正交地分为3个层级和3个模块。在3个层级中:第1层为数据服务层,主要完成数据交换与服务的搭载;第2层为业务逻辑层,主要完成服务集成、监控与业务流程配置的功能;第3层为UI层,主要完成用户与系统的交互操作以及信息显示等功能。3个模块分别为海洋计算模型封装与数据转换模块、服务集成与监控模块和海洋计算业务流程一体化配置模块。本文系统依据SOA模式进行设计,其总体架构如图1所示。

图1 本文系统总体架构

1.1 海洋计算模型封装与数据转换模块

模型封装与数据转换是系统的基础,对应系统架构中的转换器与缓存管理,用于实现海洋计算模型服务化封装集成与数据协同转换。

1.1.1 海洋计算模型封装集成

目前,软件模块构建或服务构建软件在迭代开发时并不能提高软件开发的生产力和质量。模型封装方式是组件化开发,其中最重要的是集成组件到系统的方法,但组件是黑盒,修改难度大。文献[7]提出了一种将设计模式应用于组件集成的方法,但该方法只考虑了组件封装的模式,没有考虑组件内部与组件之间的多粒度模式。因此,需要在模型封装时追加考虑模型的粒度问题,包括模型之间的耦合度以及模型内部方法的关联策略。模型在最小粒度的程度上封装成黑盒,用户只需要知道模型用途而不需要关心模型的实现原理。

模型集成分为2个部分,一部分是系统默认,即已经标准化封装好的模型服务,用户直接调用需要的服务,上传数据进行计算;另一部分是用户自定义,系统设有上传模块,用户可将自己经过编译的模块代码上传,如上传一段python图像识别代码,在启动运行时系统会调用os中的运行环境进行编译组建,运行程序显示结果。

1.1.2 海洋数据协同转换

为了使系统适用多样化的海洋数据,本文设计了一种通用数据转换接口,加入分类与转换算法,将转换后的数据及数据类型全部存储在数据缓存区,转换后的缓存数据等待加载消息通知。已经被标准化封装后的模型脚本作为多个服务分布式地存储在各个服务器缓存区中,直到发起调用时经过模型解析区调用并在模型服务加载区准备计算。同时,在消息队列中注册消息,系统通过消息策略分发注册的消息,封装后的海洋计算模型与解析模块接收消息就会被协同调用,数据与模型在并发器中进行计算服务,同时引入资源调度策略,实现系统负载均衡。

1.2 基于Dubbo框架的服务集成与监控模块

现有的分布式服务监控系统[8-9]并不能在实现服务器性能、数据情况和服务情况全面即时的监测的同时又能实现调用。因此,系统基于Apache Dubbo框架实现了服务调用集成与快速全面的监控功能,实现分布式解耦服务。

1.2.1 基于Dubbo框架的分布式服务模式

Dubbo框架基于定义服务的形式,指定可以通过参数和返回类型远程调用的方法。在服务器端,实现注册接口和数据接口并运行Dubbo服务器来处理客户端调用并注册服务信息。在客户端请求存档接口,提供与服务器相同的方法,Consumer在请求调用分布式存储资源时,通过查找注册信息找到资源所在的服务器进行接口配对,直接获取分布式存储系统中的服务资源,通过注册机制来实现远程服务调用,从而形成分布式服务模式。

1.2.2 海洋计算模型集成监控

监控主要包括服务器性能监控、数据计算状态监控以及服务状态监控。首先把Dubbo-Monitor中的监控信息提取到监控区,用以标记封装的服务状态,同时通过反射的方法把模型内部的方法映射到监控接口,实现多粒度服务监控。设计专门针对Povider和Consumer的信息接口,分别集成其他监控功能。其中,性能监控方面,构建了一种性能探针,在服务下发时可以装载到分布式存储系统中,从而获取各个服务器的性能;数据监控方面,设计了一种特殊的消息机制,Provider提供模型计算服务时,可以通过接口返回运行信息,Consumer在调用服务时访问接口并实时监测,返回的进度信息将直接刷新在服务配置上,构成快速的服务监控方案。

1.3 海洋计算业务流程一体化配置模块

本系统可多粒度实现流程管理和流程区块管理。为了应对复杂海洋计算流程,业务流程模块运用了根据ArtiMate建模方法[10]改良设计的一种面向服务的多粒度协作流程建模方法。该方法可以支持复杂多变的协作关系,搭载一体化流程配置引擎与良好的交互界面,保证流程顺利执行。ArtiMate 建模方法是以Artifact为中心[11-13]将多粒度复杂流程分解为一组单粒度协作流程,并通过策略建模解决单粒度流程间的复杂交互。

在模块加载完毕后,进行业务流程配置时,构造了一个结构标记方法portsEdge()。当进行业务流程配置时,每个服务在拖放配置时会调用portsEdge()用于标记服务调用信息并保存在流程逻辑结构数组中,用于生成流程逻辑结构消息。portsEdge()方法由两部分组成,一部分用于逻辑操作实现业务流程配置结构化,另一部分用于保存流程逻辑结构信息,包括消息的进栈与出栈。

每个服务之间对应一套统一的消息格式与队列,在UI层基于bootstrap和javascript实现图形化的流程配置界面,所有的服务和方法以二级列表的方式显示,并可直接拖动服务至绘制区域进行业务流程配置。流程图绘制完成后系统将生成一个流程逻辑结构消息,生成的结构消息可直接被解析在流程配置方案中运行,解析完毕后的流程将驱动服务进行协同计算,同时显示计算进度信息。

2 关键技术

本节介绍系统的3种关键技术:适用多类型海洋数据的通用转换接口用于实现系统数据转换,解决模型间的数据格式难匹配的问题;改进鸡群算法的资源调度策略用于系统负载均衡,解决大规模模型和数据计算时的资源分配问题;面向服务的多粒度协作流程建模方法用于实现业务流程管理,解决多模型协同计算时流程不可控的问题。

2.1 适用于多类型海洋数据的通用转换接口

本文构建了一种可以将多类型海洋数据转换为统一标准形式的接口,在接口应用中使用了一种基于随机森林的数据分类与转换算法,可用于系统中的海洋数据分类与转换融合。

2.1.1 随机森林算法

随机森林(Random Forest,RF)[14]是一种包含多个决策树的分类器,它是基于Bagging 的集成学习方法,可以用作分类和回归。RF采用有放回的采样来构造不同数据集训练模型,因此模型的泛化能力通常比单一模型强。

随机森林训练多个决策树弱分类器,通过组合这些弱分类器形成一个强分类器,然后以投票的方式来得到最终的分类结果。与普通的决策树不同,随机森林在训练决策树时先随机选择部分样本特征,然后再选择一个局部最优的特征来为决策树划分左右子树,进一步提升了模型的泛化能力。

2.1.2 基于随机森林的数据分类与转换算法

基于随机森林的数据分类与转换算法分为两个作用域,分布在数据流的接口中,分别实现海洋数据分类和数据转换的功能,将原始数据转换成通用的模型输入流。算法作用如图2所示。

图2 基于随机森林的数据分类与转换算法作用示意图

算法在随机森林首次分裂前对欲分类的文件进行预处理,通过读取输入数据的文件信息,联系模型输入格式作为数据标记,以此标记作为数据分类的基础,在构建随机森林前将所有数据先做一层筛选,进一步在该层筛选结果中使用随机森林算法构建分类树。预处理的目的是更快地得到与相应模型输入需求相同的数据集,从而提高分类的速度和精度,并且部分所需分类结果在预处理中就可以完成。

在分类完成时,用户可以根据分类结果对数据进行统一转换,转换方法根据不同的数据格式与模型需求嵌入不同的处理操作。以遥感影像为例,对应的基本转换处理过程有分辨率调整、灰度值调整等。带有结构的数据类型,如台风数据在转换过程中将调用相应的方法被格式化为标准格式。针对不同数据结构,可以根据模型需求定制不同的转换算法。

基于随机森林的数据分类与转换算法描述如下:

算法基于随机森林的数据分类与转换算法

输入数据集d={(x1,y1),(x2,y2),…,(xn,yn)},样本子集的个数T

输出最终的强分类器f(x)与转换器g(x)

1)识别原始样本中的文件信息,建立分类c,形成按文件信息分类的训练数据集D={d1,d2,…,dc}。

2)对第t(t=1,2,…,T)次抽样:

(1)从训练样本集中随机抽取a个样本点,得到一个训练集Dt。

(2)用训练集Dt训练一个CART决策树,在训练的过程中,对每个节点的切分规则是先从所有特征中随机选择k个特征,然后再从这k个特征中选择最优的切分点做左右子树的划分。

3)在分类算法中,预测的最终类别为该样本点所到叶节点中投票数最多的类别。

4)在分类结果中,识别文件信息,调用相应的转换算法。

算法预处理和转换的两次循环只在最外层分别进行,时间复杂度为O(n),n是训练样本个数。而随机森林分类算法的时间复杂度为O(mn),m是特征维数,采用预处理策略后可减少特征子集生成的次数x,x∈[0,m-1],因此算法的时间复杂度为O(n)+O((m-x)n)≈O((m-x)n)

2.1.3 实验与结果分析

实验使用海岛和中尺度涡的遥感影像等各类图片数据、温州台风网1945年—2017年台风数据以及其他各类干扰数据作为算法输入的all_data,假设用户设定模型需求为遥感影像和台风数据,实验过程如图3所示。

图3 基于随机森林的数据分类与转换算法实验过程

图4为通过转换算法对分类数据进行转换后的结果,其中图4(a)为图片数据的部分转换结果,图4(b)为文本数据的部分转换结果。

图4 数据转换结果

将分类实验结果与人工分类结果进行对比,如表1所示,其中,alu列表示算法分类结果数,per表示人工分类结果数,gis行表示遥感影像的分类结果数,pic-other表示其他图片类型数据的分类结果数,typh表示台风数据分类结果数。由表1可以看出,数据量对分类结果有一定的影响。

表1 分类实验结果

准确率的计算公式为:

(1)

图5为分类结果准确率的对比,可以看出,随着数据量的增长,文本类的台风数据对分类结果不存在影响,分类结果始终准确。而针对图片类数据的分类随着数据规模的增大出现了一定的偏差,“≤1 000”和“>1 000”时遥感影像分类的准确率分别下降到94.4%和97.8%,通过对分类结果进行查验,发现导致准确率下降的原因为一些干扰数据的特征与遥感影像的特征比较接近。经过重复实验验证,分类结果准确率均高于91%,分类结果较为准确。

图5 3种算法的分类准确率对比

将基于随机森林的数据分类与转换算法分别与SVM分类算法和原始随机森林分类算法在不同规模的数据量下进行性能对比,图6为各算法分类时间对比结果。可以看出,本文基于随机森林的数据分类算法通过对数据的预处理,显著提高了分类速度。

图6 3种算法的分类时间对比

2.2 基于改进鸡群算法的资源调度策略

在实际的系统运行中,面对规模庞大的服务群及任务执行数量多的问题,作为提高云计算系统性能的关键技术之一,资源调度成为研究重点。由于系统是分布式服务架构,因此涉及的资源调度实际上是在云计算分布式存储系统中的调度。针对云计算环境中会产生资源不均与能耗过高的问题,本文提出一种改进鸡群算法用于云计算低能耗资源调度。

2.2.1 鸡群算法

鸡群算法(Chicken Swarm Optimization,CSO) 是由文献[16]提出的一种基于鸡群搜索行为的随机优化方法,CSO模拟了鸡群等级制度和鸡群行为。整个鸡群分为若干子群,每一个子群都由一个公鸡、若干母鸡和小鸡组成。不同的鸡遵循不同的移动规律,在具体的等级制度下,不同的鸡群之间存在竞争,它是一种全局优化算法。

根据文献[15-16],在鸡群理想化的条件下,假设NR、NH、NC和NM分别为公鸡、母鸡、小鸡和妈妈母鸡的个数。在整个鸡群中,所有的个体数假设为N,每个个体的位置xi,j(t)表示第i个体的j维在第t次迭代的值。整个鸡群有3种类型的鸡,鸡群中个体位置更新公式随着鸡种类的不同而不同。公鸡对应鸡群中适应度值最好的个体,它们可以在更广阔的空间寻找食物,公鸡对应的位置更新公式如下:

xij(t+1)=xi,j(t)·(1+Randn(0,σ2))

(2)

(3)

其中,Randn(0,σ2)是均值为0、标准差为σ2的一个高斯分布,ε为一个很小的常数,k(k∈[1,NC],k≠i)为所有公鸡中除去i后的任一个体。母鸡的位置更新公式如下:

xij(t+1)=xi,j(t)+C1·Rand·(xr1,j(t)-

xi,j(t))+C2·Rand·(xr2,j(t)-xi,j(t))

(4)

(5)

C2=exp(fr2-fi)

(6)

其中,Rand为[0,1]之间均匀分布的随机数,r1为第i只母鸡自身所在群中的公鸡,r2为整个鸡群中公鸡和母鸡中随机选取的任意个体,且r1≠r2。小鸡的位置更新公式如下:

xi,j(t+1)=xi,j(t)+F·(xm,j(t)-xi,j(t))

(7)

其中,m为第i只小鸡对应的母鸡,F(F∈[0,2]) 为跟随系数,表示小鸡跟随母鸡寻找食物。

2.2.2 改进鸡群算法

本文对鸡群算法的主要改进如下:

1)根据原始鸡群算法子群中的个体关系,通过上节中分类算法得到的服务的关联信息,划分相关联的服务类作为初始化的种群,保证算法最优解能够在空间中均匀分布。

2)通过转换算法中的计数参数获取搜索空间大小,确定迭代范围,以较少的迭代次数完成小鸡向母鸡和公鸡的学习。

3)在迭代过程中增加差分进化算法(Differential Evolution,DE)[17-18]中的变异过程,避免陷入局部最优。在第g次迭代中,从种群中随机选择3个个体Xp1(g)、Xp2(g)、Xp3(g),且p1≠p2≠p3≠i,生成的变异向量为:

Hi(g)=Xp1(g)+F·(Xp2(g)-Xp3(g))

(8)

其中,Δp2,p3(g)=Xp2(g)-Xp3(g)为差分向量,参数F的取值自适应调整为将变异算子中随机选择的鸡群中的三个个体进行适应度从高到低的排序,得到Xb、Xm、Xw,对应小鸡的适应度fb、fm、fw,变异算子改为:

Vi=Xb+Fi(Xm-Xw)

(9)

同时,F的取值根据生成差分向量的2个个体自适应变化:

(10)

其中,Fl=0.1,Fu=0.9。

变异策略:

DE/rand/1:Vi(g)=Xp1(g)+F·(Xp2(g)-Xp3(g))

DE/best/1:Vi(g)=Xbest(g)+F·(Xp1(g)-Xp2(g))

DE/current to best/1:

Vi(g)=Xi(g)+F·(Xbest(g)-Xi(g))+F·(Xp1(g)-Xp2(g))

DE/best/2:

Vi(g)=Xbest(g)+F·(Xp1(g)-Xp2(g))+F·(Xp3(g)-Xp4(g))

DE/rand/2:

Vi(g)=Xp1(g)+F·(Xp2(g)-Xp3(g))+F·(Xp4(g)-Xp5(g))

4)融合SJF算法的思想,更迅速地更新小鸡的位置。改进后的小鸡位置更新公式如下:

xi,j(t+1)=xi,j(t)+F·(xm,j(t)-xi,j(t))+

(11)

其中,n为小鸡i对应的公鸡,M为小鸡的觅食程度,L为小鸡在鸡群中的学习程度,M/L权重值反应小鸡需要觅食的紧急程度,权重值越大,优先权越高,小鸡的位置更新越快。

改进鸡群算法流程如图7所示。

图7 改进鸡群优化算法流程

改进后的鸡群算法主要针对迭代次数、适应度更新策略进行了优化与自适应调整,在保证原有算法快速收敛的优点的同时,结合上节算法的数据统计结果,减少迭代次数,提高算法执行效率,在模拟调度时更高效。

2.2.3 仿真实验分析

图8为原始鸡群算法与改进鸡群算法的性能分析结果对比,实验选取迭代次数为100次,随机取重复实验的30次数据作为结果统计。图8(a)和图8(b)分别为两次实验的结果图,可以看出改进鸡群算法更快地达到最优条件。由图8(c)可得改进鸡群算法与原始鸡群算法相比,达到最佳适应度的迭代次数减少了29% ~37%,性能有较大的提升。

在Cloudsim3.0平台上模拟算法对云任务调度的作用情况,实验选取任务数量为10个~100个模拟结果,算法在调度完成时所需要的时间即为任务调度完成时间,实验结果采用30次实验所得的平均响应时间和平均调度完成时间,由图9可知,较原始鸡群算法和SJF,改进鸡群算法的平均调度完成时间及平均响应时间较短。

图8 Matlab实验结果

图9 Cloudsim3.0平台模拟实验结果

2.3 面向服务的多粒度协作流程建模方法

基于ArtiMate建模方法加以改进,核心思想是将多粒度复杂流程分解为低粒度或单粒度的协作流程,通过组合低粒度或单粒度流程协作建模,实现通用化交互策略建模的方法,减少以Artifact为中心的建模成本,有效提高业务流程建模效率。本节以中尺度涡模型计算业务流程为例,如图10所示,描述以服务为中心的多粒度协作流程建模方法。

中尺度涡模型计算业务流程如图11所示,首先依据Artifact具有完整的生命周期的特点,在流程初始化时创建Artifact表单,Consumer每调用一个服务,服务都会产生一个活动,活动对服务进行调用内部方法、返回参数等操作。根据模型运行的实际情况对服务模型进行扩展。

图10 中尺度涡模型计算流程

图11 中尺度涡计算业务流转示意图

面向服务的多粒度协作流程建模是首先将多粒度海洋计算业务流程分解为一组单粒度协作流程,通过策略建模解决单粒度流程间的复杂交互。从2个方面对proclets方法[19-20]和CorPN[21]进行扩展:1)在业务流程建模中采用以 Artifact 为中心的方法,明确刻画海洋计算业务目标和业务进展,适应模型计算业务变化;2)使用解耦交互机制和交互策略,允许依据海洋计算模型服务的内容绑定多种类别的流程,通过替换与通用化交互策略增强业务流程对环境的适应性。

流程建模方法依据ArtiMate的建模思想,将复杂的业务流程拆分成一组低粒度或单粒度流程(以下简称smallist),这是各个业务的实际业务内容。由图11中可知其基数约束、多重性约束和复杂交互关系以策略组件的方式介入的交互策略定义(以下简称combine),combine存在通用性策略,也可以相互组合关联,形成新的combine,能够全面灵活地支持各种海洋计算业务交互情况。combine连接彼此交互的 smallist,共同构成多粒度业务流程应用的模型。

3 系统运行效果

系统根据高级软件工程架构简化了环境依赖,将开发与集成落到最底层实现,系统直接部署在Tomcat中,只需以默认选项安装Redis即可直接在Tomcat中启动运行。

3.1 运行环境

海洋计算模型协同一体化流程管理系统是基于Web端开发的应用,以Java、JavaScript作为开发语言,结合Apache Tomcat8、Redis等运行所需环境,使用eclipse和webstorm作为开发工具进行开发。系统存在可拓展性,可结合不同开发环境进行扩展开发。

系统客户端目前主要适配Windows系统各个版本,适用于Chrome、Internet Explorer、Firefox、Safari等浏览器。

3.2 交互界面

海洋研究中使用海洋计算模型进行计算的实验人员在进行操作时需要了解服务中的模型信息,通过模型信息分析所需要调用的服务进行流程配置,完成流程配置后在运行时关注运行情况和服务情况等。以下功能用以协助研究人员提高海洋数据分析与协同计算的效率,快速便利地完成海洋数据复合处理需求。

1)服务信息查看。在进入系统服务界面后,所有的服务及方法以叠加列表的方式展示在右侧,点击各个服务模块可以在data preview区域里查看相应的服务信息,服务信息包括:服务名和对应的方法名、服务器名、模型来源、数据类型等,通过以上信息判断计算需求,选取所需服务,如图12所示。

图12 系统服务界面

2)业务流程配置。在判断需要使用的服务及方法后,通过拖拽的形式可以直接把要使用的服务作为流程节点加入到流程编辑区域,流程编辑区域中的初始节点Start和完成节点End已自动加入,Start节点只有输出标志点,End节点只有输入标志点。每个节点的输出标志点可以点击拖出连接线与要连接的节点的输入标志点进行连接,从连接线的任意一端的标志点拖离即可删除连接重新配置,连接完成后即可点击运行按钮直接执行,如图13所示。如果服务有相应的扩展依赖,在拖放流程节点时会自动识别,相应的节点会自动加入扩展功能,点击对应功能的按钮即可加入扩展内容,如上传数据或载入新的模型等。

图13 流程配置与运行结果界面

3)信息监控。在点击运行时,被配置调用的服务会以进度条的形式显示该服务的运行进度,运行结束后服务节点被标记成已完成状态,计算结果显示在下方的result viewing区域。在监控区域,系统以图表的方式动态地将各个服务器的资源使用情况刷新在界面上,供用户查看情况,同时可以查看负载均衡情况,保证模型计算稳定地运行,如图14所示。

图14 信息监控界面

4 结束语

本文结合dubbo框架、工作流等计算技术对海洋计算模型进行服务化封装和计算业务流程配置。将随机森林算法用于数据分类与转换,通过改进鸡群优化算法优化计算服务资源调度过程,同时结合多粒度流程建模方法开发海洋计算模型协同一体化流程管理系统,实现海洋计算业务流程的一体化配置和多模型协同计算。该系统可减少分布式服务下的调度负担,解决海洋计算业务的模型复合困难、流程复杂的问题,提高海洋数据分析人员的工作效率。下一步将构建封装覆盖范围更广和复杂度更高的海洋计算模型,优化自定义模型的使用方法,同时针对数据通用匹配性和大数据情况下的负载均衡问题探索解决方案。此外,还将优化流程管理的后台机制,实现流程的持久存储与服务化调用。

猜你喜欢
业务流程粒度鸡群
林下养殖鸡群人工免疫失败的成因及应对措施
引起鸡群呼吸道疾病的因素
粉末粒度对纯Re坯显微组织与力学性能的影响
SPF鸡如何定期监测
企业财务管理、业务流程管理中整合ERP之探索
互联网+背景下物流公司的业务流程再造
建设项目全过程造价管理咨询服务的业务流程分析
基于财务业务流程再造的ERP信息系统构建探析
双粒度混合烧结矿颗粒填充床压降实验
泉州湾表层沉积物粒度特征分析