为满足云制造对软件架构和开发工具支持的迫切需要,从抽象角度分析了面向服务架构、云计算和云制造三者之间的关系,指出云制造继承和扩展了前两者的服务模式;面对制造资源,融合面向服务架构与云计算,提出了面向云制造的服务架构;选用公众可免费方便获得的开源工具,构建了基于Eclipse平台的面向云制造服务集成开发环境;结合制造流程示例展现开发工具应用。通过示例研究表明,该集成开发环境具有良好的可伸缩性,能敏捷地应对云制造应用需求。
引言
虽然我国已经成为一个全球制造业大国,但整体制造技术水平不高,生产效率和产品附加值相对较低,而且正面临日益突出的资源和环境约束,生产方式迫切需要转型。面对我国制造业转型和升级的需求,急需利用包括信息技术在内的高新技术对制造业进行改造提升。新一代信息技术的发展,特别是近来兴起的云计算(cloud computing)为服务型制造发展提供了新的工具和机遇,由此云制造应运而生。云制造采取包括云计算在内的当代信息技术前沿理念,支持制造业在广泛的网络资源环境下,为产品提供高附加值、低成本和全球化制造的服务,也为“两化”深度融合、生产方式转变和服务增值提供了手段。
云制造与传统的制造系统集成方式不同。传统的制造系统集成技术是为解决“信息化孤岛”而生,面对软硬件结构等的动态变化,系统自适应能力较差,导致系统维护和扩展成本畸高,加上紧耦合的集成模式,不利于企业业务流程的调整和重组,缺乏可扩展性和灵活性整合;而Web服务和面向服务架构(Service-Oriented Architecture,SOA)为企业应用的松耦合集成提供了途径。因此,在云制造集成应用中,除了基于服务实现跨平台的应用、提升应用程序之间的互操作性之外,更重要的是采用SOA,通过松耦合的方式连接,基于服务组合实现组织内或跨组织的复杂业务流程,敏捷地应对不断变化的业务需求。
云制造是近年来才被正式提出来的一种制造模式,其研究主要着重于云制造定义、体系结构、平台组成和关键技术等基本问题,总体上还处于起步阶段,当前缺乏具体实施技术和相关开发工具的支持。本文探讨面向云制造服务架构及云制造服务平台开发技术,尤其是采用开放源代码软件(开源软件)来搭建云制造的开发平台,以推动云制造的发展、普及和应用。
1 面向云制造的服务架构
云制造是在“制造即服务”理念的基础上,借鉴云计算思想发展起来的一个新理念。云计算概念从2006年被提出以来,虽然Google、Amazon、微软等著名厂商、开源组织和学术界提出了一些云计算系统或平台方案,但是云计算平台还未形成统一的标准和规范约束,应用开发多样化,各个云计算厂商采用自己的技术架构发展云计算应用。同时,这些现有云计算平台面向计算资源,未考虑制造资源的特殊性、复杂性和可扩展性,不能满足云制造研究和开发的需求。另外,商用云计算产品属于厂家私有,不对局外研究人员开放,也不能对其进行随意修改和实验研究。然而,无论是云计算还是云制造都是面向服务,都适宜采用SOA。
SOA是一组软件设计和开发的规范,它将应用程序的不同功能单元(称为服务)通过良好的接口和契约联系起来,使得构建在各类系统中的服务可以以一种统一和通用的方式进行交互,服务可在不同的业务过程中被重复使用,而且具体的服务实现不依赖特定的实现语言与工具,这种架构以服务为导向,支持服务发布、查找和绑定/调用,本质上通过松耦合、可重用、可互操作的服务更快地响应业务变化需求。云计算是效用计算、分布式计算、网格计算、虚拟化技术和SOA 等诸多技术的发展结果,它把大量高度虚拟化的计算资源管理起来,组成一个大的资源池,通过网络为用户提供按需即取的计算服务。一方面,SOA 与云计算具有一定的相似性,两者均强调服务的概念。SOA 基本元素是面向软件的服务,云计算是SOA 理念在IT 基础架构的延伸,进而将所有计算资源(包括硬件和软件)作为服务,为SOA带来更高效、更经济的一种架构选择。
相比而言,SOA 更具战略性和抽象性,而云计算则更具战术性和具体性。云制造进一步丰富和拓展了云计算的资源共享内容和服务模式。如果将这三者视为面向对象中的类,并将SOA 描述为抽象(Abstract)类,则云计算可以看作是SOA的子类或是架构实例,云制造则继承了云计算类,如图1所示。
云计算服务模式主要有基础架构即服务(Infrastructureas a Service,IaaS)、软件即服务(Softwareas a Service,SaaS)和平台即服务(Platform as aService,PaaS),资源包括硬件、平台和软件等。云制造除了继承云服务属性和行为外,还具有自身的独特属性和行为,即在服务方式上,除了云服务(Iaas,PaaS和SaaS)外,云制造还具有设计即服务(Design as a Service,DaaS)、生产加工即服务(Fabrication as a Service,FaaS)等服务模式。而面向云制造的资源,已不再仅仅是计算资源(如存储、运算器等),而是非常广泛的制造资源(如计算资源、设计资源、加工资源、协作资源、设备资源、物流资源和人力资源等)和制造能力(制造过程中有关的论证、设计、生产、仿真、实验、管理和集成等);并且其资源种类复杂、异地分布,不同的制造资源具有不同的功能和属性;制造资源工作时具有独占性,即不能同时加工两个或两个以上的任务;一个制造任务通常由按一定顺序排列的几道工序组成,每道工序需要不同的制造资源来加工完成;现实制造中存在实体交流问题,需要考虑实体物流交互对流程时间和流程成本的影响。
图1 SOA与云计算和云制造之间的关系
另一方面,SOA与云计算是互补的。云计算提供了可供SOA使用的远端云服务,而SOA提供了将云服务组合成满足复杂业务应用需求的方法。与此同时,两者关注点不同,SOA 侧重于采用服务的架构进行系统设计,关注如何处理服务,注重可重用性、敏捷性、松耦合性等;而云计算则侧重于服务的提供和服务的使用,关注如何提供服务,更注重虚拟化、按需动态扩展、资源即服务等。面对云制造中的“云计算”和“面向服务”需求,有必要将两者融合。
参考SOA、云计算体系结构和云制造服务平台,构建如图2 所示的面向云制造服务架构(Service-Oriented Architecture for Cloud Manufacturing,SOA4CM)。该架构(或体系结构)体现了将SOA和云计算融合,并将传统计算资源延伸和拓展到云制造资源。该架构共分为10层:
①制造资源层,包括各种制造资源(模型资源、软件资源、计算资源、存储资源、数据资源、知识资源、制造设备等)和制造能力,物理资源可以通过物联网等实现制造物理资源的互联;②虚拟资源层,通过虚拟化工具将各类制造资源虚拟化,使制造资源的集中管理和使用成为可能,并将SOA/云计算的计算资源延伸和拓展到非常广泛的制造资源;③服务组件层,为服务提供功能实现、认识或者操作;④服务层,定义与业务功能或者业务数据相关的接口,提供各种核心服务,包括原子服务和组合服务;⑤业务流程层,通过匹配、编排,将服务绑定为一个流程,支持用户根据业务需求定义业务流程;⑥表示层(客户层/应用层),用户可以通过不同的终端与制造云服务进行交互,支持用户注册、验证以及任务需求的描述、创建等;⑦服务集成(服务总线)层,提供从服务请求者到正确的服务提供者的中介、路由和传输;⑧业务智能层,定义业务事件和相应的业务规则;⑨基础架构服务层,提供服务监控以及诸如安全、性能和可用性等服务质量(Quality of Service,QoS)的能力,特别是安全问题已经成为阻碍SOA/云计算发展的最主要原因之一,尤其是云制造出现以后,安全问题变得更加突出;⑩云服务运营层,把虚拟化和服务化后的制造资源管理起来,为服务发布、查找与绑定、调度与部署等提供支持,为用户提供按需服务。
图2左侧表示三个参与者(服务提供者、服务请求者和服务注册代理者或服务运营者)以及三个基本操作(发布、查找和绑定)之间的关系。(云)服务提供者通过虚拟化和服务化,将制造资源和制造能力变为云制造服务(简称为云服务或服务)并进行发布,而(云)服务请求者根据业务需求定义一个业务流程,通过(云)服务代理查找所需的服务,并在服务总线、基础架构和云服务运营等支持下,为服务请求者提供按需服务。相比云制造提出时从中间件视角探讨的体系结构,本文提出的SOA4CM 具有如下特点:
图2 面向云制造服务的层次架构
(1)SOA4CM 是从SOA 与云计算相融合及其之间的继承关系发展而来的。如同图1所示的云制造与SOA和云计算之间的继承关系一样,图2所示的SOA4CM 也可以看作是SOA 和云计算的融合以及向云制造服务延伸和拓展的结果。SOA4CM一方面按SOA 规范实现(云制造)服务整合,另一方面按云计算理念对服务进行统一集中的智能化管理和经营,为用户提供可随时获取的、按需使用的、安全可靠的、优质廉价的制造全生命周期服务。
(2)SOA4CM 体现了一个松耦合的层次式架构,将功能方面涉及的资源对象、虚拟化、服务化、业务流程、界面等从服务提供者和服务消费者的角度进行层次化。与此同时,将服务集成、业务智能、基础架构、云服务管理等共用的设施提取出来形成不同的垂直层次,为所有的服务所共有。
(3)SOA4CM 体现了SOA、云计算、物联网和智能科学等技术的融合。其中,SOA为快速构造虚拟化制造服务环境提供了使能技术;云计算技术为制造资源的集约化经营和管理以及服务按需使用等提供了使能技术;物联网技术为制造领域中各类物与物之间的互联和实现制造智慧化提供了使能技术;智能技术为制造智能化提供了使能技术。
(4)SOA4CM 的核心是云服务,它将SOA架构扩展到企业外远端的云服务提供商,可根据业务需求部署相应的资源、服务和应用,并可在广域的网络资源环境下随着业务变化而不断调整,具有动态可扩展性以及高容错性和可靠性,可利用外部几乎无限的资源为企业带来更快的交付和更低的成本。
2 集成开发环境
面向云制造服务架构的开发环境包括集成开发平台和开发工具(development tools)。目前Web服务的主流开发平台有J2EE平台和Microsoft.net平台。本文考虑利用开源软件构建云制造服务开发平台,所以选用开源软件丰富的Java EE(J2EE)平台产品。
Java 2平台分为标准版(Java 2Standard Edition,J2SE)、企业版(Java 2Enterprise Edition,J2EE)和微型版(Java 2Micro Edition,J2ME)。在发行Java 1.5以后,取消其中的数字“2”,J2EE,J2SE和J2ME分别更名为Java EE、Java SE和Java ME。J2SE是Java 2的标准版,主要用于桌面应用软件的编程;J2EE(Java EE)不仅比标准版多了一些类,还包括EJB(enterprise Java bean)和JSF(Java server faces)等,适合企业级应用系统的开发。
开源软件在提供免费的源代码和节省费用的同时,也面临如何从众多开源软件选出合适的软件来构建开发平台的难题。这里选择插件原则是:①轻量级,可嵌入到集成开发环境;②真正意义上的开源软件,免费并提供源代码;③优先选用与开发语言同为Java的开源软件产品。
2.1 集成开发平台
Java EE只是一组规范,而不是产品,其产品由第三方提供,本文选用支持Java EE规范的Eclipse产品。Eclipse是一个开放源代码的、基于Java的可扩展开发平台,其本身只是一个框架和一组服务,用于通过插件组件构建开发环境,还附带了一个标准的插件集,包括Java开发工具(Java DevelopmentTools,JDT)。Eclipse最新发行版为Indigo(3.7)版,但还未得到Apache ODE业务流程引擎的支持,这里选择运行于Window 操作系统下的EclipseHelios(3.6)for Java EE Developers。
尽管Eclipse是使用Java语言开发的,但其用途并不仅限于Java语言,包括C/C++和COBOL等语言插件,都可以安装在它上面,从而形成各种各样的扩展开发工具。对于云制造服务应用问题,单纯利用Eclipse(JavaEE)开发,不但开发效率低,而且难以保证品质。为此,选择一些插件作为云制造服务平台的开发工具。
2.2 插件工具
SOA4MC是一种体系架构,它阐明了一种设计思想和设计原则,在应用中需要用现有的具体技术来实现。SOA的核心是服务(service),服务的实现没有技术限制,可以用各种语言来实现,当前SOA的服务主要利用Web服务技术实现。本文也采用Web服务技术来实现SOA4MC中的服务,并从服务/服务层选用插件工具开始。
Web服务技术使用一系列标准和协议实现相关功能,其基本协议包括简单对象访问协议(SimpleObject Access Protocol,SOAP)、Web服务描述语言(Web Services Description Language,WSDL)和统一描述、发现与集成协议(Universal Description,Definition,and Integration,UDDI)。SOA从Web服务标准得到启发,将SOA 早期模型定义为由服务提供者、服务请求者和服务注册中心三种角色组成的Web架构模型,如图3所示。其中,服务提供者用WSDL描述Web服务,用UDDI向服务注册代理发布和注册Web服务,以便服务请求者发现和访问该服务;服务请求者(消费者)通过UDDI进行查询,找到所需服务后,根据接口契约利用SOAP来绑定、调用这些服务;服务注册中心包含一个可用服务的存储库,为服务请求者查找服务提供者接口。在云制造中,这三种角色被称为云提供端、云请求端、云服务运营商,图2的左侧体现了这三种角色及其交互。
SOAP,WSDL和UDDI被称为第一代Web服务技术规范,是任何基于Web服务技术的SOA 所必需的技术基础,而这些技术又以可扩展标记语言(eXtensible Markup Language,XML)为技术基础。但这些基本技术规范没有考虑安全性和可靠性,需要增加这方面的协议,如WS-Trust,WSSecurity,WS-ReliableMessaging;对复杂的业务场景,需要业务流程执行语言(Web Services BusinessProcess Execution Language,WS-BPEL)对组成业务流程的多个服务进行编排;对于服务管理,需要WS-Manageability等协议。这些规范扩展形成所谓当代(或称为第二代)SOA规范[,统称为WS-*协议族。需要说明的是,由于UDDI并没有获得预期的成功,当前一些服务注册采用LDAP(lightweightdirectory access protocol)、Java命名与目录接口(Java Naming and Directory Interface,JNDI)等其他注册方式。
图3 SOA早期形态模型
服务层是SOA4CM 中最重要的一层,服务接口以服务描述(WSDL描述)的形式展现,起承上启下的作用,服务功能由下层的功能组件实现。对于服务组件,可以使用Java EE中的普通Java(POJO)类和EJB组件实现。Eclipse为Web服务开发提供一套接口和类库,如JAX-WS(Java API for XMLWeb services),JAXB(Java API for XML binding),SAAJ(SOAP with attachments API for Java)等。随着服务组件架构(Service Component Architecture,SCA)及其配套的服务数据对象(Service DataObject,SDO)的SOA规范的推出,极大地简化了服务开发。本文选用开源的Apache Tuscany SCAJava 2.0-Beta3。
Tuscany SCA构建于Web服务系列标准等开放标准之上,扩展了以前用于实现服务的方法,可以用各种语言,如Java,C++和BPEL来构造功能单元或组件,然后通过SOAP,JMS和RMI或其他协议将其暴露为服务,并可将它们组合形成更高级别的服务。此外,Eclipse基金会以Tuscany为基础(子项目),提供一个名为STP(SOA tools platform)的顶级项目,为SOA 应用开发、部署和管理提供了工具。
就前述的SOA4CM 而言,除了服务化功能外,还需要考虑资源虚拟化、业务流程、服务集成、监控和管理等其他方面的实现。其中制造资源虚拟化采用CloudSim(2.1.1版)提供的Java类库并加以拓展来实现,也可使用EJB来开发。CloudSim 是一款用Java语言编写,用于云计算的免费开源软件,但由于局限于云计算的虚拟化和仿真,未能满足加工设备等制造资源的虚拟化以及SOA4CM 建模—开发—整合—部署—运行—管理的全生命周期需求,而且CloudSim 采用命令行工具Ant/Maven编译运行,缺少用户界面和集成开发环境的支持,本文将其集成到Eclipse中;在业务流程层,采用WSBPEL工具来描述和设计流程,具体选用开源业务流程引擎Apache ODE 1.3.5(Orchestration Director Engine),但它本身不自带设计器,要结合EclipseBPEL设计器使用,此外开源的jBPM 也是很好的选择;表示层可用Portal/JSP/JSF等技术来构建;在服务集成层方面,利用企业服务总线(Enterprise Service Bus,ESB)实现,具体选用Apache Synapse 2.0.0开源产品,它不但提供多协议连接、转换、高性能和管理功能,特别是对WS-*系列标准的支持,而且还起到服务中介的作用,兼有代理、缓存、负载均衡/故障转移等功能,此外ServiceMix和Mule等开源的ESB产品也是不错的选择;业务智能层选用开源的JBoss Rules(Drools)规则引擎,从而将那些容易被理解、维护和修改的规则从应用程序代码或业务流程分离出来,进而提升业务的敏捷性;另外,为了设计、管理和监控系统异常状况,如捕获诸如生产流程完工时间延迟、设备不正常或异常趋势等,选用名为Esper的开源ESP(event stream processing)引擎,以实现事件关联性、聚集和分析等功能;基础架构服务管理层,则由Synapse/SCA/ODE/Esper/Eclipse等提供服务监控、管理与QoS等基础服务;云服务运营与管理选用开源的Apache Hadoop。最终选定实现SOA4CM 各功能层的开源插件工具如表1和图4所示。
表1 开源工具的选用
图4 SOA4mc集成开发环境
所选用的插件工具都集成到Eclipse中(如图4)同时需要,安装1.6版本以上的JDK。其中,Tomcat7.0为Web服务提供运行环境,它是Apache-Jarkartr的一个免费、开源的子项目,而Ant/Maven工具起到辅助作用。安装所选定的插件时,往往需要先安装其依赖性插件,此时可由Eclipse的Help菜单上的“Install New Software…”自动安装完成。另外,可进一步结合免费的Google Eclipse插件开发云应用程序,并可上传到Google App Engine(GAE)云应用平台上运行。但GAE主要面向云计算应用,当前还不完善,用于云制造还存在许多局限。
如前所述,SOA4CM 继承了SOA 和云计算的特性。SOA于1996年最先提出,已经形成Web服务和WS-BEPL系列的标准和协议,相对成熟,目前有Tuscany SCA和Synapse ESB等开源产品;而云计算于10年后的2006年才被正式提出来,虽然也有Apache Hadoop开源产品,但版本很低,还未成熟,只是云计算的初级实现,更没有形成标准规范。云制造发展有赖于云计算等相关技术的发展,反过来又促进云计算技术的发展。图4中的各层次与图2的各层次有一定对应关系,通过CloudSim虚拟化和Tuscany SCA服务化,解决松耦合、可重用的、可互操作的服务开发问题,并通过Apache ODE解决不同业务问题的Web服务联合起来执行的难题,以Synapse企业服务总线为中心实现不同服务之间的通信与整合。当业务需求变化时,流程中不符合要求的服务组件很容易被其他符合要求的服务组件替代,也可由已有服务通过SCA生成所需的新服务而不必从头开发,同时这种修改或调整限定于最小的范围,不会因某一层次变化引起其他层次的变化,从而实现业务服务的灵活装配、业务流程的定制和业务服务的快速集成,而Drools和Esper进一步增强了业务的敏捷性,Hadoop为资源集约化管理和服务交付提供支持。
下面以多工序生产问题为例,从简单到复杂展示集成开发环境(包括插件工具)的具体应用。
3 开发应用示例用
Eclipse开发Web应用程序(工程),生成一个部署描述设置文档web.xml,而在安装了云插件(如Hadoop插件或Google的GAE 插件)的Eclipse环境中开发云制造(云计算)应用程序,与Web应用程序开发类似,同样需要web.xml,此外,还需要额外的设置文档。如开发Hadoop应用程序,就需要额外的core-site.xml,hdfs-site.xml,mapred-site.xml设置文档,又如开发Google的GAE应用程序,还需要额外的appengine-web.xml设置文档,以便让系统清楚如何部署和运行云应用程序。云制造以服务(“一切皆为服务”)的方式提供资源,并为这种服务方式提供按需即取手段,因此如何实现制造资源服务化(含虚拟化)和服务按需即取(包含服务发现、调度和部署等)就成为关键问题。如前所述,SOA 是SOA4CM 的技术基础,Web服务是目前实现SOA/SOA4CM 最适宜的技术,因此SOA4CM 的服务开发可基于已有SOA 规范和Web服务技术进行,不同的是将所开发的服务放置于云端而形成云服务,然后通过云设置文档(如appengine-web.xml等)来管理云服务。
如前所述,生产加工即服务(FaaS),如何按需选择服务来组织生产是云制造面临的一个重要问题。现用前述的云制造服务开发工具,以一个零件的简单加工为例探讨FaaS的应用。在这个加工流程中,该零件(J1)有O11,O12和O13三个工序,按工艺先后顺序要求分别在机器1、机器2和机器3上加工2min,3min和5min,如图5所示。
图5 零件加工工序
要实现该流程加工,需要将3台机器服务化,而要实现服务化又首先需要将加工设备(Machine)虚拟化。这里利用CloudSim创建各个机器的虚拟机,并以Java 类表示(如对Machine1 机器,建立Machine1Service.Java),此时只要在该Java类上手工添加“@WebService”标注就可将其变成Web服务。更为方便的是,通过JAX-WS的创建,Web服务向导自动将其变为Web服务,包括可生成相应的Web服务程序和客户端程序,以及发布和监控Web服务,如图6所示。图6所示的情景是已生成了Machine1和Machine2的Web服务,正在选项生成Machine3的Web服务中,选择好后点击“Finish”按键就会生成Java类对应的wsdl和配置文件,并可发布到Tomcat中,同时会生成调用服务的客户端。这里生成的Web服务是为BPEL流程调用服务做准备。
通过Eclipse BPEL 设计器将经服务化后的Machine1,Machine2和Machine3(采用WSDL 定义服务,三者分别用Machine1Service.wsdl,Machine2Service.wsdl和Machine3Service.wsdl表示)按预定加工顺序连接起来,形成所需的业务流程,如图7所示。其中,receive(图中为receiveInput)表示接收请求输入,是整个BPEL流程的起点;Assign表示赋值,如AssignMachine1表示对Machine1赋值;Invoke表示调用服务,如InvokeMachine1表示调用Machine1服务;reply(图中为replyOutput)表示整个BPEL流程终点,把响应结果返回给服务请求者。类似地,BPEL流程本身也可生成一个Web服务,然后部署到Apache ODE服务器,此时请求者可调用该流程来实现预定功能。
图6 由Web服务想到创建Web服务
图5给出的简单加工例子旨在展示,只用到其中的CloudSim,Java EE 的JAX-WS 和ApacheODE等插件或工具。对于更为复杂的情形,例如图5所示的零件加工完成后,还需要运到另一热处理车间进行热处理,或者需要用不同于Java的其他语言编程,或者集成历史遗留应用系统,此时采用Tuscany SCA 就显得更方便并具有优势。图8所示为用Tuscany SCA 将图5所示的工序组合成一个称为Machining服务的子流程,并封装成Web服务方式,再与热处理服务(Heattreating)结合。
图7 BPEL表示的实例业务流程
图8 用Tuscany SCA开发图5所示的加工服务程序
图5只是单个零件的加工情形,该流程以串行的方式调用3台加工机器,而实际流程还可能有并行处理的机器和循环调用的机器。一个由4个工件(J1,J2,J3和J4)和6台机器(M1,M2,…,M6)组成的称为FT46的柔性作业问题,如表2所示,其中J1有下划线的数据对应图5所示的加工情形。
表2 FT46问题的时间表
对于表2所示的柔性作业加工调度问题,每个工件的每道工序可以由一台或者多台机器为其加工,因此每个工件可能有多条加工路径。在相同的工序中,由于其所对应的可加工机器的加工性能不同,同一道工序在不同机器上的加工时间也不同,不同的加工路径对应着不同的加工时间,需要引入智能技术来求解作业调度问题。使用Drools规则引擎,可以按先来先服务(First Come First Served,FCFS)或称先入先出(First In First Out,FIFO)的规则进行调度,但是因为车间作业调度问题属于NP-hard问题,基于规则的专家系统并不能保证系统全局优化,所以复杂车间作业调度问题往往采用遗传算法和粒子群优化算法等智能优化算法求解。
目前,生产调度研究主要针对静态生产环境中的调度优化,多数集中在以Job-Shop问题为代表的基于最小化完工时间的静态车间调度问题上。静态调度要求生产中的所有零件信息和车间状态是明确的,一旦生产计划确定,车间就按计划生产,但加工的不确定性(如故障、延误)使得这种既定生产作业难以实施,因此需要根据系统中工件的状况不断进行重新调度,即进行动态调度,此时可用Esper监控和管理服务或流程中的活动情况。但是因为云制造环境的高度动态性、分布性和自治性,而且不像传统生产调度那样以某一性能指标为目标,而是以包括完工时间、成本和可靠性等在内的QoS为目标来选择和调度制造资源,所以云制造资源调度机制与传统车间作业调度问题有很大不同,其复杂性更高。
在云计算产品中,虽然各个软件供应商都有自己的资源分配与任务调度模式,但是并没有形成统一的标准和规范,当前流行的云计算调度模型是Google于2004年提出的MapReduce,其模拟开源实现包括在Apache Hadoop项目中,Amazon,IBM,Facebook和Yahoo等许多著名IT公司都采用Hadoop构建自己系统。Hadoop MapReduce默认使用FIFO调度算法,它根据优先级高低和到达时间的先后选择被执行的作业,但存在资源利用率不高等问题。FIFO这样的作业调度算法已在传统制造车间获得了应用。虽然Hadoop还可提供公平调度算法(fair scheduler)和容量调度算法(capacityscheduler)以改善FIFO 的不足,但仍存在一定的缺陷,如未能很好地考虑不同作业需求差异和节点资源实际使用情况,资源利用率有待进一步提高,资源配置仍是云计算面临的一大挑战。资源配置(资源调度)无疑也是云制造面临的一大挑战和关键问题,但是因为包括MapReduce在内的云计算调度模型是针对云计算资源提出来的,所以需要根据云制造资源的特点,结合云计算调度算法和物联网感知技术,研究适用云制造的作业调度策略和资源映射方式,尤其要关注那些可为制造资源动态配置(动态调度)提供新思路的云计算容错机制和负载均衡等理念,这些内容将另文深入探讨。需要说明的是,真正实现云制造将任重而道远。
当使用SOA4MC 来开发实际企业应用程序时,除了考虑服务功能需求外,还需要考虑整个系统的性能问题、可用性、安全性、可靠性、容错性和可扩展性等非功能性需求问题(即QoS问题)。采用ESB集成模式是满足这些非功能性需求的有效手段,所选用的Synapse ESB 支持HTTP,SOAP,SMTP,JMS,FTP,POP3,SMTP,MTOM 等传输协议、许多Web服务规范(WS-*)和QoS,如WS-Addressing,WS-ReliableMessaging,WS-Security 和WS-Policy等,几乎覆盖了全部的基础特性。与图7和图9a所示的基于服务编制的流程集成模式将各个服务直接集成有所不同,图9b(该图省略了底层的制造资源及其虚拟化层)所示的ESB集成模式将企业所执行的业务活动、流程或规则视为服务,采用总线来管理和简化应用之间的集成拓扑结构,ESB起连通性和服务中介的作用,同时具有服务注册等功能,从而实现不同形式的协议请求(如SOAP,SMTP,JMS,FTP等)和不同形式的服务或程序(包括Web服务、流程服务和规则服务,以及遗留应用程序和数据库等)的集成。
图9 服务集成的两种模式
4 结束语
本文在抽象分析了SOA、云计算和云制造的基础上,提出SOA4MC,并以Eclipse为集成开发平台,选择CloudSim,Tuscany SCA/STP,ApacheODE,Apache Synapse,Drools,Esper,Hadoop等开源插件,搭建了面向SOA4MC的开发环境,并通过从简单的串行实例到复杂的柔性加工实例,展示了不同应用场景需要用到不同插件的情形。
SOA4MC为集成开发环境提供了蓝图,而集成开发环境是实现SOA4CM 的工具和途径,这种工具和途径不是唯一的,这里采用广泛使用的Web服务技术和常用开源软件工具来实现。SOA4MC通过物联网实现物理设备的智能接入,并通过虚拟化和服务化将计算资源延伸和拓展到制造资源,同时兼有SOA和云计算的特性来满足云制造按需应用的要求:一方面按面向服务原则通过松耦合、可重用、可互操作的服务构建云制造应用;另一方面按云计算理念对制造资源进行集约化经营管理,以更高质量、更低成本的服务交付模式为用户提供按需即取的服务。
在集成环境或应用程序的开发中,采用开源软件不但节省了软件费用并加快了开发进度,而且研究这些开源代码有益于启发研究思路和博采众家之长。在具体应用中,并非一定要用到集成环境中的所有开发工具,也可能因应用程序的需求,还要加入其他插件工具,由于所搭建的集成开发环境具有开放性和可伸缩性,可根据应用需求和问题的复杂性按需选用或拓展。