引言
虽然我国已经成为一个全球制造业大国,但整体制造技术水平不高,生产效率和产品附加值相对较低,而且正面临日益突出的资源和环境约束,生产方式迫切需要转型。面对我国制造业转型和升级的需求,急需利用包括信息技术在内的高新技术对制造业进行改造提升。新一代信息技术的发展,特别是近来兴起的云计算(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集成开发环境
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:面向云制造服务架构及集成开发环境(上)