李月晴 范純超 張?jiān)?
(1.礦冶科技集團(tuán)有限公司,北京 102628;2.北京北礦智能科技有限公司,北京 102628;3.金屬礦山智能開采技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 102628;4.山東黃金礦業(yè)(萊州)有限公司三山島金礦,山東 萊州 261442)
目前礦山企業(yè)在生產(chǎn)中面臨著市場、資源、環(huán)境及成本等多方面的壓力,如何實(shí)現(xiàn)資源的高效利用、人員的合理配置,生產(chǎn)效益的基本保障,以及生態(tài)環(huán)境的保護(hù)是大多礦山企業(yè)亟待解決的問題。鑒于此,礦山企業(yè)在采、選礦作業(yè)過程中一直秉持著高效率、有秩序及高安全的建設(shè)標(biāo)準(zhǔn)。企業(yè)在生產(chǎn)制造的過程中,大數(shù)據(jù)的統(tǒng)計(jì)分析與可視化管理更是打造數(shù)字化礦山企業(yè)的關(guān)鍵技術(shù),其對生產(chǎn)作業(yè)的進(jìn)度、設(shè)備能耗、原輔料利用率、產(chǎn)品品位的實(shí)時(shí)追溯和優(yōu)化管理起著關(guān)鍵性作用。
目前有很多礦山領(lǐng)域生產(chǎn)和管控系統(tǒng)的研究,如文獻(xiàn)[1]中提到的地下礦山生產(chǎn)管控與觀念建設(shè)體系,文獻(xiàn)[2]采用物聯(lián)網(wǎng)技術(shù)構(gòu)建了礦山智能生產(chǎn)系統(tǒng)架構(gòu),以及文獻(xiàn)[3]基于物聯(lián)網(wǎng)技術(shù)的地下礦山智能生產(chǎn)控制和管理建設(shè)體系,實(shí)現(xiàn)了礦山生產(chǎn)和管理數(shù)字化、自動化和預(yù)警智能化。以上研究體現(xiàn)了通過先進(jìn)科技的應(yīng)用,搭建符合礦山經(jīng)營需求的生產(chǎn)管控軟件平臺對實(shí)現(xiàn)企業(yè)生產(chǎn)經(jīng)營過程中的數(shù)據(jù)快速交互、直觀展示,打通企業(yè)管理壁壘有一定幫助[4]。
針對平臺或系統(tǒng)本身,隨著越來越多的用戶參與,業(yè)務(wù)場景越來越復(fù)雜,傳統(tǒng)的單體架構(gòu)已經(jīng)很難滿足互聯(lián)網(wǎng)技術(shù)的發(fā)展要求。由此,系統(tǒng)架構(gòu)的更高要求促使微服務(wù)架構(gòu)概念的產(chǎn)生。微服務(wù)架構(gòu)系統(tǒng)是一個(gè)分布式系統(tǒng),按照業(yè)務(wù)領(lǐng)域劃分為獨(dú)立的服務(wù)單元并可以進(jìn)行獨(dú)立部署,它的優(yōu)勢在于能夠解決單體架構(gòu)的不足,有自動化運(yùn)維、容錯(cuò)的特點(diǎn),同時(shí)也能滿足復(fù)雜的業(yè)務(wù)場景。
結(jié)合微服務(wù)架構(gòu)的優(yōu)勢以及礦山企業(yè)現(xiàn)面臨復(fù)雜的業(yè)務(wù)場景需求及數(shù)字化礦山建設(shè)理念的推動,本項(xiàng)目開發(fā)了基于微服務(wù)架構(gòu)的生產(chǎn)管控平臺方案。該方案為企業(yè)著重打造一個(gè)集工業(yè)大數(shù)據(jù)集成展示、生產(chǎn)業(yè)務(wù)數(shù)據(jù)查詢管理,業(yè)務(wù)決策為一體化的智能礦山生產(chǎn)管控體系。
2014年由M.Fowler和J.Lewis共同提出微服務(wù)(MicroService)[5]。微服務(wù)是一個(gè)具有高并發(fā)、高擴(kuò)展、獨(dú)立部署等特性的應(yīng)用,它將復(fù)雜的應(yīng)用系統(tǒng)按照業(yè)務(wù)劃分以獨(dú)立業(yè)務(wù)模塊的形式拆解成多個(gè)服務(wù)單元[6],各個(gè)應(yīng)用服務(wù)都專注于單一的功能實(shí)現(xiàn),有利于開發(fā)者專注于某個(gè)模塊的快速實(shí)現(xiàn),并提供應(yīng)用服務(wù)。這些按業(yè)務(wù)劃分的微服務(wù)單元可獨(dú)立部署,運(yùn)行在獨(dú)立的進(jìn)程中。同時(shí),這些微服務(wù)之間是松耦合的,每個(gè)服務(wù)具有獨(dú)立的數(shù)據(jù)庫及其不同存儲方式[7],服務(wù)之間數(shù)據(jù)庫無耦合的特點(diǎn)能夠滿足礦山企業(yè)不同場景的數(shù)據(jù)存儲方式需求。微服務(wù)之間的通訊方式傾向于用輕量級的通信機(jī)制(如HTTP、RESTfulAPI或RPC)相互溝通和配合實(shí)現(xiàn)整個(gè)系統(tǒng)應(yīng)用[8],并且這種通訊機(jī)制與平臺和語言無關(guān)。基于微服務(wù)框架開發(fā)的礦山生產(chǎn)系統(tǒng),開發(fā)者更多關(guān)注根據(jù)礦山業(yè)務(wù)劃分的微服務(wù)內(nèi)部功能的開發(fā),而微服務(wù)的部署方式是自動化部署,這樣簡化了系統(tǒng)開發(fā)難度,并提高了開發(fā)效率[9]。總之,相對于傳統(tǒng)的單體應(yīng)用架構(gòu),微服務(wù)具有技術(shù)選型靈活、復(fù)雜度可控、功能邊界清晰、具有高擴(kuò)展性、獨(dú)立部署、高容錯(cuò)等優(yōu)勢[7]。
本項(xiàng)目的生產(chǎn)管控平臺是基于SpringCloud微服務(wù)框架,并且采用前后端分離的模式進(jìn)行業(yè)務(wù)系統(tǒng)開發(fā)、部署和運(yùn)維。該生產(chǎn)管控平臺后端框架采用Spring Boot、Spring-Cloud Greenwich、Mybatis-plus等核心技術(shù),前端框架基于Vue、ElementUI等進(jìn)行搭建。SpringCloud是基于SpringBoot進(jìn)行構(gòu)建服務(wù)的,它主要特點(diǎn)就是提高了開發(fā)和部署上的效率,用來構(gòu)建分布式系統(tǒng)。SpringCloud的主要目標(biāo)就是通過提供一系列內(nèi)部組件和框架,迅速搭建一個(gè)分布式的微服務(wù)系統(tǒng),還提供了分布式微服務(wù)系統(tǒng)的一些常用組件,例如服務(wù)注冊和發(fā)現(xiàn)、配置中心、熔斷器、路由網(wǎng)關(guān)等核心組件[2]?;赟pringCloud開發(fā)的生產(chǎn)管控平臺主要有以下核心功能:
(1)本平臺使用Nacos擔(dān)任注冊中心與配置中心的角色。Nacos是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu)的服務(wù)基礎(chǔ)設(shè)施,致力于幫助發(fā)現(xiàn)、配置和管理微服務(wù),可以幫助快速構(gòu)建交付和管理微服務(wù)平臺。Nacos服務(wù)領(lǐng)域模型主要分為命名空間、集群、服務(wù),在使用時(shí)需要?jiǎng)?chuàng)建命名空間,并在服務(wù)上添加服務(wù)注冊和配置依賴,以及在控制臺的配置管理中添加YAML格式的配置文件,對整個(gè)工程的基本配置和每個(gè)微服務(wù)進(jìn)行配置管理。
(2)采用Oauth2協(xié)議進(jìn)行統(tǒng)一的Token下發(fā)與鑒權(quán),保證系統(tǒng)安全性。Oauth2授權(quán)協(xié)議提出了“授權(quán)服務(wù)器”,經(jīng)過用戶授權(quán)后授權(quán)服務(wù)器向第三方應(yīng)用發(fā)放一個(gè)Token,這樣就可以在不向第三方應(yīng)用提供賬號和密碼的情況下,通過令牌在特定時(shí)間內(nèi)訪問用戶存放在特定資源服務(wù)器上的資源。
(3)使用Gateway進(jìn)行網(wǎng)關(guān)的統(tǒng)一轉(zhuǎn)發(fā),用來管理授權(quán)、訪問控制和流量限制等,這樣REST API接口服務(wù)就被API網(wǎng)關(guān)保護(hù)起來,隱藏在API網(wǎng)關(guān)后面的業(yè)務(wù)系統(tǒng)就可以專注于創(chuàng)建和管理服務(wù)。SpringCloud Gateway旨在為微服務(wù)架構(gòu)提供一種簡單而有效的統(tǒng)一的API路由管理方式,實(shí)現(xiàn)了一個(gè)簡單、比Zuul更高效、與SpringCloud緊密配合的API網(wǎng)關(guān)。其不僅提供統(tǒng)一的路由方式,并且基于Filter鏈的方式提供了網(wǎng)關(guān)基本的功能,如安全、監(jiān)控和限流等。
(4)使用ELK分布式日志管理系統(tǒng),具有日志收集與監(jiān)控服務(wù)為一體的能力。
(5)集成MinIO分布式對象存儲服務(wù),非常便捷地提供大容量非結(jié)構(gòu)化文件上傳與管理,如視頻、圖片、日志文件的備份數(shù)據(jù)等。
(6)采用Redis分布式鎖。為了防止分布式系統(tǒng)中的多個(gè)進(jìn)程之間相互干擾,需要一種分布式協(xié)調(diào)技術(shù)來對這些進(jìn)程進(jìn)行調(diào)度,這個(gè)分布式協(xié)調(diào)技術(shù)的核心就是來實(shí)現(xiàn)這個(gè)分布式鎖。
圖1是基于SpringCloud微服務(wù)架構(gòu)的生產(chǎn)管控平臺架構(gòu)。
本平臺功能分為基礎(chǔ)服務(wù)功能和礦山生產(chǎn)業(yè)務(wù)服務(wù)功能,每個(gè)單獨(dú)的服務(wù)模塊對應(yīng)一個(gè)微服務(wù)單元。礦山生產(chǎn)業(yè)務(wù)服務(wù)是在基礎(chǔ)服務(wù)的基礎(chǔ)上做的業(yè)務(wù)應(yīng)用模塊開發(fā)。基礎(chǔ)服務(wù)功能包括用戶管理、資源管理、系統(tǒng)管理、權(quán)限管理和流程管理等基礎(chǔ)功能模塊。基礎(chǔ)服務(wù)對應(yīng)的數(shù)據(jù)存儲方式采用關(guān)系型數(shù)據(jù)庫MySQL。業(yè)務(wù)服務(wù)功能是針對礦山生產(chǎn)中的業(yè)務(wù)范圍進(jìn)行開發(fā)定制化功能模塊,主要包括工業(yè)數(shù)據(jù)集成展示、生產(chǎn)業(yè)務(wù)數(shù)據(jù)查詢管理等,其對應(yīng)的數(shù)據(jù)存儲方式為關(guān)系型數(shù)據(jù)庫Oracle。這些功能模塊通過接口層API網(wǎng)關(guān)進(jìn)行對外發(fā)布應(yīng)用服務(wù)接口。API網(wǎng)關(guān)具有統(tǒng)一認(rèn)證、API鑒權(quán)、API限流、API測試等功能。最終以WebSocket、HTTP/HTTPS、TCP/UDP協(xié)議對訪問層提供接口。此應(yīng)用功能支持在手機(jī)、瀏覽器、大屏幕等硬件系統(tǒng)上進(jìn)行展示。在進(jìn)行平臺功能開發(fā)前,需要在Nacos配置管理中添加整個(gè)平臺開發(fā)的基礎(chǔ)配置和開發(fā)環(huán)境配置,包括服務(wù)器配置、Spring配置、模塊數(shù)據(jù)源配置、Redis分布式鎖配置、項(xiàng)目模塊配置、Feign配置、Hystrix配置和Ribbon等配置。
圖2和圖3展示的是平臺的登錄界面及首頁。
2.2.1 基礎(chǔ)服務(wù)功能
該生產(chǎn)管控平臺具有基礎(chǔ)的通用功能,這些基礎(chǔ)功能是開發(fā)面向礦山實(shí)際業(yè)務(wù)功能的基礎(chǔ),主要的通用功能包括用戶管理、資源管理、系統(tǒng)管理、權(quán)限管理和流程管理等。每個(gè)功能需要建立獨(dú)立微服務(wù)單元,并在Nacos配置管理中進(jìn)行數(shù)據(jù)源的配置。
(1)用戶管理模塊是針對企業(yè)內(nèi)部人員的平臺登錄的賬號、平臺權(quán)限、密碼設(shè)置/重置、員工角色配置及所屬部門進(jìn)行管理。
(2)權(quán)限管理主要是指平臺基礎(chǔ)的權(quán)限管理功能,從角色管理、數(shù)據(jù)權(quán)限、接口權(quán)限對用戶進(jìn)行不同維度的管理。角色管理支持自定義角色配置,可以配置父節(jié)點(diǎn)角色,最終形成樹形結(jié)構(gòu)。數(shù)據(jù)管理支持菜單自定義顯示隱藏,用戶可以自定義某個(gè)菜單對特定用戶進(jìn)行顯示或隱藏。接口管理對項(xiàng)目的接口類型、接口路徑進(jìn)行配置,實(shí)現(xiàn)接口的分類與分組管理。
(3)資源管理是針對MinIO對象存儲服務(wù)內(nèi)資源的地址、accessKey、secretKey等進(jìn)行配置管理。
(4)系統(tǒng)管理是項(xiàng)目組織的骨架和基礎(chǔ)功能,主要包括機(jī)構(gòu)管理、菜單管理等功能。機(jī)構(gòu)管理主要是對企業(yè)內(nèi)部組織架構(gòu)進(jìn)行管理,包括職務(wù)部門、生產(chǎn)廠區(qū)和下屬子公司的詳細(xì)信息等管理。菜單管理是將整個(gè)首頁的導(dǎo)航欄進(jìn)行管理,可以對導(dǎo)航菜單進(jìn)行新增、刪除和搜索,同時(shí)每一個(gè)根菜單可以添加子項(xiàng)。通過路由地址的配置添加封裝好的前端頁面組件或者通過URL添加外部頁面,添加后的功能菜單直接顯示在導(dǎo)航欄內(nèi)。
(5)流程管理則是支持模型管理、創(chuàng)建流程、修改流程、刪除流程等相關(guān)業(yè)務(wù)操作。在模型管理中,用戶可以添加自定義事務(wù)流程模型、對現(xiàn)有流程模型更改和刪除。對新增加的模型通過發(fā)起部署即可處于激活狀態(tài),可供用戶使用。用戶可以在我的流程中查看發(fā)起流程、審批進(jìn)度、待辦流程、已發(fā)流程和辦結(jié)流程等事務(wù)。
2.2.2 數(shù)據(jù)集成展示功能
數(shù)據(jù)集成展示功能是根據(jù)企業(yè)實(shí)際需求對采、選礦數(shù)據(jù)通過設(shè)計(jì)合適的圖表組件進(jìn)行可視化展示,所以需要?jiǎng)?chuàng)建新的基于業(yè)務(wù)場景的數(shù)據(jù)集成展示微服務(wù)單元,并在Nacos控制臺進(jìn)行注冊并添加配置文件。在前端Vue中通過適當(dāng)?shù)慕M件設(shè)計(jì)數(shù)據(jù)集成展示大屏并將采礦生產(chǎn)數(shù)據(jù)和選礦生產(chǎn)數(shù)據(jù)的統(tǒng)計(jì)量進(jìn)行展示。在平臺的前端界面菜單管理中,通過路由地址配置添加數(shù)據(jù)展示大屏,包括選礦數(shù)據(jù)大屏和采礦數(shù)據(jù)大屏??梢暬瘮?shù)據(jù)展示是一種很好的數(shù)據(jù)分析手段,它將更直觀地展示生產(chǎn)作業(yè)中的關(guān)鍵性數(shù)據(jù),幫助生產(chǎn)者了解作業(yè)及資源利用情況,甚至通過數(shù)據(jù)信息的變化和趨勢幫助企業(yè)快速預(yù)測礦山生產(chǎn)計(jì)劃、操作、運(yùn)營以及更優(yōu)化資源配置情況。
2.2.3 業(yè)務(wù)數(shù)據(jù)查詢功能
數(shù)據(jù)查詢功能是將礦山生產(chǎn)中采、選礦作業(yè)的礦產(chǎn)資源、礦產(chǎn)產(chǎn)品產(chǎn)出以及產(chǎn)品的銷售訂單等數(shù)據(jù)通過關(guān)鍵字段進(jìn)行詳情查詢。針對此查詢功能創(chuàng)建新的數(shù)據(jù)查詢微服務(wù)單元,主要用于提供業(yè)務(wù)數(shù)據(jù)訪問API,其數(shù)據(jù)存儲方式采用關(guān)系數(shù)據(jù)庫Oracle,同樣需要在Nacos進(jìn)行服務(wù)注冊以及數(shù)據(jù)源的配置。在前端Vue中設(shè)計(jì)查詢組件的頁面樣式,并完成路由配置,最后在菜單管理中添加封裝的查詢頁面組件的路由地址,即可在導(dǎo)航欄內(nèi)添加數(shù)據(jù)查詢管理功能,通過編號以及日期等關(guān)鍵詞查詢業(yè)務(wù)數(shù)據(jù)的詳情。圖4是以銷售訂單數(shù)據(jù)為例的查詢展示界面。
根據(jù)某有限公司礦山生產(chǎn)的實(shí)際需求,基于此微服務(wù)架構(gòu)定制化開發(fā)了工業(yè)數(shù)據(jù)集成展示平臺,使采礦生產(chǎn)數(shù)據(jù)、選礦生產(chǎn)數(shù)據(jù)、質(zhì)檢數(shù)據(jù)、銷售計(jì)量數(shù)據(jù)和尾礦庫監(jiān)測數(shù)據(jù)、外排水監(jiān)測數(shù)據(jù)等以多樣化圖表組件的形式直觀地展示出來。用戶可以通過平臺展示的數(shù)據(jù)及時(shí)發(fā)現(xiàn)生產(chǎn)中存在的問題并快速了解公司運(yùn)轉(zhuǎn)狀況,以便及時(shí)解決現(xiàn)場問題以及輔助調(diào)度、分析和決策等工作的開展,使公司運(yùn)作情況清晰可控。
圖5為某公司礦山定制化的工業(yè)數(shù)據(jù)集成展示平臺應(yīng)用情況。
數(shù)字化、信息化是礦山企業(yè)生產(chǎn)管理發(fā)展方向。本項(xiàng)目針對礦山生產(chǎn)單體結(jié)構(gòu)應(yīng)用存在的可擴(kuò)展性、并發(fā)性、維護(hù)性等方面的問題,從礦山采、選礦生產(chǎn)實(shí)際需求出發(fā),結(jié)合業(yè)務(wù)應(yīng)用的特點(diǎn),構(gòu)建了一套基于SpringCloud微服務(wù)框架并以工業(yè)數(shù)據(jù)集成展示為核心的生產(chǎn)管控平臺。基于平臺的設(shè)計(jì)方案,通過數(shù)據(jù)可視化的方式對工業(yè)數(shù)據(jù)進(jìn)行整合與分析,能夠全面提高企業(yè)生產(chǎn)過程的透明性和可控性,有效地展示采、選礦作業(yè)過程中的資源分配和產(chǎn)品輸出趨勢。同時(shí),結(jié)合企業(yè)管理基礎(chǔ)功能和業(yè)務(wù)數(shù)據(jù)查詢功能,為礦山企業(yè)開展信息化建設(shè)、達(dá)到數(shù)據(jù)互通、優(yōu)化生產(chǎn)管控提供了一定的指導(dǎo)作用。