楊建新,姚志強(qiáng),宋旭杰,王 博,袁 野
(1.中國兵器工業(yè)信息中心,北京 100089;2.北京北方車輛集團(tuán)有限公司,北京 100072)
智能制造作為中國制造業(yè)轉(zhuǎn)型升級的重要戰(zhàn)略方針,已經(jīng)得到了從國家到地方的全方面支持,整個(gè)制造業(yè)的產(chǎn)業(yè)生態(tài)正在發(fā)生急劇變化[1]。車間生產(chǎn)管控系統(tǒng)作為實(shí)現(xiàn)數(shù)字化、自動化、網(wǎng)絡(luò)化生產(chǎn)的軟件平臺,在整個(gè)智能制造技術(shù)體系中占據(jù)著重要的地位和作用。企業(yè)想要在復(fù)雜的市場競爭中獲得長期生存和長遠(yuǎn)發(fā)展的能力,除了提供優(yōu)質(zhì)的產(chǎn)品,還需要具有先進(jìn)的生產(chǎn)設(shè)備以及良好的數(shù)字化生產(chǎn)管理水平,這是影響公司生產(chǎn)力的基本要素,也是生產(chǎn)高質(zhì)量產(chǎn)品的重要條件之一[2-3]。隨著個(gè)性化定制生產(chǎn)逐漸成為制造業(yè)新的發(fā)展趨勢,企業(yè)的業(yè)務(wù)場景越來越復(fù)雜,傳統(tǒng)的單體架構(gòu)、SOA架構(gòu)已經(jīng)很難滿足互聯(lián)網(wǎng)技術(shù)的發(fā)展要求。
基于此,優(yōu)化傳統(tǒng)的車間生產(chǎn)管控系統(tǒng)技術(shù)架構(gòu),提升平臺的敏捷性、可擴(kuò)展性、維護(hù)性以及容錯(cuò)性,已成為眾多生產(chǎn)企業(yè)的共性需求。因此,為提升離散制造車間生產(chǎn)管控系統(tǒng)的可靠高效服務(wù)能力,本文采用先進(jìn)的微服務(wù)架構(gòu)思想[4-5],提出了一種基于微服務(wù)架構(gòu)的生產(chǎn)管控系統(tǒng)設(shè)計(jì)方法。該系統(tǒng)將原來業(yè)務(wù)服務(wù)按照業(yè)務(wù)領(lǐng)域劃分為獨(dú)立的服務(wù)單元,每個(gè)服務(wù)之間相互獨(dú)立,服務(wù)之間使用輕量級的協(xié)議進(jìn)行通信,從而保障系統(tǒng)的高可擴(kuò)展性。通過實(shí)際應(yīng)用表明,本文所設(shè)計(jì)應(yīng)用系統(tǒng)能夠彌補(bǔ)傳統(tǒng)架構(gòu)的不足,可滿足用戶靈活多變的業(yè)務(wù)需求。
1.1.1 單體架構(gòu)
在單體結(jié)構(gòu)模式下,軟件所有功能代碼都集中在一起,將所有業(yè)務(wù)模塊及數(shù)據(jù)庫封裝成一個(gè)WAR包或JAR包,直接部署到服務(wù)器中運(yùn)行[6]。這種模式對開發(fā)而言結(jié)構(gòu)簡單,方便部署和調(diào)試。由于各個(gè)功能模塊的耦合程度高,隨著企業(yè)業(yè)務(wù)需求的擴(kuò)展與變化,導(dǎo)致單體式的應(yīng)用系統(tǒng)變得越來越臃腫,造成可維護(hù)性低、開發(fā)速度緩慢、難以擴(kuò)展等問題。極端情況下,單一業(yè)務(wù)模塊發(fā)生變更會造成整個(gè)系統(tǒng)重新開發(fā),造成極大的浪費(fèi)。單體架構(gòu)如圖1所示。
圖1 單體架構(gòu)
1.1.2 SOA架構(gòu)
SOA架構(gòu)(Service-Oriented Architecture),即面向服務(wù)的架構(gòu)[7-8]。不同于單體架構(gòu),SOA架構(gòu)(見圖2)將應(yīng)用系統(tǒng)的業(yè)務(wù)功能模塊拆分成多個(gè)細(xì)粒度、獨(dú)立可重用的服務(wù)模塊,并為各服務(wù)單元提供了統(tǒng)一的接口和通信規(guī)范,通過在企業(yè)服務(wù)總線對服務(wù)組合編排,實(shí)現(xiàn)對應(yīng)用系統(tǒng)解耦。同時(shí)簡化了復(fù)雜的業(yè)務(wù)流程,可以根據(jù)業(yè)務(wù)需要從不同入口進(jìn)行處理,提高了系統(tǒng)調(diào)度的靈活性。然而,企業(yè)服務(wù)總線關(guān)注的是解決異構(gòu)系統(tǒng)集成問題,并沒有針對一個(gè)大型應(yīng)用系統(tǒng)模塊劃分與組合提供具體解決方案,與此同時(shí)企業(yè)總線往往需要花費(fèi)巨資才可實(shí)現(xiàn)。
圖2 SOA架構(gòu)
1.1.3 微服務(wù)架構(gòu)
微服務(wù)架構(gòu)是在SOA框架基礎(chǔ)上的進(jìn)一步優(yōu)化,解決了SOA框架過度依賴于企業(yè)服務(wù)總線的問題,是一個(gè)真正意義上去中心化的分布式架構(gòu)[9]。微服務(wù)的服務(wù)拆分遵循高內(nèi)聚低耦合的原則,將企業(yè)應(yīng)用拆分解耦成為功能獨(dú)立的一系列服務(wù)實(shí)體,各個(gè)服務(wù)之間是不同的進(jìn)程,不管是在開發(fā)的過程中還是在部署更新時(shí),相互之間沒有任何依賴,同時(shí)服務(wù)之間的通信也不局限于接口的規(guī)范和約定,有效地解決了SOA架構(gòu)過于集中化的問題。微服務(wù)架構(gòu)中每個(gè)獨(dú)立的服務(wù)之間沒有任何關(guān)系,不同的業(yè)務(wù)之間是完全分離的,任意服務(wù)部署更新并不影響其他服務(wù),依然可以獨(dú)立正常運(yùn)行。因此,采用微服務(wù)架構(gòu)設(shè)計(jì)的軟件產(chǎn)品交付更加方便,容易達(dá)到快速開發(fā)和部署系統(tǒng)的目的。典型的微服務(wù)框架流程圖如圖3所示。
圖3 微服務(wù)架構(gòu)
單體架構(gòu)、SOA架構(gòu)與微服務(wù)架構(gòu)在組件大小、耦合程度、團(tuán)隊(duì)架構(gòu)等方面的對比見表1。
表1 單體架構(gòu)、SOA架構(gòu)、微服務(wù)架構(gòu)對比
微服務(wù)的特性使其在軟件系統(tǒng)設(shè)計(jì)與研發(fā)應(yīng)用中具有一定的優(yōu)勢,包括如下幾個(gè)方面[10]。
1)系統(tǒng)易擴(kuò)展。
微服務(wù)的業(yè)務(wù)獨(dú)立、高內(nèi)聚、低耦合使其在開發(fā)、維護(hù)和部署上具有優(yōu)勢,也使微服務(wù)架構(gòu)較容易擴(kuò)展。系統(tǒng)以業(yè)務(wù)功能為模塊細(xì)?;梢粋€(gè)個(gè)獨(dú)立、專注的功能組件,每一個(gè)微服務(wù)是對單一職責(zé)的業(yè)務(wù)功能的封裝,只專注于單一功能,微服務(wù)保證了系統(tǒng)在快速變化的業(yè)務(wù)環(huán)境中,根據(jù)需要快速調(diào)整服務(wù)的能力。在增加業(yè)務(wù)功能時(shí),微服務(wù)架構(gòu)只需要增加微服務(wù)節(jié)點(diǎn),并調(diào)整關(guān)聯(lián)的微服務(wù)節(jié)點(diǎn)的調(diào)用配置便可滿足業(yè)務(wù)需求。
2)技術(shù)多樣性。
由于微服務(wù)獨(dú)立部署,每個(gè)微服務(wù)不僅可以根據(jù)自身的業(yè)務(wù)需求研發(fā)團(tuán)隊(duì)的特點(diǎn)進(jìn)行技術(shù)和架構(gòu)的選型,而且可以由不同的語言基于不同的平臺異構(gòu)開發(fā),通過定義良好的接口和清晰的服務(wù)范圍,使微服務(wù)間協(xié)同的復(fù)雜度能夠簡化。
3)較高容錯(cuò)性。
由于每一個(gè)微服務(wù)都是獨(dú)立運(yùn)行的,通過采取合理的方案,在微服務(wù)架構(gòu)中可以實(shí)現(xiàn)更好的故障隔離。系統(tǒng)發(fā)生故障時(shí),傳統(tǒng)架構(gòu)需要進(jìn)行整個(gè)系統(tǒng)的修復(fù),而微服務(wù)架構(gòu)僅僅需要將有問題的服務(wù)進(jìn)行變更或停止,其他服務(wù)可通過熔斷機(jī)制實(shí)現(xiàn)應(yīng)用層面的容錯(cuò)。
4)自動化部署。
在微服務(wù)架構(gòu)中,每個(gè)服務(wù)都圍繞業(yè)務(wù)構(gòu)建,擁有獨(dú)立的業(yè)務(wù)邏輯、數(shù)據(jù)源和適配器,且可發(fā)布服務(wù)接口給其他微服務(wù)和客戶端應(yīng)用使用,實(shí)現(xiàn)獨(dú)立的可擴(kuò)展自動部署機(jī)制,運(yùn)行在自己的進(jìn)程中,采用HTTP API輕量化機(jī)制進(jìn)行相互通信,服務(wù)之間互相協(xié)調(diào),互相配合,為用戶提供最終價(jià)值。
隨著微服務(wù)體系結(jié)構(gòu)的不斷發(fā)展及成熟,微服務(wù)框架已逐漸成為企業(yè)應(yīng)用系統(tǒng)從傳統(tǒng)架構(gòu)轉(zhuǎn)型到微服務(wù)架構(gòu)的首選。微服務(wù)框架通常由服務(wù)注冊與發(fā)現(xiàn)、路由、負(fù)載均衡、服務(wù)網(wǎng)關(guān)、分布式消息傳遞和服務(wù)容錯(cuò)等核心部件組成。當(dāng)前較為主流的微服務(wù)框架有Dubbo、Motan、gRPC和Spring Cloud等4種,根據(jù)服務(wù)調(diào)用方式以及功能特色可將它們分為RPC(Remote Procedure Call)型微服務(wù)框架和RESTful微服務(wù)框架2種[11],這些框架的基本特征比較見表2。
表2 微服務(wù)框架基本特征比較
經(jīng)過技術(shù)對比,選擇Spring Cloud作為本項(xiàng)目開發(fā)的微服務(wù)應(yīng)用框架。Spring Cloud是基于Spring Boot框架發(fā)展而來的[12],本質(zhì)上是一種RESTful的微服務(wù)框架,具有高質(zhì)量、穩(wěn)定性、可持續(xù)性、便捷性等特性。Spring Cloud提供了一系列分布式基礎(chǔ)設(shè)施的功能,如配置管理、服務(wù)發(fā)現(xiàn)、決策競選、消息總線、負(fù)載均衡、智能路由和服務(wù)追蹤等,使用簡單方便且有強(qiáng)大的Spring社區(qū)支持,是一個(gè)標(biāo)準(zhǔn)化的、全站式的分布式解決技術(shù)方案。
Spring Cloud的結(jié)構(gòu)框圖如圖4所示。當(dāng)外部的請求想調(diào)用系統(tǒng)內(nèi)部的服務(wù)時(shí),首先通過API網(wǎng)關(guān)Zuul進(jìn)行處理,API網(wǎng)關(guān)收到請求進(jìn)行路由或者負(fù)載均衡處理后,將請求分發(fā)至具體的服務(wù)進(jìn)行請求處理。各個(gè)服務(wù)在Eureka中進(jìn)行注冊,API網(wǎng)關(guān)可以從Euraka中獲取可用的服務(wù)。另外,在Spring Cloud微服務(wù)開發(fā)框架中,采用Hystrix負(fù)責(zé)服務(wù)超時(shí)熔斷的處理,服務(wù)監(jiān)控和服務(wù)熔斷相關(guān)指標(biāo)的監(jiān)控采用Turbine技術(shù)。
圖4 Spring Cloud組件架構(gòu)
離散車間生產(chǎn)管控系統(tǒng)微服務(wù)平臺采用總體架構(gòu)如圖5所示,自下至上包含5個(gè)層次,即基礎(chǔ)環(huán)境層、微服務(wù)平臺層、數(shù)據(jù)服務(wù)層、信息服務(wù)層以及平臺應(yīng)用層。
1)基礎(chǔ)環(huán)境層。
基礎(chǔ)環(huán)境層主要為上層服務(wù)提供基礎(chǔ)設(shè)施服務(wù),主要涉及工業(yè)網(wǎng)絡(luò)、業(yè)務(wù)功能服務(wù)器、存儲設(shè)備、系統(tǒng)軟件等基礎(chǔ)設(shè)施。
2)微服務(wù)平臺層。
微服務(wù)平臺層是通過微服務(wù)架構(gòu)技術(shù)對現(xiàn)有已部署的物理資源抽象封裝成微服務(wù),實(shí)現(xiàn)服務(wù)的統(tǒng)一管理,為服務(wù)的注冊、路由、調(diào)用、協(xié)作、容錯(cuò)、鏈路跟蹤及治理提供技術(shù)支撐,實(shí)現(xiàn)資源管理優(yōu)化和負(fù)載均衡,向外提供動態(tài)、靈活的基礎(chǔ)設(shè)施動態(tài)服務(wù)。
3)數(shù)據(jù)服務(wù)層。
數(shù)據(jù)服務(wù)層由數(shù)據(jù)采集、數(shù)據(jù)存儲管理以及數(shù)據(jù)服務(wù)3個(gè)子層構(gòu)成。主要涉及車間運(yùn)行的各類自動化設(shè)備、物流系統(tǒng)以及能耗管理系統(tǒng)等相關(guān)系統(tǒng)內(nèi)主要設(shè)備的接入,系統(tǒng)通過不同協(xié)議(TCP/IP Webservice、Opc service、RS232和控制接口等)對設(shè)備運(yùn)行數(shù)據(jù)進(jìn)行采集、交互和存儲。數(shù)據(jù)存儲中心的各類數(shù)據(jù)都通過標(biāo)準(zhǔn)的數(shù)據(jù)服務(wù)接口為上層業(yè)務(wù)系統(tǒng)及第三方應(yīng)用提供數(shù)據(jù)讀寫服務(wù),每一類數(shù)據(jù)服務(wù)都是作為一個(gè)獨(dú)立的微服務(wù)部署。
4)信息服務(wù)層。
信息服務(wù)層是按照業(yè)務(wù)需求進(jìn)行劃分的平臺微服務(wù),也是微服務(wù)層。依據(jù)業(yè)務(wù)場景、調(diào)用顆粒度、業(yè)務(wù)主題、數(shù)據(jù)庫的存儲結(jié)構(gòu)等因素,生產(chǎn)管控系統(tǒng)將生產(chǎn)訂單管理、工藝管理等業(yè)務(wù)模塊按照微服務(wù)拆分原則拆分為獨(dú)立微服務(wù)模塊,例如物料微服務(wù)、工藝微服務(wù)、工序微服務(wù)、設(shè)備微服務(wù)等,它們是企業(yè)業(yè)務(wù)流程聚合中不可分割的、單一業(yè)務(wù)功能的服務(wù)。每一個(gè)服務(wù)部署在獨(dú)立且相互隔離的運(yùn)行環(huán)境,通過微服務(wù)網(wǎng)關(guān)采用RESTful模式進(jìn)行相互調(diào)用。各個(gè)不同的制造企業(yè)可以根據(jù)生產(chǎn)業(yè)務(wù)的需求,配置和部署相應(yīng)的微業(yè)務(wù)模塊以滿足企業(yè)自身的生產(chǎn)制造業(yè)務(wù),達(dá)到個(gè)性化的需求。值得注意的是,對于服務(wù)的拆分粒度,沒有統(tǒng)一的標(biāo)準(zhǔn),不宜過細(xì)也不宜過粗,應(yīng)盡量保證服務(wù)本身所具有的業(yè)務(wù)獨(dú)立性和完整性,盡量減少服務(wù)間的依賴,特別是多層依賴以及鏈?zhǔn)秸{(diào)用。因此,按照業(yè)務(wù)劃分的各個(gè)微服務(wù)應(yīng)做到高內(nèi)聚,盡量減少分布式事務(wù)。
圖5 基于微服務(wù)的生產(chǎn)管控系統(tǒng)架構(gòu)
5)API網(wǎng)關(guān)。
API代理網(wǎng)關(guān)位于信息服務(wù)層與平臺應(yīng)用層之間,主要作用包括以下3個(gè)方面:a.提供統(tǒng)一服務(wù)入口,讓信息服務(wù)層的微服務(wù)對平臺應(yīng)用層相對透明;b.聚合業(yè)務(wù)服務(wù),提升軟件平臺性能;c.提供安全、過濾、流控等API管理功能。
6)平臺應(yīng)用層。
生產(chǎn)管控系統(tǒng)應(yīng)用層是通過根據(jù)業(yè)務(wù)需求,面向不同用戶和應(yīng)用場景,對業(yè)務(wù)系統(tǒng)中存在的標(biāo)準(zhǔn)業(yè)務(wù)流程進(jìn)行抽取,通過調(diào)用不同的API服務(wù)形成不同功能的業(yè)務(wù)模塊,包括生產(chǎn)訂單管理、工藝管理、質(zhì)量檢測管理、監(jiān)控中心、統(tǒng)計(jì)分析、物流管理、綜合展示、數(shù)據(jù)采集和系統(tǒng)管理等功能于一體的綜合性應(yīng)用軟件。該平臺支持瀏覽器和移動終端的訪問方式,用戶可以按租用的形式按需獲取生產(chǎn)管控應(yīng)用服務(wù),能夠合理降低應(yīng)用成本。
根據(jù)某企業(yè)車間生產(chǎn)的實(shí)際需求,基于Spring Cloud微服務(wù)架構(gòu)定制化開發(fā)了數(shù)字化生產(chǎn)管控系統(tǒng)(見圖6)。系統(tǒng)使用9臺服務(wù)器、2臺存儲、2臺千兆交換機(jī)、2臺光纖交換機(jī)等作為硬件資源,基于K8S搭建了容器云環(huán)境為系統(tǒng)提供運(yùn)行環(huán)境的支撐,使用Docker部署微服務(wù)應(yīng)用,使用K8S來管理Docker集群,部署詳情見表3。
圖6 基于微服務(wù)架構(gòu)的生產(chǎn)管控系統(tǒng)
表3 生產(chǎn)管控系統(tǒng)部署情況
經(jīng)過近一年的應(yīng)用,已經(jīng)取得了良好的效果:1)系統(tǒng)的實(shí)施和應(yīng)用提升了企業(yè)制造管理過程基礎(chǔ)管理水平,實(shí)現(xiàn)了生產(chǎn)過程管控的電子化;2)通過實(shí)時(shí)的生產(chǎn)進(jìn)度及物料消耗監(jiān)控,實(shí)現(xiàn)了及時(shí)備料、送料,避免物料在生產(chǎn)線的堆積和供應(yīng)不及,減少了搬運(yùn)浪費(fèi);3)通過關(guān)鍵質(zhì)量信息采集能夠?qū)崟r(shí)了解生產(chǎn)質(zhì)量信息,從而實(shí)現(xiàn)對生產(chǎn)現(xiàn)場質(zhì)量的及時(shí)管控;4)松耦合的微服務(wù)架構(gòu)減少了各個(gè)服務(wù)之間的相互影響,不僅系統(tǒng)交付周期大大縮短,而且系統(tǒng)調(diào)整優(yōu)化時(shí)間大大降低。
本文采用微服務(wù)架構(gòu)構(gòu)建離散制造車間生產(chǎn)管控系統(tǒng),將業(yè)務(wù)功能拆分成一個(gè)個(gè)獨(dú)立的微服務(wù)部署并獨(dú)立運(yùn)行在各自的容器中,面向不同用戶和應(yīng)用場景,通過調(diào)用不同的API服務(wù)形成不同功能的業(yè)務(wù)模塊,為企業(yè)提供生產(chǎn)訂單管理、工藝管理、質(zhì)量檢測管理等個(gè)性化業(yè)務(wù)服務(wù)。該平臺的優(yōu)勢如下:開發(fā)效率高,配置靈活,易于維護(hù),擴(kuò)展伸縮性強(qiáng),具有廣闊的推廣前景和良好的經(jīng)濟(jì)社會效益。