所謂MES系統(tǒng)架構,是指MES系統(tǒng)的基礎組織,包含各個構件、構件互相之間與環(huán)境的關系,以及指導其設計和演化的原則。MES系統(tǒng)架構主要指MES的軟件架構或IT架構。MES作為大型軟件系統(tǒng),其系統(tǒng)架構對于MES系統(tǒng)的設計開發(fā)、應用部署以及升級維護等均具有十分重要的影響?;谙冗M架構的MES系統(tǒng)具有開放式、客戶化、可配置、可伸縮、易集成等特性,可支持針對企業(yè)業(yè)務流程的變更或重組進行系統(tǒng)重構和快速配置,以適應現(xiàn)代制造環(huán)境的變化。
1.基于改進C/S結構與組件技術的三層系統(tǒng)架構
MES軟件系統(tǒng)一般由三大部分組成,即用戶界面部分、業(yè)務邏輯部分和數(shù)據(jù)儲存部分。對于早期的專用MES系統(tǒng)而言,上述三大部分是緊密結合、密不可分的;對于集成化MES系統(tǒng),為了保障系統(tǒng)各功能之間的數(shù)據(jù)集成性,將數(shù)據(jù)集中到服務器上,實現(xiàn)數(shù)據(jù)共享,形成了具有兩層結構的C/S架構;發(fā)展到可集成MES階段,為了實現(xiàn)系統(tǒng)的可集成性與可重構性,將三部分獨立開來,并進一步與組件技術相結合,形成了如圖1所示的基于改進C/S結構與組件技術的MES三層系統(tǒng)架構。其中,表示層用于界面引導,接受用戶輸入,并向應用服務器發(fā)送服務請求,顯示處理結果;業(yè)務邏輯層用于執(zhí)行業(yè)務邏輯,向數(shù)據(jù)庫發(fā)送請求;數(shù)據(jù)存儲層用于執(zhí)行數(shù)據(jù)邏輯,運行SQL或存儲過程。
圖1 基于改進C/S結構與組件技術的MES三層體系統(tǒng)架構
上述基于改進C/S結構與組件技術的MES三層系統(tǒng)架構的顯著優(yōu)點是實現(xiàn)了MES業(yè)務邏輯與表示層的分離,并可實現(xiàn)功能組件的重用,從而大大提高了MES系統(tǒng)的開發(fā)效率。基于組件技術開發(fā)的MES具有良好的可配置性、可重用性、可擴展性和可集成性,可以較好滿足現(xiàn)代制造企業(yè)對MES的需求。但上述C/S架構也有其明顯的局限性。首先,該系統(tǒng)架構下的MES組件是面向功能的,粒度較小,不能實現(xiàn)系統(tǒng)與制造業(yè)務的良好對應。其次,MES系統(tǒng)客戶端與服務器端的實現(xiàn)必須采用相同的構件體系,且組件須是同構技術,從而制約了系統(tǒng)自由擴充的實現(xiàn)。第三,基于該系統(tǒng)架構的MES系統(tǒng)往往只能部署在局域網中,無法跨網運行,限制了異地制造協(xié)同的實現(xiàn)。最后,基于該架構的MES系統(tǒng)雖然更新業(yè)務邏輯或數(shù)據(jù)變得容易,不需要在客戶端機器上重新安裝新版本的用戶界面,但是客戶端跟業(yè)務邏輯的關系仍較緊密,如果表示層軟件發(fā)生變動,仍需要重新安裝客戶端?;谏鲜霾蛔悖霈F(xiàn)了基于B/S結構的MES分布式系統(tǒng)架構。
2.基于B/S結構的MES分布式系統(tǒng)架構
B/S結構(Browser/Server,瀏覽器/服務器模式),是WEB興起后的一種網絡結構模式,WEB瀏覽器是客戶端主要的應用軟件。在某些制造業(yè)的生產車間,生產現(xiàn)場條件相對比較惡劣,如果采用C/S結構的MES系統(tǒng),對系統(tǒng)硬件的配置要求較高,成本會大幅度增加。因為相比C/S結構而言,采用B/S架構MES不用像C/S結構的MES那樣在安裝和升級時,需要到每一臺客戶端進行客戶端的配置,只需在服務器上進行一次安裝升級即可。在客戶端只需瀏覽器,無需額外的配置,對客戶端計算機配置要求低,客戶無需再投入資金購買配置高的計算機。這樣使得軟件的維護和升級較為方便,可實現(xiàn)系統(tǒng)的無縫升級,大大降低了系統(tǒng)的維護成本。此外,由于B/S架構操作性強,用戶可以在任何一臺裝有瀏覽器的主機上使用系統(tǒng),而不需要專門的客戶端軟件,克服了傳統(tǒng)C/S結構安裝和維護困難的不足。而且,B/S實現(xiàn)了C/S結構不能實現(xiàn)的很多功能,如遠程操作和分布式操作等。如此,用戶可在外網訪問到MES系統(tǒng)而不局限于只能在內網,從而大大提高辦公效率。
基于B/S結構的MES分布式系統(tǒng)架構如圖2所示。該架構亦由三層組成:第一層是表示層,由基于Web瀏覽器的標準客戶端和基于專用軟件的專業(yè)客戶端組成,用于實現(xiàn)用戶請求與人機對話;第二層是應用邏輯層,是由Web服務器采用HTTP協(xié)議來處理表示層發(fā)送過來的用戶請求,由相應的功能組件來實現(xiàn)客戶的具體應用要求。在應用邏輯層,MES的功能組件以軟構件的形式集成在系統(tǒng)框架(軟總線)中,并通過應用服務器對外提供MES應用服務;第三層是數(shù)據(jù)庫層,包括存儲歷史數(shù)據(jù)的關系數(shù)據(jù)庫和存儲實時數(shù)據(jù)的實時數(shù)據(jù)庫。該層也可以是一個抽象的數(shù)據(jù)層,包括各種數(shù)據(jù)資源、數(shù)據(jù)庫文件、XML文件,以及圖標程序文件等。應用邏輯層在執(zhí)行業(yè)務邏輯的過程中,向數(shù)據(jù)庫層發(fā)送數(shù)據(jù)請求,由數(shù)據(jù)庫層執(zhí)行數(shù)據(jù)邏輯,運行SQL或存儲過程。
圖2 基于B/S結構的MES分布式系統(tǒng)架構
上述基于B/S結構的MES系統(tǒng)架構具有如下特點:(1)基于Web技術,采用HTTP與HTML,使得表示層得以集中控制,并使用客戶端來顯示數(shù)據(jù)、與用戶互動,軟件變更時只需在服務器上進行一次升級安裝即可,而不需要重新安裝整個客戶端應用軟件。(2)允許更靈活地部署表示層、業(yè)務邏輯層與數(shù)據(jù)存取層。允許將業(yè)務邏輯跨不同服務器分布,將表示層與業(yè)務邏輯層混合在一起,或將業(yè)務邏輯層與數(shù)據(jù)層相結合。(3)系統(tǒng)可擴展性好。(4)系統(tǒng)硬件成本低。(5)支持外網訪問、遠程操作、分布式操作。
但B/S架構存在通信開銷較大、安全性差和響應速度慢等不足。隨著互聯(lián)網的高速發(fā)展和服務器性能的顯著提高,B/S結構的性能速度有了很大改善,從而使得這種MES架構的應用也越來越廣泛。
3.基于SOA面向服務的MES系統(tǒng)架構
SOA(service oriented architecture,面向服務的系統(tǒng)架構)是一種企業(yè)應用體系架構,該架構提供了一種編程模型,使得分布部署在網絡上的服務組件能夠被其他應用程序或服務發(fā)現(xiàn)和調用。如圖3所示,SOA中的服務需求者是一個應用程序、一個軟件模塊或需要服務的另一個服務。它發(fā)起對注冊中心中服務的查詢,通過傳輸綁定服務,并且執(zhí)行服務功能。服務使用者根據(jù)接口契約來執(zhí)行服務。服務提供者是一個可通過網絡尋址的實體,它接受和執(zhí)行來自使用者的請求,它將自己的服務和接口契約發(fā)布到服務注冊中心,以便服務使用者可以發(fā)現(xiàn)和訪問該服務。服務注冊中心則是是服務發(fā)現(xiàn)的支持者,它包括一個可用服務的存儲庫,并允許感興趣的服務使用者可以發(fā)現(xiàn)和訪問該服務。
圖3 面向服務的系統(tǒng)架構
“服務”是SOA中的關鍵概念,成功實現(xiàn)SOA的關鍵是為可重用庫中的每個服務確定正確的設計與功能,且確??芍赜玫能浖张c業(yè)務流程完全一致。SOA是基于面向對象技術和組件技術之上更高級別的抽象。基于SOA的系統(tǒng)將系統(tǒng)功能打包成一個可互操作的服務套件,這種服務套件可用于多個不同的系統(tǒng)或多個業(yè)務領域。服務之間具有松耦合、粗粒度、位置和傳輸協(xié)議透明的特性。
SOA的實現(xiàn)可以基于CORBA、Web Services等技術,目前Web Services是實現(xiàn)SOA的重要手段,其信息可以被不同形式的客戶端所使用。Web Services是基于網絡的、分布式的模塊化組件,它執(zhí)行特定的任務,遵守具體的技術規(guī)范,這些規(guī)范使得Web Services能與其他兼容的組件進行交互操作。Web Services建立在開放標準和獨立于平臺的協(xié)議之上,通過HTTP(超文本傳輸協(xié)議)使用SOAP(簡單對象使用協(xié)議),以便在服務提供者和消費者之間進行通信。服務通過WSDL(Web服務描述語言)定義的接口來公開,WSDL的語義用XML來定義。UDDI(一種用于描述、發(fā)現(xiàn)、集成Web Service的技術)是一種與語言無關的協(xié)議,用于和注冊中心進行交互和查找服務,通過Web服務的組合和編排可以實現(xiàn)企業(yè)的業(yè)務流程。
圖4所示為基于 SOA 面向服務的MES系統(tǒng)架構?;赟OA的架構設計以服務為關注點,在傳統(tǒng)的MES三級分層架構模型的基礎上主要增加了服務層,通過服務化的封裝把MES系統(tǒng)內部具體的業(yè)務邏輯進行屏蔽,僅以服務的形式暴露出用戶可用的業(yè)務活動的集合,從而提高服務及服務內部業(yè)務邏輯的重用,可以通過對粗粒度松散耦合的服務進行組合和部署就能構造出復雜的系統(tǒng)邏輯。結合MES系統(tǒng)功能模塊的定義,將MES各功能模塊封裝成系統(tǒng)服務放置于系統(tǒng)應用層,每個服務均由服務層、邏輯層和數(shù)據(jù)訪問層組成。
圖4 基于SOA面向服務的MES系統(tǒng)架構
綜上所述,基于SOA面向服務的MES系統(tǒng)架構具有如下特點:
(1)服務化。在SOA架構下,服務是構建MES的基本單元,服務的請求、發(fā)布、查找、組合運作是MES系統(tǒng)的基本運作模式。車間所有制造資源、軟硬件條件、制造知識都被封裝成服務。車間生產運作或MES運行過程具體體現(xiàn)為制造服務的匹配、選擇、組合、執(zhí)行、監(jiān)控和重構。
(2)集成化。基于語義Web服務,采用基于語義網關的系統(tǒng)集成框架,消除系統(tǒng)之間集成對象在語法結構和語義層面的異構性,實現(xiàn)系統(tǒng)的無縫集成。
(3)功能擴展。MES系統(tǒng)的應用范圍從單一車間擴展為網絡環(huán)境下多車間制造過程的協(xié)同運作管理。(支持網絡化協(xié)同制造)
(4)開放性。MES系統(tǒng)的構建基于面向服務技術,服務之間的松散耦合性使系統(tǒng)具有良好的可擴展性,各類制造服務和功能能夠方便地按需加入到MES系統(tǒng)。
基于SOA面向服務的MES系統(tǒng)的物理架構及系統(tǒng)部署方案如圖5所示,它描述了系統(tǒng)中軟件和硬件的物理架構。
圖5 基于SOA面向服務的MES系統(tǒng)的物理架構
(1)客戶計算機:部署客戶端應用程序,提供用戶訪問系統(tǒng)服務的界面接口,用戶通過預裝瀏覽器訪問遠程服務器上的Web應用,或者使用智能客戶端應用程序與遠程應用服務器進行交互。
(2)Web 服務器:該服務器用于部署Web應用或Web Services。Web服務器是可以向發(fā)出服務請求的瀏覽器提供文檔的程序。當Web瀏覽器(客戶端)連到服務器上并請求文件時,服務器將處理該請求并將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。服務器使用HTTP(超文本傳輸協(xié)議)與客戶機瀏覽器進行信息交流。
(3)應用服務器:系統(tǒng)的服務層、業(yè)務邏輯層和數(shù)據(jù)訪問層都部署在該節(jié)點服務器之上,用于處理核心業(yè)務邏輯。
(4)數(shù)據(jù)庫服務器:使用獨立的數(shù)據(jù)服務器部署數(shù)據(jù)庫應用,為系統(tǒng)提供數(shù)據(jù)的存儲功能,保存系統(tǒng)中產生的數(shù)據(jù)信息。
4.MES微服務架構
傳統(tǒng)的服務應用的開發(fā)方式是將整個服務應用的數(shù)據(jù)庫、接口、頁面等進行分層設計、統(tǒng)一開發(fā),然后逐層實現(xiàn)。在這些模塊或接口中,只要有一個沒有完成開發(fā),那么整個應用系統(tǒng)將無法正常運行。SOA提出在對軟件進行架構設計時,把整個應用服務根據(jù)業(yè)務細化成多個獨立的小的服務,即低耦合及面向服務流程的思想。但是在SOA的架構中,企業(yè)服務總線(EBS)仍處于非常重要的位置,致使整個系統(tǒng)的SOA架構仍很難實現(xiàn)完全的面向服務以及完全的組件化,SOA的應用存在一定的局限性。
微服務架構(micro service architecture,MSA)是在2012年被提出的,其思想本質上和SOA一脈相承,是SOA的變體,它把SOA的理念進行了進一步的升華。MSA的核心思想是在系統(tǒng)設計開發(fā)階段,將單個應用劃分為一系列微小服務來實現(xiàn)系統(tǒng)的所有功能。MSA是一種云原生架構方法,其中單個應用程序由許多松散耦合且可獨立部署的較小組件或服務組成。這些服務通常有自己的堆棧,包括數(shù)據(jù)庫和數(shù)據(jù)模型;通過REST API,事件流和消息代理的組合相互通信;它們是按業(yè)務能力組織的,分隔服務的線通常稱為邊界上下文。相比于SOA,MSA有如下特點:
(1)MSA強調去ESB、去中心化、分布式,所以MSA能帶來更大的靈活性,為開發(fā)系統(tǒng)提供更加輕量級、效率更高的設計模式。而SOA還是以ESB服務總線為核心,MSA則使用輕量級協(xié)議,如HTTP、REST等。數(shù)據(jù)存儲層面,SOA是共享數(shù)據(jù)存儲,MSA則是每個微服務有獨立的數(shù)據(jù)存儲。
(2)從劃分服務粒度而言,MSA側重于服務劃分的細粒度、可重用性,每個方法都可以成為一個獨立的微服務,每個微服務負責明確的任務,并且將處理任務的結果以輕量級API的形式返回給外部;相比之下,SOA對服務的劃分沒有這么細致,主要是根據(jù)MES的業(yè)務功能來劃分服務,以減少服務數(shù)量,簡化服務調用以及服務管理。
(3)在軟件開發(fā)模式上,SOA注重共同治理和標準,MSA則更注重團隊協(xié)作和自由選擇,團隊可以為不同的組件使用不同的堆棧,可以更輕松地更新代碼。SOA的目標應用程序服務的可重用性,重點關注業(yè)務功能重用,當系統(tǒng)改變時需要修改程序;MSA則專注于解耦,更關注邊界上下文,系統(tǒng)的改變是創(chuàng)建一個新的服務。MSA的組件可以彼此獨立地進行縮放,從而減少了因必須縮放整個應用程序而產生的浪費和成本。
(4)從部署方式上,MSA應用Docker技術不依賴于任何服務器和數(shù)據(jù)模型,是一個可自動化部署的全棧應用,每個微服務都運行在自己的進程里。而SOA則通過不同層進行打包,比如展現(xiàn)層打包war包,業(yè)務層打包為jar包等。
MES微服務架構如圖6所示。該架構主要由表示層、微服務管理層、微服務層和數(shù)據(jù)庫層組成。
圖6 MES微服務架構
(1)微服務層:主要提供MES業(yè)務功能所需要的所有獨立的微服務,包括制造過程管理微服務、文檔管理微服務、日志管理微服務等。每個微服務可能有自己的數(shù)據(jù)庫或者多個微服務公用一個數(shù)據(jù)庫。每個微服務需要對外提供輕量級API接口。
(2)微服務管理層:通過微服務管理層來完成對微服務的管理以及處理邏輯,包括微服務網關、微服務注冊與發(fā)現(xiàn)、微服務接口與微服務代理等。當微服務啟動時,會自動將其信息注冊到服務注冊表中,比如每個服務的IP和端口。當微服務客戶端表示層發(fā)出請求時,將請求發(fā)送到微服務網關中,微服務網關讀取請求數(shù)據(jù),并從服務注冊表中獲取對應服務的信息(IP與端口)。最后微服務網關主動去調用下面對應的微服務。
(3)微服務客戶端表示層:主要是通過微服務管理層中相應MES業(yè)務模塊的服務代理向微服務服務端發(fā)送請求,經過微服務管理層內部處理后再將請求傳遞給相應模塊服務的服務接口進行MES服務端處理,完成后將相應信息按照相反順序依次傳遞給MES客戶端,這種傳遞一般都是通過調用API來實現(xiàn)的。
相比于傳統(tǒng)的單體架構,基于微服務架構的MES實現(xiàn)功能服務化,在系統(tǒng)設計開發(fā)、應用與維護等方面具有明顯優(yōu)勢,其設計開發(fā)模式是對現(xiàn)有復雜大型單體應用架構以業(yè)務為單元進行拆分,每個拆分的微服務應用都可以單獨部署和測試,可以采用單獨的技術架構、獨立的數(shù)據(jù)存儲、獨立的開發(fā)運營團隊支撐,快速以微服務應用為單位進行彈性擴展,通過降低各個業(yè)務單元之間的耦合關系以簡化開發(fā)過程,降低開發(fā)成本。此外,MES微服務架構支持工業(yè)云商業(yè)新模式,并提供廣泛的移動化支持。