引言
雖然我國已經成為一個全球制造業大國,但整體制造技術水平不高,生產效率和產品附加值相對較低,而且正面臨日益突出的資源和環境約束,生產方式迫切需要轉型。面對我國制造業轉型和升級的需求,急需利用包括信息技術在內的高新技術對制造業進行改造提升。新一代信息技術的發展,特別是近來興起的云計算(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.guhuozai8.cn/
本文標題:面向云制造服務架構及集成開發環境(上)