基于微服務(wù)的鐵路企業(yè)協(xié)同辦公系統(tǒng)研究與實現(xiàn)(鐵路上還可以提供哪些微服務(wù))
協(xié)同辦公系統(tǒng)是指通過先進的技術(shù),將部分辦公業(yè)務(wù)物化于人以外的各種設(shè)備,并由這些設(shè)備和辦公人員共同完成辦公業(yè)務(wù)的人機信息系統(tǒng)[1]。由于鐵路企業(yè)辦公系統(tǒng)建設(shè)時間較早,傳統(tǒng)的信息技術(shù)及思想構(gòu)建的單體應用已經(jīng)無法滿足現(xiàn)代企業(yè)快速業(yè)務(wù)增長。目前,傳統(tǒng)的協(xié)同辦公系統(tǒng)多采用單體架構(gòu)進行構(gòu)建,系統(tǒng)可復用性、可維護性和可擴展性較差。微服務(wù)通過化整為零的概念,將復雜的信息化部署分解成更小、更獨立的微服務(wù)。微服務(wù)有著技術(shù)選型靈活、系統(tǒng)內(nèi)部服務(wù)不冗余、獨立部署、具備更好的容錯機制等優(yōu)勢[2-3]。
基于微服務(wù)的理念,從滿足鐵路企業(yè)辦公業(yè)務(wù)發(fā)展需要出發(fā),構(gòu)建集統(tǒng)一身份認證、內(nèi)網(wǎng)門戶、電子公文、工作日志、協(xié)同交流、綜合事務(wù)及移動辦公等業(yè)務(wù)為一體的協(xié)同辦公平臺,實現(xiàn)鐵路企業(yè)之間及部門間及時、高效,有序、可控的信息互聯(lián)互通與協(xié)同辦公自動化,促進鐵路企業(yè)辦公流程優(yōu)化,提升企業(yè)整體協(xié)作水平和辦公效率,為提升鐵路企業(yè)工作效率和管理水平提供有力支撐。
1. 架構(gòu)設(shè)計
1.1 總體架構(gòu)
鐵路企業(yè)協(xié)同辦公系統(tǒng)總體架構(gòu),如圖1所示。
圖 1 總體架構(gòu)
根據(jù)“大平臺 微模塊”辦公信息化總體架構(gòu),將系統(tǒng)分為不同業(yè)務(wù)模塊,各業(yè)務(wù)模塊分別對應企業(yè)局域網(wǎng)應用和企業(yè)互聯(lián)網(wǎng)應用兩部分,企業(yè)局域網(wǎng)用戶通過電腦終端設(shè)備進行訪問,互聯(lián)網(wǎng)移動終端通過虛擬專用網(wǎng)(VPN)隧道接入企業(yè)互聯(lián)網(wǎng)移動安全接入平臺,訪問業(yè)務(wù)系統(tǒng)前端頁面。企業(yè)互聯(lián)網(wǎng)前端頁面調(diào)用接口轉(zhuǎn)發(fā)服務(wù),與企業(yè)局域網(wǎng)數(shù)據(jù)接口之間通過安全平臺進行安全隔離及數(shù)據(jù)交換。系統(tǒng)建設(shè)統(tǒng)一身份認證系統(tǒng),辦公信息系統(tǒng)各業(yè)務(wù)模塊集成統(tǒng)一身份認證,實現(xiàn)單點登錄。
1.2 邏輯架構(gòu)
系統(tǒng)業(yè)務(wù)服務(wù)采用微服務(wù)技術(shù)構(gòu)建,分為表現(xiàn)層、接口層、實體層、業(yè)務(wù)服務(wù)層、公共服務(wù)層、服務(wù)監(jiān)督與治理層及資源層[4-5],如圖2所示。
圖 2 邏輯架構(gòu)
(1)表現(xiàn)層:使用前后端分離技術(shù),對后臺服務(wù)進行組合展示,完成與用戶的交互。系統(tǒng)中的內(nèi)網(wǎng)門戶、電子公文、工作日志、協(xié)同交流、綜合事務(wù)及移動辦公等頁面功能,可以在后臺服務(wù)接口確定的情況下進行前端的獨立開發(fā)。
(2)接口層:將實體、業(yè)務(wù)服務(wù)、公共服務(wù)所覆蓋的內(nèi)容進行聚合,為表現(xiàn)層提供符合展示要求的接口,如認證接口、獲取待辦事項接口、文檔預覽接口、流程引擎接口等。同時也提供與其他的外部應用系統(tǒng)交互的接口,包括統(tǒng)一身份認證接口、電子檔案歸檔接口、電子公文分發(fā)接口。
(3)業(yè)務(wù)服務(wù)層:結(jié)合實際業(yè)務(wù),將實體和公共服務(wù)進行封裝,為接口服務(wù)提供支持。
(4)公共服務(wù)層:將系統(tǒng)中多處用到的功能進行統(tǒng)一的封裝,以便更好地為業(yè)務(wù)服務(wù)層提供支持。
(5)實體層:微服務(wù)架構(gòu)下的實體同時為業(yè)務(wù)服務(wù)和公共服務(wù)提供支持,在接口需要的情況下也可以直接調(diào)用。系統(tǒng)中所有的數(shù)據(jù)均將封裝為接口,方便對外提供統(tǒng)一的能力。
(6)服務(wù)監(jiān)督與治理:微服務(wù)架構(gòu)下,對服務(wù)的安全、監(jiān)控、預警十分重要,服務(wù)監(jiān)督與治理貫穿公共服務(wù)層、業(yè)務(wù)服務(wù)層和接口層,主要提供服務(wù)注冊、服務(wù)監(jiān)控、服務(wù)授權(quán)、日志分析、限流熔斷等功能以及分布式事務(wù),實現(xiàn)對微服務(wù)的治理。
(7)資源層:主要是指系統(tǒng)操作的相關(guān)資源,包括數(shù)據(jù)庫資源及文件資源。
1.3 網(wǎng)絡(luò)架構(gòu)
鐵路企業(yè)協(xié)同辦公系統(tǒng)網(wǎng)絡(luò)架構(gòu),如圖3所示。
圖 3 網(wǎng)絡(luò)架構(gòu)
應用程序及數(shù)據(jù)庫部署在企業(yè)局域網(wǎng)應用類服務(wù)器區(qū),移動安全接入平臺、移動業(yè)務(wù)前端頁面及接口轉(zhuǎn)發(fā)服務(wù)部署在企業(yè)互聯(lián)網(wǎng)應用類服務(wù)器區(qū)。
電腦終端用戶通過企業(yè)局域網(wǎng)終端接入?yún)^(qū)接入訪問,移動終端用戶通過互聯(lián)網(wǎng)接入訪問。移動辦公通過VPN加密隧道接入移動安全接入平臺,訪問企業(yè)互聯(lián)網(wǎng)業(yè)務(wù)系統(tǒng)前端頁面,前端頁面調(diào)用移動接口轉(zhuǎn)發(fā)服務(wù)。企業(yè)互聯(lián)網(wǎng)移動接口轉(zhuǎn)發(fā)服務(wù)器采用PKI/CA認證體系,通過CA證書實現(xiàn)與安全平臺的身份識別,再通過防火墻及安全平臺應用訪問控制,實現(xiàn)企業(yè)互聯(lián)網(wǎng)與企業(yè)局域網(wǎng)服務(wù)器之間數(shù)據(jù)交互,從而實現(xiàn)數(shù)據(jù)的安全隔離及交換。
2. 功能設(shè)計
系統(tǒng)以用戶為中心、以服務(wù)為宗旨、以任務(wù)為驅(qū)動,根據(jù)鐵路企業(yè)黨政工團各項辦公業(yè)務(wù)需求,打造門戶網(wǎng)站、電子公文、工作日志、溝通交流、綜合事務(wù)、移動辦公等多業(yè)務(wù)融合的一站式辦公服務(wù)平臺,構(gòu)建了橫向集成,縱向貫通、風格統(tǒng)一、上下聯(lián)動、資源共享的鐵路企業(yè)辦公服務(wù)體系,如圖4所示。
圖 4 功能設(shè)計圖
2.1 電腦端功能設(shè)計
系統(tǒng)建設(shè)統(tǒng)一身份認證平臺,將鐵路企業(yè)組織機構(gòu)及人員信息進行統(tǒng)一管理。業(yè)務(wù)系統(tǒng)集成統(tǒng)一身份認證,實現(xiàn)單點登錄,應用訪問授權(quán)管理。用戶通過鐵路企業(yè)門戶網(wǎng)站統(tǒng)一登錄,用戶登錄成功后,以應用圖標的形式在個人工作臺展示當前登錄用戶有權(quán)訪問的所有業(yè)務(wù)系統(tǒng),展示所有待辦事項,解決用戶需要登錄不同業(yè)務(wù)系統(tǒng)才可處理相關(guān)事務(wù)的問題,不但提高工作效率,更能提升用戶體驗。
2.2 移動端功能設(shè)計
在保障網(wǎng)絡(luò)信息安全的基礎(chǔ)上,建設(shè)移動辦公App,制定移動業(yè)務(wù)接入標準,實現(xiàn)鐵路企業(yè)移動業(yè)務(wù)處理,包括以下功能[6]。
(1)登錄認證
實現(xiàn)移動辦公App雙因子登錄認證功能,包括用戶名/口令認證、人臉或者指紋等生物特征認證,保證移動辦公信息安全。
(2)應用中心
用戶登錄成功后,根據(jù)用戶所擁有的權(quán)限,在應用中心展示用戶有權(quán)訪問的應用列表,列表根據(jù)應用類別進行分類展示,用戶可進行選擇性下載使用及更新操作等。
(3)個人工作臺
個人工作臺實現(xiàn)個人所有待處理事項的集中提醒和展示。用戶登錄成功后,顯示用戶所下載的所有應用的待辦條數(shù),點擊某一應用,可查看該應用下所有待辦事項列表。
(4)移動業(yè)務(wù)處理
實現(xiàn)內(nèi)網(wǎng)門戶發(fā)布信息的審核和展示,公文全流程電子化辦理,工作日志填報、點評,綜合事務(wù)類流程審批,以及移動即時通訊等功能。
(5)個人設(shè)置
實現(xiàn)移動辦公App個人信息設(shè)置,提供技術(shù)支持、推廣信息及退出登錄功能。
(6)移動終端管理
系統(tǒng)針對接入的移動終端設(shè)備進行統(tǒng)一管理,同時根據(jù)用戶設(shè)有設(shè)備信賴清單及黑名單,只有認證通過的設(shè)備才允許接入,并且綁定登錄用戶。如果終端設(shè)備不慎丟失,可聯(lián)系管理員進行設(shè)備鎖止,將設(shè)備拉入黑名單,禁止該設(shè)備接入平臺。
2.3 接口設(shè)計
電腦終端訪問采用基于HTTP協(xié)議,通過Restful服務(wù)接口等方式進行數(shù)據(jù)傳輸定義和服務(wù)對接。系統(tǒng)內(nèi)多個服務(wù)之間接口同步調(diào)用通過Feign實現(xiàn),簡化服務(wù)之間調(diào)用邏輯。異步通信通過消息隊列實現(xiàn)。內(nèi)網(wǎng)門戶內(nèi)容發(fā)布通過FTP協(xié)議實現(xiàn)與應用服務(wù)器通信,用于更新靜態(tài)網(wǎng)頁。系統(tǒng)之間通過WebServices接口的形式實現(xiàn)數(shù)據(jù)交換。
移動終端采用基于VPN隧道HTTPS協(xié)議進行數(shù)據(jù)交換,通過國密算法將數(shù)據(jù)進行加密后再進行傳輸,數(shù)據(jù)格式為JSON,確保數(shù)據(jù)的安全和統(tǒng)一[7]。
3. 關(guān)鍵技術(shù)
鐵路企業(yè)協(xié)同辦公系統(tǒng)技術(shù)架構(gòu),如圖5所示。
圖 5 技術(shù)架構(gòu)
(1)系統(tǒng)建有API路由網(wǎng)關(guān)、服務(wù)注冊中心集群、ELK(Elasticsearch Logstash Kibana)日志集群、消息隊列集群、緩存集群、服務(wù)監(jiān)控集群、數(shù)據(jù)庫集群及業(yè)務(wù)服務(wù)集群[2]。
(2)業(yè)務(wù)服務(wù)首先在服務(wù)注冊中心進行注冊,注冊中心提供服務(wù)注冊、動態(tài)配置管理及實時健康檢查,以防止向不健康的主機或服務(wù)實例發(fā)送請求。用戶請求通過負載均衡配置到達API路由網(wǎng)關(guān),通過API路由網(wǎng)關(guān)實現(xiàn)服務(wù)發(fā)現(xiàn)、服務(wù)調(diào)用、以及服務(wù)的降級、限流、熔斷等,從而達到業(yè)務(wù)服務(wù)的解耦的目的。
(3)系統(tǒng)建設(shè)消息隊列集群,通過消息隊列,實現(xiàn)業(yè)務(wù)服務(wù)之間的異步通信、解耦、故障轉(zhuǎn)移以及并發(fā)緩沖等。同時,基于分布式事務(wù),配合消息重試與補償機制,保證消息的百分百可靠達到,實現(xiàn)數(shù)據(jù)的最終一致性。
(4)通過開源ELK構(gòu)建集中日志系統(tǒng),完成服務(wù)鏈路、應用操作、應用異常、應用服務(wù)器中間件、服務(wù)器的日志等多源日志數(shù)據(jù)的收集、傳輸、存儲等功能,并應用聚合日志數(shù)據(jù)進行分析,挖掘日志的價值信息,同時進行展示及告警等操作[8-9]。
(5)系統(tǒng)建設(shè)緩存集群,為保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性,系統(tǒng)基于訂閱Binlog的同步機制實現(xiàn)緩存與數(shù)據(jù)庫的異步更新。熱數(shù)據(jù)通過Redis讀取,數(shù)據(jù)庫增加、更新、刪除業(yè)務(wù)通過操作Binlog配合消息隊列實現(xiàn)將數(shù)據(jù)更新至Redis緩存。
(6)系統(tǒng)通過Prometheus提供Exporter導出器,收集系統(tǒng)各個業(yè)務(wù)服務(wù)及集群運行時的參數(shù),實時監(jiān)控虛擬機的CPU負載、內(nèi)存消耗、網(wǎng)絡(luò)IO、硬盤使用量、系統(tǒng)緩存、消息隊列等。通過開源度量分析和可視化工具Grafana,將采集的數(shù)據(jù)進行可視化的展示,支持可視方式定義最重要指標的警報規(guī)則,在數(shù)據(jù)達到閾值時及時告知和預警。通過Skywalking實現(xiàn)業(yè)務(wù)請求的全鏈路追蹤、服務(wù)診斷,為系統(tǒng)運維提供問題排查信息。
(7)系統(tǒng)支持通過Gitlab和Jenkins實現(xiàn)服務(wù)自動化部署。針對鐵路企業(yè)開發(fā)環(huán)境與生產(chǎn)環(huán)境網(wǎng)絡(luò)物理隔離等條件,支持通過Jenkins實現(xiàn)程序包的自動分發(fā)、資源配置及部署等,最大限度減少項目管理及服務(wù)運維的工作量。
(8)按照微服務(wù)的理念,使用容器作為微服務(wù)載體實現(xiàn)服務(wù)快速部署、迭代,容器里面包含服務(wù)運行所需的一切內(nèi)容,比如代碼、依賴關(guān)系、庫、二進制文件等。與虛擬機相比,容器可以共享操作系統(tǒng)內(nèi)核,占用的空間更少,啟動速度也更快。針對不具備容器化資源管理能力的情況,系統(tǒng)同樣支持使用虛擬機作為微服務(wù)載體。
4. 結(jié)束語
通過調(diào)研鐵路企業(yè)協(xié)同辦公系統(tǒng)的應用需求,應用微服務(wù)技術(shù),通過服務(wù)劃分、業(yè)務(wù)解耦,減少了冗余代碼的產(chǎn)生,降低了新增、修改和維護代碼的成本,提升了業(yè)務(wù)的快速響應能力。但是,系統(tǒng)經(jīng)過微服務(wù)拆分后,從單體變成了分布式,多個服務(wù)分布在不同的服務(wù)器上,服務(wù)間調(diào)用的成本更高,調(diào)用過程中可能還會遇到網(wǎng)絡(luò)抖動等外在問題,需要完善相應的服務(wù)監(jiān)控和管理能力,對項目的管理及系統(tǒng)的運維提出了更高的要求。
目前,系統(tǒng)已在中國國家鐵路集團有限公司、中國鐵路北京局集團有限公司、中國鐵路信息公司、中國鐵路國際有限公司實施并應用,在取得了良好的系統(tǒng)使用效果的同時,也積累了大量微服務(wù)治理、運維經(jīng)驗,可為系統(tǒng)的進一步優(yōu)化完善提供技術(shù)支持。