李 东, 吴 静
(西南科技大学 信息工程学院,四川 绵阳 621010)
随着企业信息化的深入,越来越多的企业管理流程需求已经无法用普通办公自动化(OA,Office Automation)系统来满足,分布式工作流(Workflow)、业务流程管理(BPM,Business Process Management)系统逐渐取代原先的企业管理流程,在ERP/B2C等大型企业应用领域得到广泛的应用。但是必须看到就目前分布式工作流技术无论是在系统柔性还是在负载均衡性方面都有着明显的不足,提高工作流管理系统整体效率的一个关键点是:用合理的负载均衡调度策略来提高工作流引擎性能。
工作流引擎负载均衡策略需要涉及一下内容:
1)通过一种合理的方式描述各个节点初始化时自身的负载信息。
2)系统对各节点负载的信息实时汇总,产生负载信息汇总表。
3)选择合适的均衡调度策略。
4)系统负载均衡策略发生变化时保证系统的性能稳定。
工作流管理联盟(WfMC)对于工作流的经典定义为:全部或者部分由计算机支持或自动处理的业务过程。工作流管理系统是通过执行经过计算的流程定义去支持一批专业门设定的业务流程,它被用来支持定义、管理和执行工作流程,使得业务过程执行达到最大效率。图1是WfMC提出的工作流管理系统参考模型。
图1 工作流管理系统参考模型
分布式工作流系统一般划分为3个部分:工作流体系结构的分布;工作流引擎的分布;工作流模型的分布。其中工作流引擎的分布是整个分布式系统的核心。
一个工作流管理系统可以包含一个或多个引擎,并通过API向外部提供5个方面的功能服务,这些功能分别为[1]:
1)接口 1-流程定义的导入导出,一般采用XML格式的流程定义。
2)接口2-同客户端应用程序和工作列表处理程序之间的交互,从而实现人与工作流引擎的交流和沟通。
3)接口3-软件工具和应用程序的调用,让第三方系统参与进来。
4)接口4-不同工作流管理系统之间的协同工作,达到连接各个不同的工作流引擎和系统。
5)接口5-管理和监视功能,主要用来搜集管理信息。
其中接口4,如:WebGIS作为Internet影响巨大的Web服务应用,可以实现分布式网络地理信息系统架构等[2]。
针对目前企业系统客户访问过多,多个任务流程的进行所消耗的资源和时间各不相同,采取何种方式进行分布式引擎的有效负载均衡显得尤为重要,所以采取有效负载均衡使得系统达到最高运行效率。
负载均衡分类:静态负载均衡和动态负载均衡[3]。静态负载均衡算法只能对整个系统做一些预判,无法随着系统环境和客户需求的变化而变化,而动态算法的使用相对较多,因为动态算法对实际情况的应用更为合适;实现动态算法需要对系统的信息进行实时收集、分析和处理,所以实现起来会给系统带来额外的开销,在实际系统开发中,开发人员只是简单的采取随机、轮询等算法,这样做系统效率提高不是很明显。
典型的动态负载均衡算法有[4]:发送者启动算法、接受者启动算法、对称启动算法、自适应算法等;相比之下前3种算法都不能适应系统状态的变化,难以满足当前企业业务流程的复杂和多变性,自适应算法可以根据系统本身状态的变化对应修改某些参数及其策略来适应当前任务的变化,因此,自适应算法可更好的适应各种状态下的负载均衡问题。
动态负载均衡定位策略:轮询法、最快响应法、最少连接法、随机法、哈希法(HASH)等。
对现有动态负载均衡策略进行研究和总结[5-6]:
1)大多数动态负载均衡策略只能用在指定的系统中才能达到最高的效率,还没有一种策略能够完全适用所有系统。
2)没有统一负载信息指标的参数化,因为影响因素多变。
3)引擎进行任务调度时产生的抖动问题,由于信息传递存在延时、受阻等通信瓶颈问题,使得任务在节点间迂回得不到有效的执行,节点都处于等待状态。
4)负载任务优先等级问题。
根据以上分析在异构环境下的分布式工作流系统负载均衡需要做到:负载信息的评估;选择何种任务分配策略;记录引擎当前执行任务的信息。
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。
定义1:设定一个系统初始负载(Start Load),记做iS;iW是系统节点的比例参数;
定义2:iL表示为节点i当前的可用负载值;
定义 4:由节点的初始值和动态负载值可得出当前节点的负载值,记做(K为系数);
定义5:根据WfMC规范的描述流程的执行时间,包括执行引擎处理执行时间、活动资源较色执行时间、非工作日时间;这里简单sT定义为流程开始时间,eT定义为流程结束时间,则流程执行时间为
定义6:定义LL(Low Load)为负载轻载门限,HL(Heavy Load)为负载重载门限;则:
1)当nL≤LL时,节点状态为轻载。
2)当LL<nL<HL时,节点状态为适载。3)当nL≥HL时,节点状态为重载。
表1 节点状态
有了节点状态表可以根据节点状态表的实时信息进行任务分配,保证每个节点任务的均衡,LL(轻载)节点首先分配到任务。
假设系统引擎有若干个负载任务引擎、各节点自身负载信息表和管理者汇总负载信息表组成,负载任务引擎内部以及负载任务引擎与负载自身信息表和管理者汇总负载信息表之间通过消息传送进行实时系统通信。引擎任务调度模型如图2所示。
图2 引擎任务调度模型
调度进程的作用是:①更新负载自身信息表;②遍历管理员汇总负载信息表;③判断节点负载状态;④负载与其他执行引擎间的通信。
基于以上所设计的调度模型,采用了静态分配和动态均衡相结合的策略进行负载均衡,首先初始化系统时,先预估个节点的负载承载量,然后按节点承载量静态分配任务给各个节点,在系统运行阶段采用动态负载均衡策略来动态调整各个节点的负载以达到均衡[7-8]。
动态负载均衡调度算法:
if(系统初始化)
{1,各节点周期性收集自身负载信息,根据负载信息计算实时负载值iL,判断节点是发送者、接受者还是保持状态,并同步更新自身信息表;
2,管理者周期性收集系统中各负载的信息;
if(实时负载平均值nL {4,该节点处于轻载,发送者查询接受节点,定位目标节点; if(是否到目标节点) { if(该节点是否是接受节点) {接受负载任务;} if(接受负载任务后是否重载){接受任务负载;} else{如果重载返回4} } else {重新定位目标节点,返回4} } if(实时负载平均值nL>HL) {5,该节点处于重载,接受者查询发送节点,定位目标节点; if(是否找到目标节点) { if(是发送节点) {分配任务给请求节点;} else{重新定位目标节点返回5;} } }执行负载均衡后的各节点任务队列; if(各节点任务队列执行完毕){结束算法} else {转到1} } 算法中前3步为调度策略的重点,异同与一般的轮询和随机算法:①初始化后计算机系统通过管理员收集的负载信息表对整个系统的平均负载进行计算;②能够实时反应整个系统的负载信息;③通过判断调度负载使系统达到平衡;④算法实现思路清晰,减轻引擎工作负担,节省系统资源。 在现有的开源工作流平台基础上,完成工作流系统研究主要有一下几步[6]: 编写流程定义(XML语言);部署流程到平台;加载流程;启动流程;执行任务;完成任务。 算法主要类图如图3所示。 图3 算法类 EngineLoad类:提供引擎启动、停止等操作;User类:主要负责任务的创建、执行、发送和接受;GetResource类:负责动态负载信息值的计算等内容;Task类:实现任务的标记、状态、发送时间、接受时间、创建时间、删除任务等操作;Manage类:主要进行系统平均负载的计算;NodeLoadInfo类:负责负载信息参数的存储和读取;LoadBalance类:通过调用GetResource类和NodeLoadInfo类达到负载均衡目标。 在相同运行环境下,选择300个商业任务实例活动,来比较轮询调度、随机法和负载均衡调度法3个不同方法的延时反应T,如图4所示。 图4 均衡调度延时对比 由图4可以看出轮询调度可以保证每个引擎的流程实例数延时相对较大,随着实例的增加而快速增加;随机法调度延时同样也是随着流程实例的增加而增加,但是变化比较漂浮不定;而负载均衡调度可以保证当任务实例达到200左右时每个引擎负载相差不会太远,保证了每个任务实例完成的实时性,从而对整个系统的效率有明显的提高。 从目前工作流系统发展趋势来看引擎的分布式是一个必然的趋势,随之带来的节点负载均衡问题尤为严重,针对这些问题提出了一种动态负载均衡策略,并通过工作流引擎负载参数化、调度模型的设计以及具体的算法流程等方面进行了阐述,达到负载均衡的效果,相比于传统的加权轮询算法、随机法有着明显的优势。不足的是该策略采取集中式管理,须对节点负载管理采取进一步优化,及优化网络数据流量传输方式[9]。 [1] 胡奇.JBPM4工作流应用开发指南[M].北京:电子工业出版社,2010:9-16. [2] 贾梁,周继,董丽丽.基于中间件的分布式WebGIS架构的研究[J].通信技术,2009,42(01):177-179. [3] 谭宜勇,王锐,范永顺,等.分布式工作流中的自适应实时任务调度方法[J].计算机集成制造系统,2010,16(09):1887-1895. [4] 张宁,余霏.分布式工作流技术研究综述[J].贵州大学学报,2008,25(01):84-87. [5] BOUKERCHE A,DE GRANDE R E.Dynamic Load Balancing Using Grid Services for HLA-Based Simulations on Large-Scale Distributed Systems[C]//Distributed Simulation and Real Time Applications. Singapore:IEEE, 2009:175-183. [6] YANG C C,CHEN C,CHEN J Y.Random Early Detection Web Servers for Dynamic Load Balancing[C]//Pervasive Systems,Algorithms, and Networks.Kaohsiung Taiwan:IEEE Conference Publications,2009:364-368. [7] 李志远,胡庆辉.Web Service构建多层分布式职称申报评价系统[J].通信技术,2008,41(09):221. [8] 田波.MPLS负载均衡实现技术[J].信息安全与通信保密,2007(05):155-157. [9] Radware公司.全局负载均衡流量优化网络数据传输[J].信息安全与通信保密,2005(06):63-64.4 实验比较
4.1 调度算法的实现
4.2 实验结果
5 结语