仇鳳娟 李夏
摘要:煤礦井下人員定位系統(tǒng)是保證煤礦生產(chǎn)人員安全的必要軟件,為了解決當(dāng)前的人員定位系統(tǒng)軟件不能很好的滿足大數(shù)據(jù)精確定位的需求。本文中介紹的新版人員定位軟件,拋棄了原有封閉式軟件結(jié)構(gòu),采用微服務(wù)架構(gòu)升級(jí)人員定位系統(tǒng)。微服務(wù)架構(gòu)是把整個(gè)的大型軟件拆分為幾個(gè)甚至幾十個(gè)微服務(wù),微服務(wù)之間通過中心軟件進(jìn)行調(diào)度和通信。這種微服務(wù)架構(gòu)的軟件,可以大幅提升數(shù)據(jù)的存取性能,能夠較好的滿足TB級(jí)數(shù)據(jù)的存儲(chǔ)需求。微服務(wù)架構(gòu)消除了原有架構(gòu)中數(shù)據(jù)庫集成造成的緊耦合,提高了軟件系統(tǒng)靈活性,降低了系統(tǒng)維護(hù)和升級(jí)的難度??傮w來說,采用微服務(wù)架構(gòu)設(shè)計(jì)的煤礦井下人員定位軟件,大幅提升了數(shù)據(jù)的存儲(chǔ)和讀取性能,實(shí)現(xiàn)了軟件功能間的松耦合,保證了人員定位軟件的精確定位數(shù)據(jù)的需求。
關(guān)鍵詞:微服務(wù)架構(gòu);人員定位軟件;解耦合;提升存取性能;TB級(jí)數(shù)據(jù)
中圖分類號(hào):TP732 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2020)02-0170-03
煤礦事故給國家財(cái)產(chǎn)造成了巨大損失,更是危及了公民的生命安全,并造成嚴(yán)重社會(huì)影響。為此,必須建立一個(gè)煤礦井下人員定位系統(tǒng),能實(shí)時(shí)提供人員位置情況,明確的掌握井下人員分布情況,可以對(duì)下井人員進(jìn)行有效監(jiān)督,從源頭上杜絕安全隱患。尤其在有危險(xiǎn)發(fā)生時(shí),可以第一時(shí)間提供人員的位置,保證救援的及時(shí)性。因此,使用煤礦人員定位系統(tǒng)能有效的保證煤礦生產(chǎn)人員的生命安全,是大家公認(rèn)的事實(shí)。我國現(xiàn)有的人員定位系統(tǒng)分為三類。第一類是基于射頻識(shí)技術(shù)的產(chǎn)品,包括射頻識(shí)別卡和讀卡器兩部分。第二類是基于WiFi技術(shù)的產(chǎn)品,這類產(chǎn)品是在井下建立以太網(wǎng)和網(wǎng)絡(luò)基站,建立起覆蓋全井下的網(wǎng)絡(luò)。第三類是基于計(jì)算機(jī)技術(shù),與GIS系統(tǒng)相結(jié)合的人員定位系統(tǒng),具有多功能、可視化和圖形化的特點(diǎn),是現(xiàn)在采用較多的人員定位系統(tǒng)。
隨著時(shí)代的發(fā)展,計(jì)算機(jī)技術(shù)的不斷進(jìn)步,傳統(tǒng)的人員定位系統(tǒng)已經(jīng)不能滿足現(xiàn)在的大數(shù)據(jù)需求。大量的數(shù)據(jù)造成讀取速度緩慢,影響數(shù)據(jù)的分析結(jié)果,并且在講究個(gè)性化的時(shí)代,客戶的需求各種各樣,因此造成軟件的頻繁修改和維護(hù)。為此,設(shè)計(jì)一套新的人員定位軟件架構(gòu),有夠效的滿足大數(shù)據(jù)的需求,以及不斷變化的修改和更新需求是十分有必要的。
1 現(xiàn)有煤礦人員定位系統(tǒng)的情況
圖1所示為傳統(tǒng)的人員定位軟件結(jié)構(gòu),可以清楚的發(fā)現(xiàn)所有應(yīng)用服務(wù)都要訪問中心數(shù)據(jù)庫,所有服務(wù)都是以數(shù)據(jù)庫為中心進(jìn)行的。
隨著信息技術(shù)的不斷發(fā)展,原有的人員定位系統(tǒng)已經(jīng)不能滿足現(xiàn)有客戶的需求,主要表現(xiàn)在以下幾個(gè)方面。
1.1 數(shù)據(jù)庫結(jié)構(gòu)滿足不了現(xiàn)有需求
現(xiàn)有的數(shù)據(jù)庫結(jié)構(gòu)是基于十年前的設(shè)計(jì)基礎(chǔ),當(dāng)時(shí)來說,數(shù)據(jù)量小,數(shù)據(jù)更新不頻繁,可以很好的滿足當(dāng)時(shí)的需要。但對(duì)于如今的大數(shù)據(jù)時(shí)代來說,尤其精確人員定位系統(tǒng)每年要產(chǎn)生TB級(jí)的數(shù)據(jù),原有數(shù)據(jù)庫架構(gòu)的性能已經(jīng)不能滿足高效存儲(chǔ)和快速查詢的業(yè)務(wù)需求。
1.2 系統(tǒng)架構(gòu)造成維護(hù)困難
原有的人員定位系統(tǒng)采用了基礎(chǔ)數(shù)據(jù)庫的模式進(jìn)行集成,這種方式雖然看起來的直觀,結(jié)構(gòu)簡(jiǎn)單,但隨著服務(wù)的增多,會(huì)讓工程中代碼的耦合度無可避免的越來越嚴(yán)重,造成其內(nèi)部功能的代碼數(shù)量變得龐大而導(dǎo)致邏輯變得十分復(fù)雜,增加了后續(xù)維護(hù)的難度。
1.3 造成系統(tǒng)修改增加功能困難
原有的系統(tǒng)架構(gòu)是密閉的,每次修改或增加刪除功能都十分的繁瑣,不僅需要更多的時(shí)間處理各種模塊間的邏輯關(guān)系,更是需要大量時(shí)間進(jìn)行測(cè)試及部署,對(duì)于新接手的人員來說,根本無法修改,以至于軟件的后續(xù)性很差。
對(duì)于以上的不足,原有架構(gòu)上的修補(bǔ)已經(jīng)不能滿足現(xiàn)有需求。需要開發(fā)新的程序架構(gòu),以滿足高通量、大數(shù)據(jù)處理的需要。
2 微服務(wù)架構(gòu)
2.1 微服務(wù)架構(gòu)介紹
微服務(wù)的最先提出者是Martin Fowler,其核心理論是將一個(gè)復(fù)雜大型的單個(gè)應(yīng)用程序,按照業(yè)務(wù)需求的獨(dú)立性和使用頻率,拆分為數(shù)個(gè)甚至數(shù)十個(gè)微服務(wù),將功能分解到各個(gè)離散的服務(wù)中以實(shí)現(xiàn)對(duì)解決方案的解耦,服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。微服務(wù)可以最大程度減少程序間的耦合程度,每個(gè)拆分后的服務(wù)都只需關(guān)注自身的功能需求并完成這些需求,每個(gè)服務(wù)都可以獨(dú)立地進(jìn)行部署,服務(wù)于服務(wù)之間是松耦合的,服務(wù)與服務(wù)之間可以通過RPC或者API等方式進(jìn)行通信或被調(diào)用??梢酝ㄟ^擴(kuò)展或增加單個(gè)服務(wù)擴(kuò)展整個(gè)應(yīng)用程序。
2.2 微服務(wù)與傳統(tǒng)服務(wù)之間的區(qū)別
圖2所示,傳統(tǒng)軟件設(shè)計(jì)是把所有的功能打包在一個(gè)WAR包里,所有模塊化組件混合后運(yùn)行在同一個(gè)服務(wù)中,部署在一個(gè)容器里,包含了DO/DAO,Service,UI等所有邏輯。只能對(duì)包含多個(gè)模塊化組件的整體進(jìn)程進(jìn)行水平擴(kuò)展,而無法對(duì)某個(gè)模塊化組件進(jìn)行水平擴(kuò)展。當(dāng)某個(gè)模塊化組件發(fā)生變化時(shí),需要對(duì)所有的模塊化組件進(jìn)行編譯、打包和上線 。久而久之,模塊間的依賴將會(huì)不清晰,互相耦合、互相依賴成為家常便飯。
傳統(tǒng)軟件架構(gòu)的優(yōu)點(diǎn):
(1)集中式管理。
(2)功能基本不會(huì)重復(fù)開發(fā),功能都在本地,沒有分布式的管理和調(diào)用消耗。
(3)代碼與數(shù)據(jù)中心化,在一個(gè)包中發(fā)布,運(yùn)行在同一個(gè)進(jìn)程中。
傳統(tǒng)架構(gòu)的缺點(diǎn):
(1)效率低:開發(fā)都在同一個(gè)項(xiàng)目改代碼,相互等待,沖突不斷。
(2)維護(hù)難:代碼功能耦合在一起,無從下手。
(3)不靈活:任何修改都要重構(gòu)整個(gè)項(xiàng)目。
(4)穩(wěn)定性差:一個(gè)微小的問題,都可能導(dǎo)致整個(gè)應(yīng)用掛掉。
(5)無法進(jìn)行水平擴(kuò)充。
圖3所示,采用微服務(wù)架構(gòu)是把整個(gè)程序拆分成了三個(gè)獨(dú)立的微服務(wù),微服務(wù)之間是水平的松耦合關(guān)系,強(qiáng)調(diào)每個(gè)服務(wù)的獨(dú)立性。每個(gè)微服務(wù)都是有功能意義的小型服務(wù),無論是開發(fā)階段、或者是部署和測(cè)試階段都是獨(dú)立的。無論是整個(gè)軟件還是每個(gè)微服務(wù),都可以進(jìn)行水平擴(kuò)展。每個(gè)微服務(wù)都有自己的存儲(chǔ)能力,可以有自己的數(shù)據(jù)庫,也可以使用統(tǒng)一數(shù)據(jù)庫。微服務(wù)通過API等方式進(jìn)行通信或者被調(diào)用,服務(wù)于服務(wù)之間使用IPC通信。
微服務(wù)架構(gòu)的優(yōu)點(diǎn):
(1)系統(tǒng)是由微服務(wù)組建成的,每個(gè)微服務(wù)都可以獨(dú)立進(jìn)行升級(jí),替換的組件。
(2)每一個(gè)獨(dú)立的微服務(wù)都能夠使用不同的語言和不同的團(tuán)隊(duì)進(jìn)行開發(fā),獨(dú)立開發(fā),獨(dú)立測(cè)試,獨(dú)立部署,獨(dú)立擴(kuò)展。只需要保證每個(gè)微服務(wù)都提供API服務(wù),實(shí)現(xiàn)服務(wù)之間的通信即可。
(3)可伸縮彈性架構(gòu)、當(dāng)服務(wù)器壓力過高的時(shí)候可動(dòng)態(tài)注冊(cè)服務(wù),分?jǐn)偡?wù)器壓力。
微服務(wù)架構(gòu)的缺點(diǎn):
(1)微服務(wù)架構(gòu)可能帶來過來的操作。
(2)鏈路變長(zhǎng),排查問題難度增加,分布式系統(tǒng)復(fù)雜不好管理。
3 采用微服務(wù)架構(gòu)設(shè)計(jì)的人員定位軟件
對(duì)比于傳統(tǒng)的軟件結(jié)構(gòu),考慮到現(xiàn)有人員定位軟件對(duì)數(shù)據(jù)存儲(chǔ)讀取的需求及客戶的個(gè)性化需求,以微服務(wù)架構(gòu)為基礎(chǔ),設(shè)計(jì)了新版的人員定位軟件,其軟件結(jié)構(gòu)如圖4所示。
此人員定位軟件采用微服務(wù)架構(gòu),把GIS服務(wù)、多系統(tǒng)融合、聯(lián)網(wǎng)客戶端、檢卡臺(tái)桌面、檢卡臺(tái)大屏、Redis內(nèi)存數(shù)據(jù)庫、Postgres主數(shù)據(jù)庫進(jìn)行水平架構(gòu),各服務(wù)之間是水平排列關(guān)系。如圖所示,軟件只是改變了系統(tǒng)的結(jié)構(gòu),并沒有改變系統(tǒng)的功能。用Docker來運(yùn)行各個(gè)微服務(wù)的情況下,部署在同一個(gè)網(wǎng)絡(luò)上的各個(gè)微服務(wù)之間可以用名稱而不是固定的IP來訪問彼此,在一定程度上實(shí)現(xiàn)了解耦。每個(gè)服務(wù)都實(shí)現(xiàn)了獨(dú)立性,可以獨(dú)立開發(fā)、獨(dú)立測(cè)試、獨(dú)立部署及獨(dú)立擴(kuò)展。軟件采用中心服務(wù)(API)進(jìn)行各個(gè)服務(wù)間的通訊和調(diào)度,實(shí)現(xiàn)整個(gè)程序的功能。更可以根據(jù)配置來選擇啟用哪些微服務(wù),比如要提供GIS服務(wù),就啟動(dòng)Publisher和GeoServer兩個(gè)鏡像,要增加視頻流服務(wù),就啟動(dòng)Liveup鏡像,只需要修改配置文件而無需修改代碼,就可實(shí)現(xiàn)靈活部署。軟件中設(shè)有主數(shù)據(jù)庫和內(nèi)存數(shù)據(jù)庫,每個(gè)單獨(dú)的服務(wù)并沒有提供服務(wù)數(shù)據(jù)庫,所有為服務(wù)都通過中心服務(wù)訪問數(shù)據(jù)庫。
采用微服務(wù)架構(gòu)設(shè)計(jì)的人員定位軟件的優(yōu)點(diǎn):
(1)把系統(tǒng)劃分成許多相對(duì)獨(dú)立的子系統(tǒng),通過API集成各子系統(tǒng)可以獨(dú)立開發(fā)、修改、驗(yàn)證。
(2)使用在互聯(lián)網(wǎng)界應(yīng)用廣泛的開源組件 可以借鑒的成熟經(jīng)驗(yàn)較多、技能通用性好的組件,更可以選用已有的成熟軟件使用API集合在軟件中 ,減少開發(fā)時(shí)間。
(3)引入分層的失效防御 可以更有效地發(fā)現(xiàn)系統(tǒng)異常。
(4)利用虛擬化技術(shù)來實(shí)現(xiàn)隔離和簡(jiǎn)化部署 各組件在虛擬環(huán)境中運(yùn)行,不受系統(tǒng)環(huán)境變化影響 可以使用自動(dòng)化工具實(shí)現(xiàn)快速部署。
采用微服務(wù)架構(gòu),從業(yè)務(wù)功能上來講,大型應(yīng)用分解為多個(gè)微服務(wù),既保持了功能的完整性,又解決了原系統(tǒng)的復(fù)雜性,既把傳統(tǒng)的人員定位軟件拆分為6-8個(gè)微服務(wù)。從技術(shù)開發(fā)角度講,可以分解給到多個(gè)團(tuán)隊(duì)并行開發(fā),每個(gè)團(tuán)隊(duì)可以選擇自己成熟技術(shù)的開發(fā), 而且由于模塊小型化,后續(xù)更新更為快捷。從部署的角度,每個(gè)微服務(wù)都是獨(dú)立部署,這樣不再需要協(xié)調(diào)服務(wù)部署的時(shí)候?qū)τ谄渌?wù)的影響,并且今后維護(hù)升級(jí)更為方便。以虹膜考勤模塊為例,在客戶提出需要增加虹膜考勤模塊時(shí),只需要在考勤服務(wù)中進(jìn)行修改,出于對(duì)技術(shù)和時(shí)間的考慮,設(shè)計(jì)人員采用了現(xiàn)在市面上已有成熟技術(shù)的公司的產(chǎn)品,只需提供API,即加入軟件中進(jìn)行應(yīng)用。此項(xiàng)操作很好的滿足了客戶的個(gè)性化需求,對(duì)于前期需求不明確的客戶來說,微服務(wù)架構(gòu)很好的解決的調(diào)研和開發(fā)之間的時(shí)間關(guān)系,避免了因?yàn)榇_認(rèn)過程復(fù)雜,而耽誤軟件研發(fā)進(jìn)度。并且對(duì)于開發(fā)后,客戶總是提出各種更改,微服務(wù)更是可以避免因?yàn)樾枨蟾亩斐筛恼麄€(gè)平臺(tái),進(jìn)而引起的大量人員的時(shí)間和金錢浪費(fèi)的情況。
采用微服務(wù)架構(gòu)后,不僅軟件維護(hù)及修改變得容易,更是滿足了人員定位軟件對(duì)于讀寫速度與查詢速度的這一硬性需求。在大數(shù)據(jù)時(shí)代,數(shù)據(jù)量快速增長(zhǎng),讀寫與查詢時(shí),都會(huì)有大量數(shù)據(jù)參與,這就要求有快速的讀寫與查詢速度,經(jīng)過測(cè)試,微服務(wù)架構(gòu)可以很好的滿足這一需求。
表1和表2可以看出,無論是讀寫速度和查詢速度,采用微服務(wù)架構(gòu)的新版人員定位軟件都是具有優(yōu)勢(shì)的,能夠很好的滿足大數(shù)據(jù)時(shí)代的需求。
4 結(jié)論
采用微服務(wù)架構(gòu)設(shè)計(jì)的人員定位系統(tǒng)軟件,把整個(gè)單一軟件拆分成了8個(gè)微服務(wù),服務(wù)之間實(shí)現(xiàn)了解耦合,即8個(gè)服務(wù)之間沒有相互關(guān)系,服務(wù)之間依靠中心服務(wù)進(jìn)行通信和調(diào)度,使存儲(chǔ)和讀取數(shù)據(jù)的速度大幅提升。采用微服務(wù)架構(gòu)的人員定位軟件系統(tǒng)滿足了客戶和開發(fā)人員的雙需求,更是滿足了大數(shù)據(jù)下的在數(shù)據(jù)讀寫與查詢的時(shí)間需求上,有著易修改,易發(fā)布,易更新,讀寫與查詢速度快的優(yōu)勢(shì)。
參考文獻(xiàn)
[1] 王仁龍.國內(nèi)煤礦井下人員定位系統(tǒng)現(xiàn)狀討論[C].第3屆全國煤炭工業(yè)生產(chǎn)一線青年技術(shù)創(chuàng)新文集,2008.
[2] 易敏.空間信息服務(wù)研究[D].上海:華東師范大學(xué),2008.
[3] 周丹,雷曉玲,章民融.基于微服務(wù)架構(gòu)的校車安全管理系統(tǒng)設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(8):165-169.
[4] 杜尊.基于微服務(wù)的互聯(lián)網(wǎng)金融平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2018.
One of? Underground Coal Mine Personnel Positioning system method which is Based on Microservice Architecture
QIU Feng-juan1,2,3,LI Xia1,2,3
(1.Coal Science and Technology Research Institute Co., Ltd., Beijing? 100013;
2.Coal Mine Emergency Escape Technology Equipment Engineering Research Center, Beijing? 100013;
3.Beijing Coal Mine Safety Engineering Technology Research Center, Beijing? 100013)
Abstract:Underground Coal Mine Personnel Positioning system is the necessary software to ensure the safety of coal mine production personnel. In order to solve the problem that the current personnel positioning system software which is not meet the needs of big data accurate positioning, the software architecture of personnel positioning system is modified and microservice architecture is used to upgrade the software. Abandon the original closed software structure, divide the software into several microservices, schedule and communicate through the center software. This kind of microservice architecture software can greatly improve the data access performance and better meet the storage requirements of TB level data. Microservice architecture relieves the tight coupling caused by database integration, makes the software system more flexible and easier to maintain and modify in the future. By using the micro service architecture design of the coal mine personnel positioning software, greatly improved the data storage and reading performance, realized the loose coupling between the software functions, and ensured the accurate positioning data requirements of the personnel positioning software.
Key words:microservice architecture;personnel positioning software;decoupling improves access performance;TB level data
數(shù)字技術(shù)與應(yīng)用2020年2期