馬典鋒,黃海,姜騰
(1.北京能科瑞元數(shù)字技術(shù)有限公司,北京100193;2.北京能科云翼數(shù)據(jù)技術(shù)開發(fā)有限公司,北京100193)
2020年5 月,綜合傳動裝置箱體加工生產(chǎn)線項目啟動,項目著力解決生產(chǎn)線工藝設(shè)計和仿真數(shù)字化、生產(chǎn)任務(wù)排程科學化、加工過程調(diào)整動態(tài)化、高精度測量在位化和誤差補償自動化等問題,通過建設(shè)一套智能化生產(chǎn)管控系統(tǒng),支撐大型箱體機加生產(chǎn)排產(chǎn)精確化、生產(chǎn)調(diào)度智能化、生產(chǎn)管理透明化、資源利用合理化等,包括計劃管理、生產(chǎn)排產(chǎn)、生產(chǎn)執(zhí)行、質(zhì)量管理、物流管理、倉儲管理、基礎(chǔ)數(shù)據(jù)管理等模塊。在各階段采用不同的方法構(gòu)建,設(shè)計階段構(gòu)以領(lǐng)域驅(qū)動設(shè)計(Domain-Driven Design,DDD)及面向?qū)ο蠓椒▌澐侄x微服務(wù),開發(fā)階段采用Spring Boot框架編碼實現(xiàn)微服務(wù),實施階段采用DevOps運營平臺統(tǒng)一管控微服務(wù),運維階段通過快速更新與快速部署體現(xiàn)微服務(wù)架構(gòu)的便捷,項目歷時15個月完成,目前項目已進入試運行階段。

圖1總體架構(gòu)
針對智能制造模式下綜合傳動裝置箱體加工生產(chǎn)線運行過程中加工質(zhì)量、加工周期和加工成本的控制要求,能科科技股份有限公司承擔了箱體智能加工生產(chǎn)線系統(tǒng)集成應(yīng)用驗證,負責箱體智能加工生產(chǎn)線管控系統(tǒng)的開發(fā)。整個專題由江麓集團、清華大學、能科股份三方承擔,具有明確分工協(xié)作,建設(shè)周期15個月,以Java技術(shù)路線為主,基于Spirng Cloud+Spring Boot+MyBatis開源框架進行開發(fā),采用前后端分離的開發(fā)模式,整體架構(gòu)采用微服務(wù)架構(gòu)開發(fā),數(shù)據(jù)庫中間件采用ORM技術(shù),同時引入了消息中間件、任務(wù)調(diào)度插件及ETL工具,項目開發(fā)總?cè)藬?shù)10人,采用Windows平臺進行本地化部署。項目功能模塊分為計劃管理、生產(chǎn)排產(chǎn)、生產(chǎn)執(zhí)行、質(zhì)量管理、物流管理、倉儲管理、基礎(chǔ)數(shù)據(jù)管理等模塊,是一套完整的機器加工行業(yè)自上而下的頂級車間智能管控平臺。通過該項目的持續(xù)建設(shè),圍繞人、機、料、法、環(huán)的要求實現(xiàn)了整個從車間到產(chǎn)線的生產(chǎn)管控自動化、生產(chǎn)現(xiàn)場透明化,提升了計劃編制的準確性及物料送達的準確性,徹底打通了信息流與物料同步的問題,為企業(yè)車間無人化生產(chǎn)奠定了基礎(chǔ)。

圖2微服務(wù)架構(gòu)
架構(gòu)基于微服務(wù)架構(gòu)進行開發(fā),能夠通過平臺本身提供的快速代碼構(gòu)建工具實現(xiàn)功能的快速搭建,同時在微服務(wù)架構(gòu)的基礎(chǔ)上實現(xiàn)了自主化服務(wù)封裝,為企業(yè)信息化進程提供有力的技術(shù)支持,提升企業(yè)平臺化進程,每個微服務(wù)之間獨立自動部署,微服務(wù)之間通過網(wǎng)關(guān)進行通信,使分布式部署更為成熟高效,大幅度降低大型系統(tǒng)耦合的同時,也使得系統(tǒng)整體更為穩(wěn)定、安全、高效。
基于Spring Boot標準的Spring Cloud架構(gòu)實現(xiàn)微服務(wù)編排和應(yīng)用的分布式框架,同時平臺具備分布式部署與負載均衡能力,每個業(yè)務(wù)模塊(微服務(wù))在硬件條件允許的情況下均多套部署,以此解決高并而引起發(fā)硬件瓶頸問題,通過注冊中心、網(wǎng)關(guān)實現(xiàn)熔斷機制,解決系統(tǒng)單點故障問題,提供完善的熱備能力。
(1)基礎(chǔ)平臺能力先行,共性技術(shù)服務(wù)能力下沉,通過開發(fā)原子微服務(wù)構(gòu)建微服務(wù)池,提升系統(tǒng)復(fù)用性,降低開發(fā)難度。
(2)提升系統(tǒng)容錯,采用熔斷降級技術(shù),單個服務(wù)發(fā)生錯誤系統(tǒng)能夠自動降級處理,增加系統(tǒng)可靠性。
(3)鑒權(quán)與認證分開,系統(tǒng)采用先認證再鑒權(quán)的權(quán)限管理模式,權(quán)限粒度更細,更易擴展,擴展企業(yè)“三員分立”的業(yè)務(wù)要求。
(4)內(nèi)置六大管理中心,提升平臺管控能力,提升開發(fā)效率,降低開發(fā)成本。
①配置中心,統(tǒng)一管控系統(tǒng)所有配置文件、配置參數(shù);②注冊中心,微服務(wù)統(tǒng)一注冊、統(tǒng)一管理;③用戶中心,用于對外統(tǒng)一提供用戶數(shù)據(jù)支持;④認證中心,提供授權(quán)、鑒權(quán)的統(tǒng)一管理模式;⑤數(shù)據(jù)中心,提供強大的數(shù)據(jù)集成能力;⑥日志中心,對系統(tǒng)各種操作、運行記錄進行跟蹤記錄。
(5)雙中臺服務(wù)理念,業(yè)務(wù)中臺給前端提供業(yè)務(wù)支撐,數(shù)據(jù)中臺實現(xiàn)企業(yè)級數(shù)據(jù)集成能力,消除信息孤島。
(6)自帶負載均衡能力,整個系統(tǒng)通過微服務(wù)開發(fā),構(gòu)建微服務(wù)池,通過系統(tǒng)提供的注冊中心,實現(xiàn)單個微服務(wù)的注冊同時提供系統(tǒng)負載均衡能力。
(7)天生負載均衡能力,通過Ribbon實現(xiàn)系統(tǒng)默認的高可用,客戶端負載均衡能力。生產(chǎn)線核心數(shù)據(jù)層和業(yè)務(wù)層采用雙機,一旦確認某臺服務(wù)器已發(fā)生故障,雙機軟件控制另一臺服務(wù)器及時地接管故障設(shè)備上的運行任務(wù)。
經(jīng)過前期技術(shù)可行性分析及對比微服務(wù)架構(gòu)和單體架構(gòu)的優(yōu)勢,最終采用微服務(wù)架構(gòu)進行開發(fā),本文著重從“設(shè)計、開發(fā)、實施、運維”4個方面論述基于微服務(wù)架構(gòu)系統(tǒng)的開發(fā)和應(yīng)用。
單體應(yīng)用的設(shè)計主要按照模塊化方式進行軟件的設(shè)計,包括概要設(shè)計和詳細設(shè)計,概要設(shè)計依據(jù)需求分析的結(jié)果界定外圍系統(tǒng)的接口,接口的契約,與外圍系統(tǒng)之間的數(shù)據(jù)交互以系統(tǒng)及各模塊之間的關(guān)系及數(shù)據(jù)走向等;詳細設(shè)計主要是設(shè)計數(shù)據(jù)庫表,各接口參數(shù)、調(diào)用方式及各模塊內(nèi)部邏輯,界面按鈕后端的業(yè)務(wù)邏輯等。

圖3 DDD領(lǐng)域模型
微服務(wù)的設(shè)計與之不同,首先要對已有的需求報告通過領(lǐng)域驅(qū)動設(shè)計(DDD)業(yè)務(wù)模型進行重新的劃分形成一個個獨立業(yè)務(wù)域,讓軟件專家和業(yè)務(wù)領(lǐng)域?qū)<疫_成一致,結(jié)合面向?qū)ο髽?gòu)建業(yè)務(wù)模型,充分把已有功能與業(yè)務(wù)域?qū)?yīng)起來,進而最終形成一個個獨立業(yè)務(wù)單元的微服務(wù),形成微服務(wù)詳細設(shè)計文檔。
業(yè)務(wù)微服務(wù)定義完成后,開發(fā)采用前后端分離的模式進行開發(fā),后端開發(fā)工程師進行微服務(wù)的開發(fā),同時詳細設(shè)計文檔中的要求進行物理模型的構(gòu)建及各類輔助軟件的安裝,系統(tǒng)軟件物理模塊的構(gòu)建、開發(fā)環(huán)境的構(gòu)建、數(shù)據(jù)庫的構(gòu)建等,前端工程師按照原型進行前端界面的開發(fā),包括布局及界面風格嚴格按照原型進行,原型按鈕操作依據(jù)詳細設(shè)計后臺邏輯進行業(yè)務(wù)邏輯的編寫;測試工程師依據(jù)需求及設(shè)計進行測試用例的編寫。
測試環(huán)境的搭建,在開發(fā)過程中開一個模塊測試進行一個模塊的測試,多個模塊進行集成測試,集成測試通過后邀請客戶進行系統(tǒng)測試,讓用戶及早參與測試,通過多次的版本迭代與開發(fā)完成測試工作。

圖4前后端分離開發(fā)

圖5迭代發(fā)布
微服務(wù)的難點首先在于微服務(wù)的定義與劃分,這塊在設(shè)計階段通過DDD領(lǐng)域驅(qū)動模型方式得以解決,另外一個難點就是由于采用微服務(wù)架構(gòu),那么定義出的微服務(wù)數(shù)量比單體應(yīng)用的模塊多了很多,微服務(wù)的管理及發(fā)布等是一件很麻煩的事情,這個問題我們通過公司的DevOps平臺來進行管控,服務(wù)的發(fā)現(xiàn)與注冊通過注冊中心來管理,微服務(wù)的運行環(huán)境通過Docker容器來實現(xiàn),解決了開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境不一致的問題,最后用K8S來管理Docker,服務(wù)的發(fā)布通過CI/CD統(tǒng)一進行集成、發(fā)布,基于DevOps運營平臺完美解決了微服務(wù)管理難的問題,極大提高了軟件的發(fā)布與自動編譯的能力。

圖6 DevOps平臺
一般運維階段的問題主要有以下兩類,最終用戶和IT部門:
(1)最終用戶遇到的問題包括:
①業(yè)務(wù)劃分不準確、理解不正確,不是我想要的功能。②這個功能點溝通了很多次,怎么還是不明白?③你們對于我們的業(yè)務(wù)不熟悉,理解不到怎么可以開發(fā)成功?④這個功能昨天就開完完成,怎么還沒有發(fā)布,我只是提了一個小功能,怎么發(fā)布需要這么久?⑤只是一個界面的內(nèi)容,怎么會影響整個系統(tǒng),而且時間這么久?⑥又要我們測試,這個功能模塊之前測試過了啊?⑦我提出的修改不是這個模塊的,怎么也要測試這個模塊?
(2)IT部門遇到的問題包括:
①我們信息部門能不能自己改界面?最好少開發(fā)就能實現(xiàn)相關(guān)功能。②所有功能都要以這個為中心,產(chǎn)生瓶頸怎么解決?牽扯我們太多精力,日常工作都不能正常開展。③怎么要這么多服務(wù)器,每個服務(wù)器配置怎么這么高?④你們?nèi)藛T怎么又變化?好容易建立的溝通信任又要從頭開始。
(3)解決途徑。通過采用微服務(wù)開發(fā)的系統(tǒng),針對上面的問題得到了很好的解決,由于采用領(lǐng)域來劃定微服務(wù),降低了對于業(yè)務(wù)難度,業(yè)務(wù)理解更加充分,采用微服務(wù)架構(gòu)能夠支持分布式部署,資源在線橫向擴展,單個服務(wù)資源動態(tài)擴展,降低停機停系統(tǒng)帶來的影響,去中心化的設(shè)計思想能夠使系統(tǒng)各部分受力均衡,避免瓶頸的產(chǎn)生,系統(tǒng)更容易維護、升級,降低運維成本。同時通過系統(tǒng)診斷、鏈路追蹤技術(shù)及時反映系統(tǒng)及服務(wù)器真實狀態(tài),為企業(yè)信息部門提供預(yù)知、預(yù)判能力,提高生產(chǎn)力,增強持續(xù)集成、持續(xù)交付能力,簡化開發(fā)難度,提高開發(fā)效率,降低成本。
綜上所述,通過應(yīng)用微服務(wù)架構(gòu),完成箱體智能加工生產(chǎn)管控系統(tǒng)開發(fā),使軟件具備良好的可擴展性,適應(yīng)用戶的集成需求和推廣應(yīng)用,降低了項目成本。智能加工生產(chǎn)管控系統(tǒng)的設(shè)計在落實“實用”和“實效”的同時,助力六二七廠在機加行業(yè)成為兵器智能制造的標桿企業(yè),未來將在全廠推廣微服務(wù)開發(fā)與應(yīng)用成果。