楊建新,姚志強,宋旭杰,王 博,袁 野
(1.中國兵器工業(yè)信息中心,北京 100089;2.北京北方車輛集團有限公司,北京 100072)
智能制造作為中國制造業(yè)轉型升級的重要戰(zhàn)略方針,已經得到了從國家到地方的全方面支持,整個制造業(yè)的產業(yè)生態(tài)正在發(fā)生急劇變化[1]。車間生產管控系統(tǒng)作為實現(xiàn)數字化、自動化、網絡化生產的軟件平臺,在整個智能制造技術體系中占據著重要的地位和作用。企業(yè)想要在復雜的市場競爭中獲得長期生存和長遠發(fā)展的能力,除了提供優(yōu)質的產品,還需要具有先進的生產設備以及良好的數字化生產管理水平,這是影響公司生產力的基本要素,也是生產高質量產品的重要條件之一[2-3]。隨著個性化定制生產逐漸成為制造業(yè)新的發(fā)展趨勢,企業(yè)的業(yè)務場景越來越復雜,傳統(tǒng)的單體架構、SOA架構已經很難滿足互聯(lián)網技術的發(fā)展要求。
基于此,優(yōu)化傳統(tǒng)的車間生產管控系統(tǒng)技術架構,提升平臺的敏捷性、可擴展性、維護性以及容錯性,已成為眾多生產企業(yè)的共性需求。因此,為提升離散制造車間生產管控系統(tǒng)的可靠高效服務能力,本文采用先進的微服務架構思想[4-5],提出了一種基于微服務架構的生產管控系統(tǒng)設計方法。該系統(tǒng)將原來業(yè)務服務按照業(yè)務領域劃分為獨立的服務單元,每個服務之間相互獨立,服務之間使用輕量級的協(xié)議進行通信,從而保障系統(tǒng)的高可擴展性。通過實際應用表明,本文所設計應用系統(tǒng)能夠彌補傳統(tǒng)架構的不足,可滿足用戶靈活多變的業(yè)務需求。
1.1.1 單體架構
在單體結構模式下,軟件所有功能代碼都集中在一起,將所有業(yè)務模塊及數據庫封裝成一個WAR包或JAR包,直接部署到服務器中運行[6]。這種模式對開發(fā)而言結構簡單,方便部署和調試。由于各個功能模塊的耦合程度高,隨著企業(yè)業(yè)務需求的擴展與變化,導致單體式的應用系統(tǒng)變得越來越臃腫,造成可維護性低、開發(fā)速度緩慢、難以擴展等問題。極端情況下,單一業(yè)務模塊發(fā)生變更會造成整個系統(tǒng)重新開發(fā),造成極大的浪費。單體架構如圖1所示。

圖1 單體架構
1.1.2 SOA架構
SOA架構(Service-Oriented Architecture),即面向服務的架構[7-8]。不同于單體架構,SOA架構(見圖2)將應用系統(tǒng)的業(yè)務功能模塊拆分成多個細粒度、獨立可重用的服務模塊,并為各服務單元提供了統(tǒng)一的接口和通信規(guī)范,通過在企業(yè)服務總線對服務組合編排,實現(xiàn)對應用系統(tǒng)解耦。同時簡化了復雜的業(yè)務流程,可以根據業(yè)務需要從不同入口進行處理,提高了系統(tǒng)調度的靈活性。然而,企業(yè)服務總線關注的是解決異構系統(tǒng)集成問題,并沒有針對一個大型應用系統(tǒng)模塊劃分與組合提供具體解決方案,與此同時企業(yè)總線往往需要花費巨資才可實現(xiàn)。

圖2 SOA架構
1.1.3 微服務架構
微服務架構是在SOA框架基礎上的進一步優(yōu)化,解決了SOA框架過度依賴于企業(yè)服務總線的問題,是一個真正意義上去中心化的分布式架構[9]。微服務的服務拆分遵循高內聚低耦合的原則,將企業(yè)應用拆分解耦成為功能獨立的一系列服務實體,各個服務之間是不同的進程,不管是在開發(fā)的過程中還是在部署更新時,相互之間沒有任何依賴,同時服務之間的通信也不局限于接口的規(guī)范和約定,有效地解決了SOA架構過于集中化的問題。微服務架構中每個獨立的服務之間沒有任何關系,不同的業(yè)務之間是完全分離的,任意服務部署更新并不影響其他服務,依然可以獨立正常運行。因此,采用微服務架構設計的軟件產品交付更加方便,容易達到快速開發(fā)和部署系統(tǒng)的目的。典型的微服務框架流程圖如圖3所示。

圖3 微服務架構
單體架構、SOA架構與微服務架構在組件大小、耦合程度、團隊架構等方面的對比見表1。

表1 單體架構、SOA架構、微服務架構對比
微服務的特性使其在軟件系統(tǒng)設計與研發(fā)應用中具有一定的優(yōu)勢,包括如下幾個方面[10]。
1)系統(tǒng)易擴展。
微服務的業(yè)務獨立、高內聚、低耦合使其在開發(fā)、維護和部署上具有優(yōu)勢,也使微服務架構較容易擴展。系統(tǒng)以業(yè)務功能為模塊細粒化成一個個獨立、專注的功能組件,每一個微服務是對單一職責的業(yè)務功能的封裝,只專注于單一功能,微服務保證了系統(tǒng)在快速變化的業(yè)務環(huán)境中,根據需要快速調整服務的能力。在增加業(yè)務功能時,微服務架構只需要增加微服務節(jié)點,并調整關聯(lián)的微服務節(jié)點的調用配置便可滿足業(yè)務需求。
2)技術多樣性。
由于微服務獨立部署,每個微服務不僅可以根據自身的業(yè)務需求研發(fā)團隊的特點進行技術和架構的選型,而且可以由不同的語言基于不同的平臺異構開發(fā),通過定義良好的接口和清晰的服務范圍,使微服務間協(xié)同的復雜度能夠簡化。
3)較高容錯性。
由于每一個微服務都是獨立運行的,通過采取合理的方案,在微服務架構中可以實現(xiàn)更好的故障隔離。系統(tǒng)發(fā)生故障時,傳統(tǒng)架構需要進行整個系統(tǒng)的修復,而微服務架構僅僅需要將有問題的服務進行變更或停止,其他服務可通過熔斷機制實現(xiàn)應用層面的容錯。
4)自動化部署。
在微服務架構中,每個服務都圍繞業(yè)務構建,擁有獨立的業(yè)務邏輯、數據源和適配器,且可發(fā)布服務接口給其他微服務和客戶端應用使用,實現(xiàn)獨立的可擴展自動部署機制,運行在自己的進程中,采用HTTP API輕量化機制進行相互通信,服務之間互相協(xié)調,互相配合,為用戶提供最終價值。
隨著微服務體系結構的不斷發(fā)展及成熟,微服務框架已逐漸成為企業(yè)應用系統(tǒng)從傳統(tǒng)架構轉型到微服務架構的首選。微服務框架通常由服務注冊與發(fā)現(xiàn)、路由、負載均衡、服務網關、分布式消息傳遞和服務容錯等核心部件組成。當前較為主流的微服務框架有Dubbo、Motan、gRPC和Spring Cloud等4種,根據服務調用方式以及功能特色可將它們分為RPC(Remote Procedure Call)型微服務框架和RESTful微服務框架2種[11],這些框架的基本特征比較見表2。

表2 微服務框架基本特征比較
經過技術對比,選擇Spring Cloud作為本項目開發(fā)的微服務應用框架。Spring Cloud是基于Spring Boot框架發(fā)展而來的[12],本質上是一種RESTful的微服務框架,具有高質量、穩(wěn)定性、可持續(xù)性、便捷性等特性。Spring Cloud提供了一系列分布式基礎設施的功能,如配置管理、服務發(fā)現(xiàn)、決策競選、消息總線、負載均衡、智能路由和服務追蹤等,使用簡單方便且有強大的Spring社區(qū)支持,是一個標準化的、全站式的分布式解決技術方案。
Spring Cloud的結構框圖如圖4所示。當外部的請求想調用系統(tǒng)內部的服務時,首先通過API網關Zuul進行處理,API網關收到請求進行路由或者負載均衡處理后,將請求分發(fā)至具體的服務進行請求處理。各個服務在Eureka中進行注冊,API網關可以從Euraka中獲取可用的服務。另外,在Spring Cloud微服務開發(fā)框架中,采用Hystrix負責服務超時熔斷的處理,服務監(jiān)控和服務熔斷相關指標的監(jiān)控采用Turbine技術。

圖4 Spring Cloud組件架構
離散車間生產管控系統(tǒng)微服務平臺采用總體架構如圖5所示,自下至上包含5個層次,即基礎環(huán)境層、微服務平臺層、數據服務層、信息服務層以及平臺應用層。
1)基礎環(huán)境層。
基礎環(huán)境層主要為上層服務提供基礎設施服務,主要涉及工業(yè)網絡、業(yè)務功能服務器、存儲設備、系統(tǒng)軟件等基礎設施。
2)微服務平臺層。
微服務平臺層是通過微服務架構技術對現(xiàn)有已部署的物理資源抽象封裝成微服務,實現(xiàn)服務的統(tǒng)一管理,為服務的注冊、路由、調用、協(xié)作、容錯、鏈路跟蹤及治理提供技術支撐,實現(xiàn)資源管理優(yōu)化和負載均衡,向外提供動態(tài)、靈活的基礎設施動態(tài)服務。
3)數據服務層。
數據服務層由數據采集、數據存儲管理以及數據服務3個子層構成。主要涉及車間運行的各類自動化設備、物流系統(tǒng)以及能耗管理系統(tǒng)等相關系統(tǒng)內主要設備的接入,系統(tǒng)通過不同協(xié)議(TCP/IP Webservice、Opc service、RS232和控制接口等)對設備運行數據進行采集、交互和存儲。數據存儲中心的各類數據都通過標準的數據服務接口為上層業(yè)務系統(tǒng)及第三方應用提供數據讀寫服務,每一類數據服務都是作為一個獨立的微服務部署。
4)信息服務層。
信息服務層是按照業(yè)務需求進行劃分的平臺微服務,也是微服務層。依據業(yè)務場景、調用顆粒度、業(yè)務主題、數據庫的存儲結構等因素,生產管控系統(tǒng)將生產訂單管理、工藝管理等業(yè)務模塊按照微服務拆分原則拆分為獨立微服務模塊,例如物料微服務、工藝微服務、工序微服務、設備微服務等,它們是企業(yè)業(yè)務流程聚合中不可分割的、單一業(yè)務功能的服務。每一個服務部署在獨立且相互隔離的運行環(huán)境,通過微服務網關采用RESTful模式進行相互調用。各個不同的制造企業(yè)可以根據生產業(yè)務的需求,配置和部署相應的微業(yè)務模塊以滿足企業(yè)自身的生產制造業(yè)務,達到個性化的需求。值得注意的是,對于服務的拆分粒度,沒有統(tǒng)一的標準,不宜過細也不宜過粗,應盡量保證服務本身所具有的業(yè)務獨立性和完整性,盡量減少服務間的依賴,特別是多層依賴以及鏈式調用。因此,按照業(yè)務劃分的各個微服務應做到高內聚,盡量減少分布式事務。

圖5 基于微服務的生產管控系統(tǒng)架構
5)API網關。
API代理網關位于信息服務層與平臺應用層之間,主要作用包括以下3個方面:a.提供統(tǒng)一服務入口,讓信息服務層的微服務對平臺應用層相對透明;b.聚合業(yè)務服務,提升軟件平臺性能;c.提供安全、過濾、流控等API管理功能。
6)平臺應用層。
生產管控系統(tǒng)應用層是通過根據業(yè)務需求,面向不同用戶和應用場景,對業(yè)務系統(tǒng)中存在的標準業(yè)務流程進行抽取,通過調用不同的API服務形成不同功能的業(yè)務模塊,包括生產訂單管理、工藝管理、質量檢測管理、監(jiān)控中心、統(tǒng)計分析、物流管理、綜合展示、數據采集和系統(tǒng)管理等功能于一體的綜合性應用軟件。該平臺支持瀏覽器和移動終端的訪問方式,用戶可以按租用的形式按需獲取生產管控應用服務,能夠合理降低應用成本。
根據某企業(yè)車間生產的實際需求,基于Spring Cloud微服務架構定制化開發(fā)了數字化生產管控系統(tǒng)(見圖6)。系統(tǒng)使用9臺服務器、2臺存儲、2臺千兆交換機、2臺光纖交換機等作為硬件資源,基于K8S搭建了容器云環(huán)境為系統(tǒng)提供運行環(huán)境的支撐,使用Docker部署微服務應用,使用K8S來管理Docker集群,部署詳情見表3。

圖6 基于微服務架構的生產管控系統(tǒng)

表3 生產管控系統(tǒng)部署情況
經過近一年的應用,已經取得了良好的效果:1)系統(tǒng)的實施和應用提升了企業(yè)制造管理過程基礎管理水平,實現(xiàn)了生產過程管控的電子化;2)通過實時的生產進度及物料消耗監(jiān)控,實現(xiàn)了及時備料、送料,避免物料在生產線的堆積和供應不及,減少了搬運浪費;3)通過關鍵質量信息采集能夠實時了解生產質量信息,從而實現(xiàn)對生產現(xiàn)場質量的及時管控;4)松耦合的微服務架構減少了各個服務之間的相互影響,不僅系統(tǒng)交付周期大大縮短,而且系統(tǒng)調整優(yōu)化時間大大降低。
本文采用微服務架構構建離散制造車間生產管控系統(tǒng),將業(yè)務功能拆分成一個個獨立的微服務部署并獨立運行在各自的容器中,面向不同用戶和應用場景,通過調用不同的API服務形成不同功能的業(yè)務模塊,為企業(yè)提供生產訂單管理、工藝管理、質量檢測管理等個性化業(yè)務服務。該平臺的優(yōu)勢如下:開發(fā)效率高,配置靈活,易于維護,擴展伸縮性強,具有廣闊的推廣前景和良好的經濟社會效益。