黃靜 吳涵



摘? 要:為解決當下工廠管理成本高、效率低等問題,提出并實現了基于Spring Cloud的工廠可視化管理系統。采用Spring Cloud框架,根據工廠管理需求,劃分出多個微服務并各自獨立開發、部署,微服務之間通過相應的API(Application Programming Interface)進行相互調用,系統中包含Redis緩存、服務熔斷等處理機制。采用該系統可實現對工廠進行可視化管理,模塊化的設計使得工廠管理更有條理性。經過測試,該系統操作簡明,流程明晰,集成度高,線上操作可視化,可拓展性高,可應對工廠管理流程中復雜的業務需求,減少了工廠管理成本,提高了工廠管理效率。
關鍵詞:微服務;Spring Cloud;工廠管理;可視化
中圖分類號:TP311.5? ? ?文獻標識碼:A
Design and Implementation of Factory Visual Management
System based on Spring Cloud
HUANG Jing, WU Han
(School of Information, Zhejiang Sci-Tech University, Hangzhou 310018, China)
syhj_sy@163.com; wuhan489200@163.com
Abstract: Aiming at high cost and low efficiency of factory management, this paper proposes to implement a factory visual management system based on Spring Cloud. Using the Spring Cloud framework, according to the requirements of factory management, multiple microservices are divided, developed and deployed independently. The microservices call each other through the corresponding API (Application Programming Interface). The system includes processing mechanism such as Redis caching, service fuse, etc.. Application of this system can realize visual management of the factory. Modular design makes the factory management more organized. Testing results show that the system is simple in operation, clear in process, highly integrated; it can be visually operated online and has high scalability. It can deal with complex business needs in the factory management process, so to reduce factory management cost and improve factory management efficiency.
Keywords: microservices; Spring Cloud; factory management; visualization
1? ?引言(Introduction)
在數字化轉型[1]的背景下,工廠的發展規模進一步擴大,競爭愈發激烈,給車間生產管理和人員管理帶來了嚴峻的考驗。如何能夠更及時、更直觀地了解工廠的生產狀況以做出合理的管控,從而提高生產效率,增強自身的競爭力,成為工廠急需解決的問題[2]。
本文提出的基于Spring Cloud的工廠可視化管理系統,采用前后端分離的開發模式,以Spring Cloud為框架,構建該系統的微服務架構;采用Vue.js和uni-app框架構建該平臺PC端和移動端架構;以微服務的形式將服務端切分成若干個獨立的服務進行部署運行,前端發送請求至服務端得到響應數據,再利用Element UI和Echarts相關組件對相應數據進行圖表展示。經過測試、部署和試用,該系統運行穩定且具有很強的跨平臺性能,提升了工廠管理效率和生產效率。
2? ?微服務架構(Microservice architecture)
隨著互聯網技術的不斷發展,服務端架構不斷更新,開始由單體架構發展至微服務架構[3]。單體架構一般含有數據層、業務層、視圖層三部分,即MVC(Model View Controller)結構。采用單體架構,在項目的初期,由于所有的業務邏輯都寫在一個應用中,會使得開發、測試和部署變得簡單高效[4]。但隨著業務的不斷擴大、需求不斷增加,代碼會變得愈發臃腫,導致系統可維護性大大降低,甚至會出現修改一個小功能時,由于所有功能模塊的耦合,導致系統崩潰。此外,在代碼高度耦合且臃腫的情況下,如何實現最大程度的功能優化也變得棘手。單體架構示意圖如圖1所示。
微服務架構是近年來出現的一種新的系統開發架構,其核心思想在于通過將業務功能和需求分解到各個不同的服務中進行管理,實現對業務和代碼的整體解耦[5]。各個不同的服務可以獨立開發、測試、部署及迭代,還可以通過定義完善的API相互通信,每個服務的內部實現細節均對其他服務隱藏。微服務是松耦合的,是有功能意義的服務,且微服務能夠使用不同的語言開發。每個微服務都有自己的存儲能力,可以有自己的數據庫,也可以統一數據庫。微服務架構示意圖如圖2所示。
3? 系統相關技術選型(System related technology selection)
本系統采用前后端分離的開發模式。后端架構采用微服務的思想進行設計,采用Spring Boot作為后端框架,結合Spring Cloud構建微服務;數據庫采用MySQL 5.1.6實現,數據緩存采用Redis實現。前端架構分為PC端和移動端兩部分,分別采用Vue.js和uni-app作為開發框架。
Spring[6]框架是當下最流行的輕量級Java服務端開發框架,為傳統開發復雜臃腫、耦合度高的問題提供了一套完整的解決方案。但隨著互聯網產品功能日益復雜,Spring也無法滿足開發者的需求,在這樣的環境下,Spring Boot應運而生。Spring Boot基于Spring 4.0設計,不僅繼承了Spring原有的優秀特性,還實現了自動化配置,大大簡化了服務端開發過程,得到越來越多開發者的青睞。
Spring Cloud[7]是分布式服務治理框架,適于高效快速地構建分布式微服務系統。Spring Cloud集成了很多優秀的組件,比如Eureka服務注冊與發現組件、Zuul網關服務組件、Ribbon負載均衡組件、Feign服務調用組件、Config配置組件等。這些組件都包含在Spring Cloud中,使用時簡單配置即可,大大提高了開發效率。
Redis[8](Remote Dictionary Server)是一個開源的使用ANSIC語言編寫的key-value的跨平臺的非關系型數據庫。Redis基于內存運行,性能高效,支持分布式,理論上可以無限擴展。相比于其他類型的數據庫,Redis最受開發者青睞的便是強大的高并發讀寫能力;當面對海量的數據時,開發者可將短期內不會發生變化的數據存入Redis中,從而減輕數據庫的壓力,提高系統響應速度,增強用戶體驗。
Vue.js[9]是一套用于構建用戶界面的漸進式框架。與其他大型框架不同的是,Vue.js被設計為可以自底向上逐層應用。Vue.js的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈及各種支持類庫結合使用時,Vue.js也完全能夠為復雜的單頁應用提供驅動。
uni-app[10]是一個使用Vue.js開發所有前端應用的框架,開發者可以只編寫一套代碼,便可發布到iOS、Android及各種小程序等平臺。為了實現一套代碼多端發布,并且綜合考慮代碼編譯效率、系統性能等因素,uni-app開發需遵循嚴格的開發規范,例如頁面布局優先采用flex布局等,在此不再贅述。
4? ?系統設計與實現(System design and implementation)
4.1? ?系統總體架構設計
本系統總體架構圖如圖3所示。
本系統設計主要分為三部分,具體如下:
(1)數據庫、Redis緩存:本平臺數據庫采用MySQL 5.1.6,將工廠管理系統的所有數據都存放在其中。MySQL[11]是一種開放源代碼的關系型數據庫管理系統,使用者可以根據個性化需求對其進行修改,由于其體積小、速度快、成本低等特點,已成為當下最流行的關系型數據庫管理系統之一。本系統將員工、車間、班組、設備、物料、訂單、生產工單等所有工廠生產數據信息都存儲在數據庫中。由于工廠生產過程中所涵蓋的數據量會日積月累,愈發龐大,從而導致系統數據訪問慢等問題。為了解決該問題,在系統設計過程中,將訪問頻率高、體量龐大的數據以緩存的形式存入Redis中,并設置相關限定條件,如數據過期時間等,從而實時可控地更新數據,增強數據讀寫性,提升系統響應速度。
(2)服務端:根據功能需求將服務端進行服務劃分,首先構建出基本的微服務框架,包含服務網關、服務注冊與發現中心、配置中心;其次根據工廠生產整體流程劃分出五個微服務,分別是工廠數據管理微服務、工廠產能管理微服務、生產物料管理微服務、生產計劃管理微服務、生產車間管理微服務,各個模塊對應工廠管理的各個流程。
(3)系統前端:本系統前端包含PC端和移動端兩種,PC端主要采用Vue.js框架、Element UI和Echarts實現,移動端主要采用uni-app框架、uView、uCharts和相關開源組件實現,PC端和移動端以圖表的形式完整清晰地展示相關數據。
4.2? ?系統數據庫設計
本系統數據庫采用MySQL 5.1.6,在此由于篇幅原因僅對部分庫表的結構設計進行說明。數據庫部分表設計如圖4和圖5所示,其中工廠車間信息表(workshop)存放工廠中所有車間信息;設備信息表(machine)存儲各個車間中的設備信息;車間班組信息表(team)存儲各個車間所轄班組信息;班組人員信息表(employee)存儲各個班組中的人員信息;工序工價表(processprice)存儲每一道工序的工價信息;工序報工信息表(reportprocess)存儲已報工的工序信息;工序派工信息表(assignprocess)存儲工序派工信息;生產計劃信息表(schedule)存儲工廠生產計劃信息;產品訂單表(productionorder)主要存儲所有的產品訂單信息;工廠表(plants)存放各個工廠基本信息;公司表(company)存儲公司基本信息;用戶表(users)存儲用戶基本信息。plants表和company表是多對一的關系,每個公司下包含一個及以上工廠,兩表通過外鍵company_id關聯。plants表和users表是一對多的關系,每個工廠下都有若干個用戶,兩表通過外鍵plant_id關聯。
4.3? ?系統服務端設計與實現
4.3.1? ?微服務框架設計
本系統微服務框架采用Spring Cloud的微服務架構進行搭建。當接口對服務端發起請求,每個請求都必須先經過網關,本系統服務端網關采用的是Spring Cloud全家桶中的微服務API網關Zuul[12]。所有從設備或網站來的請求都會經過Zuul到達后端的Netflix應用程序。作為一個邊界性質的應用程序,Zuul提供了動態路由、監控、彈性負載和安全功能。
HTTP和TCP的客戶端負載均衡工具采用的是Spring Cloud Ribbon[13],實現了服務端的高可用,緩解了網絡請求壓力。
服務調用采用的是Spring Cloud Feign[14],它是一種聲明式的Web Service客戶端,簡化了微服務之間的調用。在Feign中進行服務熔斷的配置,本系統采用Spring Cloud Hystrix[15]實現熔斷機制,當系統某個服務發生故障或異常時,會直接熔斷這個服務,而不會一直等待該服務超時,防止整個系統發生故障[16]。
配置中心[17]采用的是Spring Cloud Config,它是一個解決分布式系統的配置管理方案,是微服務架構中不可或缺的一部分。如果在微服務架構中不采用Spring Cloud Config作為配置中心會導致配置文件分散,不利于維護等問題。采用Spring Cloud Config后,可以根據需求動態修改各種配置參數,且修改實時生效。
服務注冊與發現中心采用的是Spring Cloud Eureka[18],它是Netflix開發的服務發現框架,本身是一個基于REST的服務,主要用于定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。
數據緩存采用Redis[19],它是一個開源的高性能的key-value非關系型數據庫。Redis支持數據持久化,可以將內存中的數據存入磁盤,再次加載時可以使用;Redis具有豐富的數據類型,除了簡單的key-value類型,還包含string、list、hash等數據類型;Redis讀數據的速度可達到110,000 次/秒,寫數據的速度可達到81,000 次/秒。在本系統中,運用Redis實現業務數據的緩存,將體量龐大且短時間內不會發生變化的數據存入其中,減小了數據庫壓力,提升了系統響應速度,增強了用戶體驗。
4.3.2? ?微服務功能設計
根據工廠生產管理整體流程,本系統劃分出五個微服務,分別是工廠數據管理微服務、工廠產能管理微服務、生產物料管理微服務、生產計劃管理微服務、生產車間管理微服務,以下為各個微服務具體的功能描述。
(1)工廠數據管理微服務
服務消費者可通過調用工廠數據管理微服務,在數據庫中查詢出對應的員工、車間、班組、設備等信息并返回給前端進行展示;還可接收前端對相應信息的編輯修改請求,將符合要求的數據寫入數據庫并完成數據庫的更新。
(2)工廠產能管理微服務
服務消費者可通過調用工廠數據管理微服務,在數據庫中查詢出對應的生產車間、班組、員工的工作日歷信息,也可根據前端對工作日歷做出的相應編輯修改操作,將接收到的編輯修改數據寫入數據庫并完成數據的更新。此外,通過調用工廠產能管理微服務還可查詢到工廠的產能信息并返回至前端進行展示。
(3)生產物料管理微服務
服務消費者可通過調用生產物料管理微服務,在數據庫中查詢出工廠的物料庫存數據并返回這些數據,供前端展示。
(4)生產計劃管理微服務
服務消費者可通過調用生產計劃管理微服務,在數據庫中查詢出銷售訂單、生產工單、歷史生產計劃等信息并返回;服務消費者還可通過調用生產計劃管理微服務,實現對物料的齊套計算,以及生產月計劃、周計劃、日計劃生成功能,生產計劃管理微服務會將這些信息寫入數據庫,供前端查詢展示使用。
(5)生產車間管理微服務
服務消費者可通過調用生產車間管理微服務,在數據庫中查詢各個車間下的生產任務進度、生產計劃、工序派工和報工等信息,并返回至前端進行展示;另可根據前端相關數據的編輯設置操作,將相應數據寫入數據庫并完成數據庫的更新。
4.4? ?系統前端設計與實現
PC端和移動端共設計了五個模塊,分別是工廠數據管理、工廠產能管理、生產物料管理、生產計劃管理、生產車間管理。
4.4.1? ?PC端設計與實現
PC端采用Vue.js框架設計,使用Element UI編寫PC端靜態頁面,圖表采用Echarts組件生成。PC端頁面路由采用Vue Router實現,狀態管理采用Vuex。各個模塊功能設計如下:
(1)工廠數據管理
工廠數據管理主要包含員工、車間及班組、設備三個子頁面。其中員工子頁面中可以查看所有員工入職、離職、所屬車間、班組等信息,且信息可編輯修改;車間及班組子頁面可以查看工廠下所有車間及班組信息,且信息可編輯修改;設備子頁面可查看工廠所有設備的運行情況、負荷等信息,且可手動添加設備。
(2)工廠產能管理
工廠產能管理主要包含工作日歷和產能列表兩個子頁面。其中工作日歷子頁面可以查看對應車間、對應車間下的班組、對應班組下的員工或設備的工作時間安排,還可以手動調整這些時間安排;產能列表子頁面可查看對應車間、班組、員工、設備的產能信息。
(3)生產物料管理
生產物料管理實現對工廠生產物料庫存信息的監控,主要包含物料庫存狀態看板和物料庫存水位看板兩個子頁面。
(4)生產計劃管理
生產計劃管理主要包含銷售訂單狀態看板、生產工單狀態看板、計劃歷史和工作臺四個子頁面。銷售訂單狀態看板、生產工單狀態看板、計劃歷史三個子頁面實現對銷售訂單、生產工單、計劃歷史的詳細信息的查看;工作臺子頁面實現物料齊套計算和月計劃、周計劃、日計劃任務下達確認功能,當計劃下達確認后生成相應的生產計劃。
(5)生產車間管理
生產車間管理主要包含車間動態看板、工資看板、派工看板、報工看板四個子頁面。車間動態看板實現對各個生產車間中生產任務的動態監控,并將各個車間的生產任務分為等待開工、正在進行、已完成三類進行顯示;工資看板查看對應員工的工資詳細信息;派工看板可對生產計劃管理模塊所生成的生產計劃表進行顯示,并可選擇相應的車間、班組、員工、設備進行派工;當所派工作完成時,可進行報工操作,報工看板可查看已報工的工序的詳細信息。
4.4.2? ?移動端設計與實現
移動端功能設計和PC端類似,不同點在于移動端采用uni-app框架,使用uView組件庫進行移動端靜態頁面編寫,圖表采用uniapp插件市場所發布的組件和uCharts組件庫進行實現。
5? ?結論(Conclusion)
本文通過選用Spring Cloud、Vue等相關開發技術,設計并實現了基于Spring Cloud的工廠可視化管理系統,最終設計出的系統能夠實現對工廠生產過程的可視化管控。經過測試、部署和試用,該系統運行穩定,使用體驗良好,滿足工廠生產管理需求,實現工廠管理的便捷化、信息化及可視化,對于工廠管理具有較大的應用價值。
參考文獻(References)
[1] 嚴聰蓉.制造業數字化轉型發展的行動者網絡建構與運行機制研究[D].西安:西安電子科技大學,2020.
[2] 師寧,劉輝.基于工業4.0的數字化工廠監控系統設計[J].機電產品開發與創新,2020,33(06):71-73.
[3] 王健,李冬睿.從單一模式系統架構往微服務架構遷移轉化技術研究[J].科教導刊(下旬),2016(27):43-44.
[4] 崔海濤,章程,丁翔,等.面向微服務架構的開發組織適應性評估框架[J].軟件學報,2021,32(05):1256-1283.
[5] 鄭明釗,張建強.基于微服務的大平臺系統架構演進探討[J].軟件,2017,38(12):165-169.
[6] 王琪,盧軍.基于Dubbo的分布式能效管理系統的設計與實現[J].電子設計工程,2018,26(11):174-178.
[7] SUN J N. Design and implementation of dormitory repair management system based on Spring Cloud Microsevices[J]. International Core Journal of Engineering, 2021, 7(1):201-204.
[8] 孔曉陽,代真虎.基于WebSocket與Redis的高性能Web組態系統設計[J].信息技術與標準化,2021(03):51-56.
[9] 李成仁.基于Vue.js的單頁面WebGIS可視化框架研究與實現[J].地理空間信息,2020,18(05):83-86,98,7.
[10] 許溜溜.基于HBuilder快速開發移動端APP的設計與實現[J].電腦知識與技術,2020,16(10):74-75.
[11] 朱漁,羅來曦.淺議自動測試系統中MYSQL數據庫的應用與分析[J].信息通信,2014(06):157.
[12] 牟林鋼.一種微服務架構下的負載均衡策略優化方法[J].電子設計工程,2020,28(07):87-90,94.
[13] 王方旭.基于Spring Cloud和Docker的微服務架構設計[J].中國信息化,2018(03):53-55.
[14] 崔燦,周偉.基于微服務的工地安全管理系統架構設計[J].軟件導刊,2021,20(02):159-164.
[15] 洪華軍,吳建波,冷文浩.一種基于微服務架構的業務系統設計與實現[J].計算機與數字工程,2018,46(01):149-154.
[16] 付曜華.基于微服務架構的數據分析平臺的設計與實現[D].北京:北京郵電大學,2020.
[17] 周永圣,侯峰裕,孫雯,等.基于SpringCloud微服務架構的進銷存管理系統的設計與實現[J].工業控制計算機,2018,31(11):129-130,133.
[18] 楊秦.基于微服務架構的云平臺服務端的設計與實現[D].成都:電子科技大學,2020.
[19] 林紅,華韻子.基于Redis的氣象數據分發管理系統的設計與實現[J].軟件工程,2019,22(03):47-50.
作者簡介:
黃? ?靜(1965-),女,博士,教授.研究領域:通信工程,大數據,深度學習.
吳? ?涵(1997-),男,碩士生.研究領域:軟件工程,計算機技術.