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

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

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

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

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

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

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

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

圖6 基于微服務架構的生產管控系統

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