APP下载

基于云平台的软件服务流引擎技术研究

2012-03-07徐凌宇杜金峰

关键词:中间件结点调度

蔡 茂, 徐凌宇, 东 韩, 陈 亮, 杜金峰

(1.上海大学 计算机工程与科学学院,上海 200072;2.国家海洋信息中心,天津 300171)

随着“数字海洋”项目的实施,我国海洋信息化工作不断发展,建成了大量的专业海洋环境信息数据库,搭建了多套应用于海洋多种业务的信息系统。它们为我国海洋事业的发展提供了有力的信息保障和技术支撑。

然而以上这些各自独立且内部结构相似的系统也存在以下问题:资源占用多,运行成本高;传统模式难以适应业务部署的快速要求,缺乏统一部署计算资源的规划;业务系统稳定性和可靠性低,系统维护难度大。

新兴的云计算与云服务技术可以有效地解决上述海洋信息系统建设中存在的问题。利用云计算技术构建海洋环境信息综合服务应用框架体系,建设支撑海洋环境信息业务的低成本试验和运营环境,可以提高海洋资源信息的可重用性与共享性以及应用系统的可扩展性。

SaaS(Software as a Service)是随着互联网技术的发展和应用软件的成熟而兴起的基于互联网环境和云计算方式的新型软件服务模式,是软件和信息服务的重要发展方向[1]。在云平台(cloud platform)上,服务最终体现在高效的服务组合上,以实现不同请求的业务逻辑。软件即服务(SaaS)是以云计算为基础的一种快速、共享、重用的IT应用程序生成方法,称之为软件云服务。在面向用户上,SaaS具有无硬件、无维护、无升级等多种优势,因此出现了很多相关的SaaS平台产品。Hadoop是当今使用最广泛,发展最完善的云计算分布式系统基础框架和开源分布式数据处理框架,被用于高效地处理海量数据。由于Hadoop具有可伸缩性、高可靠性、低成本性和高效性等优点,因此本文采用Hadoop作为底层云平台的基础开发和运行框架。

1 软件服务流

海洋环境信息云服务体系框架可以向用户提供可定制的个性化服务,结合SaaS的思想,向用户提供商品的基本单元为服务,一个服务的实现是一个复杂的过程,需要调用云平台的大量数据和资源,而用户的整个需求,可以解析成由多个彼此关联的服务单元组成的复杂整体。要处理好一个复杂的用户需求和大批用户同时提交的需求,并提供可靠的服务,这对云服务体系框架提出了很高的调度与执行要求。

为了满足用户的个性化请求,传统的工作流建模[2]会采用基于组件的动态结构模型敏捷表达出客户需求,然后建立基于工作流的需求结点元模型,对需求表达协作式工作流进行语义描述,并构建其管理逻辑结构,从而控制与协调需求表达的结点、数据及工作流的方向以实现工作流的自动化处理过程。

本文把云计算技术与工作流技术相结合,提出了软件服务流的概念。软件服务流的基本思想是将原本分布放置在云平台上执行的错综复杂的可执行程序,通过细粒度中间件过度抽象成服务模型提供给用户以定制,用户的定制被解析成一个相互关联的基本服务单元组成的流程图,再在软件服务流引擎的解析调度下完成自动化执行过程。

不同于传统的工作流,软件服务流的特点在于流程单元是云服务,由于在云平台上服务的执行过程更加复杂和不可预知,软件服务流的服务抽象也会更加复杂,它的自动化执行对于高效性、实时性、稳定性、纠错能力的要求也更高。

2 软件服务流引擎

2.1 系统执行和交互设计

系统执行和交互设计流程如图1所示。

图1 系统总流程

首先,应用层(上层)在向用户提供个性化定制服务之前,将用户需求结构化抽象成底层平台可执行的一个个服务单元,将这些服务单元通过Web界面向用户开放提供自定制服务[3]。用户的自定制过程不是基本服务单元的简单叠加,而是相互联系的复杂串行、并行、包含等关系的集合。自定制服务流在促进资源的合理配置和信息资源的有效传递和共享的同时,提高了效率,也满足了不同用户的个性需求[4]。

在施动层(底层),一个基本服务单元就是一个Hadoop上符合Map-Reduce规则的可执行程序,程序的执行需要提供HDFS程序路径、用户提供的参数及平台的数据文件等[5]。

服务流引擎(中间层)在这两层之间负责总的调度协调、服务与结构化执行模型的接口转换与控制及容错与错误处理等。

为了抽象用户请求,简化调度信息,屏蔽与调度工作无关的信息,本文设置了交互数据库作为上下层的接口,Web服务器接收到一个用户请求后,应用层负责将其匹配成平台的可执行程序,将执行路径、执行参数及用户信息等写入数据库,这样将用户请求抽象成一个有向无环图,将图传递给引擎,由引擎解析调度递交施动层,施动层再从交互数据库中还原出执行信息以进行下一步的执行操作[6-7]。

交互数据库的设置完全释放了引擎的额外工作压力,使得引擎可以专注于处理调度、容错、优化及错误补救等工作,这在处理大规模用户访问时尤为重要。

2.2 服务抽象

服务抽象是将平台底层的可执行程序转化成提供给用户的服务模型。如何用平台上有限的可执行程序表达出用户多样的服务请求,本文借鉴SOA面向服务架构中的服务粗细粒度组件转化思想[8],设置了细粒度中间件作为过渡。模型匹配关系如图2所示。

图2 模型匹配关系

图2中,细粒度中间件为Hadoop平台可执行的最小单位,是一个复杂的海洋表面温度(Sea Surface Temperature,简称SST)融合算法,该算法加上对应的监测数据,结合Matlab绘图程序和相关连接程序可以组成一个可视化海温预测的服务模型向用户开放。而在底层,中间件是平台执行的最小单位,每个中间件均符合平台Hadoop执行规则的程序,但是平台的可执行模型库又不仅仅是中间件的集合,本文可以将常用的一些中间件的有机组合或者中间件的优化组合做成一个可执行模型,放入可执行模型库。

简单地说,服务模型和可执行模型都是细粒度中间件的有机组合,服务模型是为了具体有效地描绘用户的服务请求,而可执行模型是更大程度地匹配Hadoop平台执行规范,优化执行效率。软件服务流引擎的作用是负责将用户定制的服务模型流拆分重组为可执行模型流,以匹配优化执行;同时负责服务模型库和可执行模型库的动态更新与优化工作,以保持系统的稳定性与高效性。

2.3 EOE调度算法

一个用户的请求最终可以被还原成一个带权的有向无环图(Directed Acyclic Graph,简称DAG)F,F= {TM,R},一个可执行模型就是一个结点,TM为结点的集合,R为各个结点之间的关系,这种关系主要是逻辑上的输入输出关系,例如T1→T2即表示T1的输出作为T2的输入。

2.3.1 工作流调度方式

传统的工作流建模方式[9]即是通过定义活动节点、有向边及活动的启动方式构建基于有向图的工作流模型,然后构建活动的状态集、状态函数、动作模型和条件模型,并定义活动的执行规则,且详细描述基于该规则的活动内部运行机制,从而实现工作流的自动化执行。

传统上,一个工作流系统经常被设计成便于在一个活动具有类似性质的特定应用领域的自动化处理[10]。针对这些特定应用,工作流系统的调度策略对于实时性的要求较低。

最直观的解决方法是传统的拓扑排序顺序调度,利用图广度优先遍历算法,得到F的拓扑有序序列A,以序列A的顺序交付执行,该方法实现简单、稳定性高,但效率极低。

在工作流执行中分层算法[11]广泛使用。在使用分层算法前,要将已知的图以层次图的形式表示出来。在层次图中,结点被分为若干个部分,每一部分称为一层,同层顶点没有边连接。算法为:

(1)把所有的汇点(即出度为0的点),放置在最底层,即L1层。

(2)余下的每个结点u所放置的层数记为y(u),计算每个结点y值的公式为:其中,N+(u):= {v∈V|∃(u,v)∈E}。

算法的思想是把最长路径作为生成图的高度,并且所有汇点放置在最底层,其他的路径长度不会超过最长路径,则最长路径的长度为生成图的总层数,保证了最小高度的实现,按照层次划分线性执行。

分层算法简单,易于实现,而且可以在线性时间内结束。算法的逻辑清晰、易于实现、系统结构严密、出错情况易处理,很大程度上实现了结点的并行执行,但是也并没有达到最大程度的并行。

2.3.2 EOE算法

带权的n-层有向无环图G=(V,E)的最小高度最长路径为:

用分层算法的实际运行时间为:

即每层的最长运行时间之和,显然这不是最高效率的。

而系统的理论最短执行时间tmin应该是流程的各执行单元在执行条件完备的情况下立即执行,最后得到的执行时间。由于软件服务流的特征是执行单元的复杂度、未知性更高,一个执行单元的执行过程是无法重现的,所以是无法预知的,tmin只能在流程执行后计算出,作为调度算法效率的对比参照值而存在。为了接近tmin,最简单的方法是把系统设计成一个监控进程不断循环扫描软件服务流中可执行的模型结点,显然这种方式会加重系统负载,降低系统吞吐率和稳定性。

为了得到分层算法清晰的拓扑排序以保证系统的稳定性,同时也希望保证系统的高并发性使得处理时间接近tmin,本文提出了EOE(Execute Once Enabled),即一旦可以立即执行的算法,以最高的并行效率和最低的处理开销执行流程。算法的基本步骤为:

(1)解析DAG图,完整地保存图各结点以及结点间的关系信息。

(2)开始结点标记为可执行结点。

(3)可执行结点交付平台执行,同时开辟监控进程。

(4)监控进程监控结点执行状态,出错转步骤(5),正确完成转步骤(6)。

(5)处理出错信息后向上层报告,或重新执行。

(6)处理监控结点的后继结点,具体做法为:如果监控结点无后继结点,则转步骤(7);如果有后继结点,则顺序处理监控结点的各个后继结点,删除监控结点与后继结点相关联的边,检查后继结点的入度信息,如果入度为0,则标记为可执行结点,转步骤(3);如果入度不为0,则不予处理。

(7)执行完成,保存结果,递交上层。

2.3.3 EOE算法分析

EOE算法的执行高效性和实时性在于它的主动执行过程,主要体现在以下2方面:

(1)结点的执行是在执行过程中实时启动的。在分层算法中,结点的执行顺序在任务运行前就已经定了下来,同一层次的结点执行是绑定的,一个结点的出错会延误整个层次的执行进度。而在EOE算法中,由于每个结点在执行条件完备时立即可执行,这样一旦执行过程中有结点出错,系统延误会降到最低,出错结点只会影响到自己后继结点的执行。

(2)结点的执行是主动激活模式的。本文将图的信息保存后,从起始结点开始执行,每个正确执行完成的结点将激活自己的后继结点中所有执行条件完备的可执行结点,不可执行的结点丢弃处理,会由未完成的前驱结点稍后激活。这样的处理将系统所开辟的执行即监控进程降到最低,节约了系统资源,提高了执行效率。

3 应用与实现

系统应用在国家海洋信息中心海洋环境信息云服务专用服务器上,初步demo已经部署运行成功。

在实验室环境下,综合考虑交互频率和处理负荷,Web服务器和数据库服务器部署在一台机器上,而引擎和施动层部署在一台服务器上,Hadoop平台由一台PC做主控服务器,16台PC做数据服务器。基础服务单元,数据文件选择MB级的小文件和GB乃至数十GB级的中型文件,而可执行程序则选择WordCount和Multyply做模拟运行。本文使用了多台机器模拟多用户访问,其中的一个任务的DAG图和运行结果记录如图3所示。

图3 模拟任务的DAG图和运行结果数据库截图

如果使用分层算法,exe 5为最底层L1,exe 3和exe 4为L2层,exe 2为L3层,exe 0和exe 1为L4层。分析可得各算法效率分析结果,见表1所列。表1中,执行效率r=tmin/t,r∈ (0,1)。

由表1可见,EOE算法的执行效率最接近理论最优值,而进一步分析数据库中的时间节点发现,EOE算法相对于理论最优算法的冗余时间发生在当可执行结点执行完毕处理后续结点时,处理时延是相对固定的,在可执行模型执行规模相对较小时,这段处理时延会在一定程度上影响系统效率,但当应用在大规模可执行模型的执行调度时,这个相对固定的处理时延是可以忽略的。本文尝试使用GB及数十GB级的数据文件,使得可执行模型的执行时间尽量延长,最后可以验证,EOE算法相对于理论最优值的处理时延始终固定在数秒至数十秒的规模。

表1 各算法效率分析对比

由运行结果可以看出,同一种可执行模型,由于数据、平台负载等条件不同,在不同结点上执行时,执行时间都不相同,但每个结点在执行条件完备,即所有前趋结点正确执行后都可立即执行。

4 结束语

本文结合传统的工作流自动化处理机制,提出了云计算中实现SaaS服务的软件服务流模式。首先将底层Hadoop平台执行的复杂云计算程序抽象成向用户提供的服务模型,用户的自定制服务转化成可执行模型流程后,由软件服务流引擎自动调度处理执行,运用改进的EOE实时调度算法,可最大限度地实现系统的并行性,同时监控进程的实时激活机制也可以将系统的处理开销降到最低。在海洋环境信息云体系框架下的应用证明了该模式的可行性,目前已经对数十GB级别的执行文件和数十用户同时访问的情况做了可行性验证实验。

[1] Li Weiping.An analysis of new features for workflow system in the SaaS software[C]//International Conference on Interaction Sciences:Information Technology,Culture and Human,Seoul,Korea,2009:110-114.

[2] 杨 沁,卫道柱,潘秀琴.面向需求表达的个性化产品协作式工作流建模[J].合肥工业大学学报:自然科学版,2010,33(10):1462-1467.

[3] 罗小利,吴清烈.SaaS软件服务基于大规模定制的业务逻辑框架研究[J].电信科学,2011(9):26-31.

[4] Das C,Mohan G H,Roy R,et al.Quo Vadis,SaaS a system dynamics model based enquiry into the SaaS industry[C]//International Conference on Information Management and Engineering,2010:732-737.

[5] Borthakur D.HDFS architecture guide[EB/OL].[2011-10-07].http://hadoop.apache.org/common/docs/current/hdfs-design.html.

[6] Zhang Liyong,Wen Yan,Han Yanbo.A proactive approach to load balancing of workflow execution in a SaaS environment[C]//International Symposium on Service Oriented System Engineering,2010:39-46.

[7] Wu Bin,Deng Shuiguang,Li Ying,et al.Reference models for SaaS oriented business workflow management systems.[C]//International Conference on Services Computing,2011:242-249.

[8] 张 曌.基于SOA的网络管理系统架构及应用研究[D].上海:上海交通大学,2007.

[9] 陈四根,蒋增强,安苏华,等.基于有向图的工作流建模及其运行[J].合肥工业大学学报:自然科学版,2007,30(1):60-65.

[10] Liu Xiao,Ni Zhiwei,Yuan Dong.A novel statistical timeseries pattern based interval forecasting strategy for activity durations in workflow systems[J].Journal of Software and System,2011,84:354-376.

[11] Chen Jianxin,Tang Hai.Research on layering algorithm of DAG[C]//International Conference on Computer Science and Software Engineering,2008:271-274.

猜你喜欢

中间件结点调度
基于八数码问题的搜索算法的研究
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
RFID中间件技术及其应用研究
Ladyzhenskaya流体力学方程组的确定模与确定结点个数估计
基于Android 平台的OSGi 架构中间件的研究与应用
中间件在高速公路领域的应用
基于Raspberry PI为结点的天气云测量网络实现