張冬松,胡秀云,鄔長安,毛鳳翔
(1.國防科技大學 計算機學院,湖南 長沙 410073;2.信陽學院 大數據與人工智能學院,河南 信陽 464000)
大數據分析及可視化是近年來重新興起的一門多領域交叉學科,是一類從海量數據中自動分析獲得規律,并利用規律對未知數據進行預測,同時提供可視化交互方式和展示界面,在數據挖掘、電子商務、金融分析、政務管理等領域有著十分廣泛的應用,是當前各行各業的一個熱點[1]。
從大數據行業應用角度來看,當前大數據應用發展趨勢正向著行業縱深層次穩步前行。以政務大數據為例,用數據治理、用數據說話、用數據發展、用數據改進和用數據創新,已成為政務大數據公認的價值體系所在。通過大數據分析及可視化技術,將政務相關的數據整合起來進行有效分析,提供立體可視化展示能力,應用到政府業務領域,賦能政府機構,提升政務實施效能。
當前,大數據分析及可視化可以提供強大的數據讀取功能、高效的數據處理方法、可視化的數據探索方式、豐富的數據挖掘算法、簡易模型訓練等功能,從易用性、功能范圍、數據挖掘效果等方面全面超越了傳統的數據分析方法。利用這一先進的大數據分析及可視化技術有助于幫助客戶實現海量數據挖掘,利用一系列機器學習算法組合得到模型結果,經過可視化方式展示,以便更直觀地從圖表中發現數據背后的潛在價值。
政務大數據分析及可視化系統是一項系統工程,涉及到數據存儲、數據處理、模型建立、模型訓練、分析應用、可視化展示等一系列功能模塊。這些系統功能模塊數量多、交互復雜。開發和運維這樣的系統,出現問題是不可避免的。但是,如何快速發現并解決問題是關鍵。如果采取傳統的軟件開發模式,開發人員將軟件產品開發完成后,交由測試人員進行測試,再由運維人員進行部署。通常只有在最后部署階段才能發現問題,顯然這種反饋的難度和時間成本都很大。
當前政務大數據行業應用的用戶需求快速變化,高效自動部署技術是縮短大數據軟件產品交付時間的關鍵。DevOps技術[2]有助于實現快速自動化部署過程,通過不斷迭代交付來縮短發布周期。它使用持續集成和持續交付的方式,一旦代碼更新提交,就立刻得到反饋;如果發現問題,可以快速發現、定位并解決。這就極大降低了復雜軟件快速頻繁的更新與部署過程中產生問題的可能性,提升軟件的質量與穩定性。
近年來,由于DevOps的構建、部署、運維等各階段都有眾多配套工具提供支持,它已經得到非常廣泛的應用[3]。通常,軟件開發工作會根據各自不同的實際情況,按需搭建適合自身的DevOps工具鏈。文獻[4]提出了一種高效動態的應用部署引擎OpsFlow,其目標在于組合多種自動化部署技術以應對異構應用與部署環境,從而實現高效自動化的微服務應用部署。但是,該DevOps解決方案仍是一種虛擬機部署方式,并不適合在不同云、不同版本操作系統間進行快速遷移。
當前,一種新的開發部署方式是采用Docker容器和鏡像共享方式實現的[5],每個容器有自己的運行環境和文件系統,容器之間不會相互影響。相比虛擬機部署方式,這種基于Docker容器技術的開發、測試和運維一站式DevOps解決方案,更適合云計算環境下跨平臺、跨系統快速部署,已經得到廣泛應用[6]。
因此,面對政務行業領域中的海量數據,文中提出了面向DevOps的政務大數據分析可視化系統,以事件為中心,綜合各模態數據信息聚合和語義協同的結果,挖掘跨平臺、跨模態信息的內部語義展示方式,研究基于可視化工具的全方位展示技術,搭建統一DevOps平臺實現自動化開發、測試和運維,以更好地滿足政務行業應用對大數據產品快速、高效、多樣化的信息可視化需求。
主要貢獻如下:
(1)從政務大數據業務落地出發,提出了一種面向DevOps的政務大數據分析可視化系統,主要依托于機器學習算法設計大數據分析方法,利用交互式和大屏可視化技術提出大數據可視化方法;
(2)動態打通了機器學習分析工具、自動運維工具與數據分析可視化,相關技術的集成具有很強的系統指導和應用價值。
本節主要介紹政務領域大數據分析可視化系統的基本結構與主要功能,并且將DevOps的方法引入系統的開發運維全生命周期中。
本系統由云基礎設施、DevOps平臺和政務大數據分析可視化系統構成,如圖1所示。

圖1 整體功能架構
其中,底層是云基礎設施層,它表示整個系統的硬件資源環境。理想情況下它要么是公有云環境,要么是私有云環境,但在實際行業場景中,云基礎環境大多是異構環境,比如是由前兩者構成的混合云。
為了解決底層基礎環境的異構問題,中間層設計了一個DevOps平臺。它利用Docker容器引擎工具,提供一系列如創建容器鏡像和運行容器等核心方法,可無視基礎環境的多元性,實現統一源代碼管理、資源配置管理、監控、運維管理等基本功能;同時,它通過統一的持續集成和持續交付管理門戶,完成自動構建、單元測試、自動部署、集成測試、發布策略和驗收測試等關鍵功能。
頂層是應用層,即政務大數據分析可視化系統。它主要由6個模塊組成,其中:數據存儲與管理子系統的主要功能是存儲、管理系統中的所有數據;數據分析工具子系統則包含若干傳統統計分析工具和機器學習算法工具,針對輸入數據可產生分析結果;數據可視化工具子系統包含若干形狀的圖表繪制工具,針對輸入數據可進行圖形或表格可視化展示;數據分析應用子系統包含面向政務行業應用的數據分析軟件,針對與政務行業應用相關的輸入數據生成相應的分析結果;分析結果可視化子系統既包含面向政務行業應用的交互式可視化軟件,用圖表方式將分析結果展現出來,又包含面向電視終端的大屏可視化軟件,用大屏投放方式將分析結果展現到大型電視屏幕中。一個統一的訪問門戶模塊,不僅可以方便終端用戶訪問和控制上述5個子系統,還可以實現身份認證、權限管理、交互式分析、可視化控制等基本功能。
上述政務大數據分析可視化系統中各個子系統的工作流程如圖2所示。

圖2 系統工作流程
(1)數據存儲與管理子系統將從系統外部獲取的數據存儲在原始數據庫中;
(2)數據分析應用子系統調用相關的數據分析工具,通過數據存儲與管理子系統,從原始數據庫獲取對應數據,進行分析,并將分析結果存入結果數據庫中;
(3)分析結果可視化子系統調用相關的數據可視化工具,并通過數據存儲與管理子系統從結果數據庫中獲取數據,進行可視化圖表展示。
上述DevOps平臺中各個模塊之間的交互流程如圖3所示。

圖3 DevOps交互流程
(1)提交:DevOps開發者將政務大數據分析可視化系統中源代碼在本地測試通過后,提交到統一源代碼管理系統,如Gitlab[7]代碼倉庫;
(2)自動構建:利用現有的持續集成工具如Jenkins[8]等軟件,在檢測到有新版本的源代碼提交后,便自動從統一源代碼倉庫中拉取對應的源代碼,自動編譯、構建;
(3)單元測試:持續集成工具完成自動構建后,可以自動執行DevOps開發者指定的單元測試代碼;
(4)自動部署到測試環境:在完成單元測試后,DevOps運維者利用現有的資源配置管理系統如Ansible[9]軟件,根據實際需求,設置云基礎設施中各種資源,再通過現有的持續交付工具如Jenkins、Docker Hub[10]等軟件,將上一步得到的應用程序自動部署到與生產環境相近的測試環境中;
(5)集成測試:DevOps測試者在單元測試的基礎上,將所有應用程序按照設計要求,組裝成一個子系統或系統,進行集成測試,目標在于測試多種應用程序的組合能否正常工作;軟件單元只有經過集成才能形成一個有機的整體;
(6)自動部署到預發布環境:當開發的政務大數據分析可視化軟件系統通過測試環境中集成測試后,DevOps運維者可以利用現有持續交付系統中發布策略管理功能,把軟件系統自動部署到相當于生產環境的預發布環境中,做好客戶驗收測試的準備工作;
(7)驗收測試[11]:在預發布環境中,DevOps客戶或獨立測試人員可以根據測試計劃對大數據分析可視化系統進行功能測試和破壞性測試,目的在于充分暴露系統的設計和功能問題,以便得到客戶對政務大數據分析可視化系統的認可;
(8)部署到生產環境:通過所有測試后,DevOps運維者便可以利用現有持續交付系統中發布策略管理功能,使用灰度發布方法將預發布環境中最新的大數據分析可視化系統軟件版本自動部署到真實生產環境中;這里,灰度發布又稱金絲雀發布(Canary release)[12],是在原有版本可用的情況下,同時部署一個新版本系統作為“金絲雀”,驗證新版本的性能和表現,以保障整體系統穩定的情況下,盡早發現、調整問題;一旦新版本驗證通過,逐步替換所有系統為新版本;
(9)監控運維:DevOps運維者還可以通過監控運維管理系統,對云基礎設施中各種資源,進行實時監控、運維管理、日志分析等操作。
在本節中,詳細介紹大數據分析工具子系統中所用到的常用分析工具類型,以及如何根據給定的數據和分析工具,先訓練后分析,最后實現大數據分析應用子系統的方法。
數據分析工具子系統通常由分類、聚類、回歸、特征提取、時間序列分析、推薦、關聯等分析模塊構成,每個模塊包含若干分析算法[13]。分類模塊包含邏輯回歸、支持向量機、樸素貝葉斯、神經網絡、隨機森林等算法;聚類模塊包括K均值、離群點檢測等算法;回歸模塊包括線性回歸、K近鄰、決策樹、神經網絡等算法;特征提取包括循環特征消減選擇(RFE)等算法[14];時間序列分析包括趨勢分析、自回歸滑動平均模型(ARMA)等算法[15];推薦模塊包括基于用戶和基于物品的協同過濾算法;關聯模塊包含先驗知識(Apriori)關聯分析算法。
需說明,上述所有算法分析工具均與真實政務行業應用無關。算法分析工具接收來自原始數據庫中數據作為輸入后,會輸出分析結果,供數據分析應用子系統中的分析應用軟件調用。
為取得更好的分析效果,大數據分析過程通常需要先訓練后分析。其中,訓練階段主要是:從原始數據庫中讀取一系列樣本數據,經由數據分析工具中的訓練模塊,生成相應的分析模型文件,將模型文件存儲到指定文件夾。分析階段主要是:從指定文件夾中獲取分析工具模型文件,讀取待分析的數據文件,再經由數據分析工具中的分析模塊,生成相應的分析結果,將結果數據存儲到結果數據庫中。
真實政務大數據行業應用類型繁多,為此提出的數據分析應用子系統是由多個應用類型模塊構成,每類應用模塊又包含多項分析內容,如圖4所示。
這里,每項分析內容可以看作一個應用分析軟件,它也分為訓練和分析兩部分。訓練部分的主體是調用數據分析工具子系統中相應算法工具的訓練模塊,并讀入與此相匹配的樣本數據;此外,何時進行訓練,則由訓練策略決定,即可以人工實時啟動,也可以自動定時啟動。分析部分的主體是調用數據分析工具子系統中相應算法工具的分析模塊,并讀入與此相匹配的分析數據;同樣,何時進行分析,由分析策略決定,可以人工實時啟動,也可以自動定時啟動。

圖4 數據分析應用子系統的組成
根據實際政務大數據行業應用的需求,分析結果可視化子系統又可細分為兩種子系統:交互式可視化和大屏可視化。
數據可視化工具子系統是由柱狀圖、散點圖、折線圖、餅圖、二維矩陣圖、分布直方圖、分類圖、時間序列圖、雷達圖、詞云圖等圖表工具模塊構成。所有圖表工具模塊可以與真實政務行業應用無關。圖表工具模塊接收模型文件作為數據輸入后,會輸出指定類型的圖表結果,再提供給分析結果可視化子系統。
交互式可視化需求主要是針對政務大數據行業內部復雜、海量的業務數據和外部數據,基于大數據云平臺,如何通過良好的人機交互操作進行數據可視化分析,實現探索式分析、全維度數據鉆取等功能。因此,支持分析結果的終端交互式可視化展示功能,很可能是交互式可視化設計中需要關注的關鍵點。
交互式可視化子系統是由Web頁面、Server服務器、Scheduler調度器和Visual Engine可視化引擎四部分組成。該子系統采用W-S-S-VE循環流程實現人機交互式展示分析結果,具體內容如下:
(1)Web頁面負責接收客戶操作,向Server服務器發送可視化操作請求;這里的Web頁面其實可以作為統一訪問門戶的一部分;
(2)當Server服務器接收到可視化操作請求后會創建可視化任務,然后把該任務傳送給Scheduler調度器;
(3)Scheduler調度器接收到傳遞的可視化任務后,先調度這些任務并為其分配資源,再向Visual Engine可視化引擎發送可視化數據處理的請求;
(4)Visual Engine可視化引擎接收到可視化數據請求后,會調用數據可視化工具子系統中相關圖表工具,然后加載從結果數據庫中獲取的模型數據文件,繪制圖表,最后把處理后的圖表傳回Web頁面,由Web頁面向客戶展示處理繪制數據的可視化結果。
大屏可視化需求主要是指在電視大屏上對大數據分析結果進行可視化展現。在大數據背景下,大屏可視化需求背后存在著復雜的數據來源問題,如何保證復雜數據處理性能與多屏頁面美工效果之間的合理平衡,很可能是大屏可視化設計中應該關注的重要指標。
大屏可視化子系統是由多個不同布局形式的顯示屏構成,每個展示屏又由若干顯示塊構成,每個顯示塊是最小顯示單元,它可以展示某個圖表工具繪制出來的圖形或表格。顯示塊的主體是調用數據可視化工具子系統中相應的圖表工具模塊,加載需要大屏可視化展示的分析結果數據;這些分析結果數據在顯示前會保存在模型文件中;還需要顯示控制策略來控制該顯示塊中圖表的顯示時機、顯示位置、尺寸、顏色等外部形態。
實現大屏可視化子系統的基本流程包括:
(1)業務專家確定大屏內容顯示方案。
根據業務場景抽取關鍵指標,然后定義分析指標的維度,最后定義不同指標的圖表類型和頁面劃分。
(2)美工人員設計整體布局和風格。
根據業務專家劃分的頁面進行指標布局設計,再根據用戶要求的色系進行樣圖設計,最后根據用戶定稿的樣圖實施切圖。
(3)開發人員研發前端頁面及優化。
根據切好的圖,結合樣式需求制作靜態網頁模板,然后調用后端數據接口獲取數據,開發前端頁面,最后整體大屏顯示細節調整與優化。
不論交互式可視化方法,還是大屏可視化需求,分析結果可視化子系統的工作流程如圖5所示。
(1)可以采取周期性定時方法或者按需實時方法,從結果數據庫中獲取指定的數據,傳送給數據存儲與管理子系統中;
(2)數據存儲與管理子系統將收到的來自結果數據庫中數據生成模型文件,傳送到顯示文件夾中保存起來;
(3)系統客戶可以通過統一訪問門戶,在網頁上采取人工輸入自動化腳本或直接操作等方式,實現對分析結果可視化展示的數據內容、展示效果等的有效控制;
(4)分析結果可視化子系統響應人工輸入的自動化腳本或實時操作,從數據可視化工具子系統中調用相關的圖表工具,為該圖表工具設置模型文件所在的顯示文件夾路徑;
(5)分析結果可視化子系統從顯示文件夾中獲取指定的分析結果模型文件;
(6)根據人工輸入所提供的顯示控制方式,分析結果可視化子系統把指定的分析結果模型文件加載到對應的圖表工具中,然后將圖表工具繪制出來的圖形或表格,傳送給交互式可視化子系統或大屏可視化子系統,實現最終的可視化展示效果;
(7)如果上一步是完成交互式可視化展示,那么交互式可視化子系統還會將得到的圖表返回給統一訪問門戶中的Web頁面,以便將可視化效果展示給客戶,實現與客戶之間的循環交互。
隨著容器技術的發展,Docker容器已經成為使用量增長最快的工具[16]。通過Docker提供的DevOps系統,可以將軟件系統的運行環境標準化、統一化,以鏡像和在鏡像基礎上構建的容器為基礎,同一個鏡像可以部署到開發、測試、預發、生產等環境的容器中。這一過程都可自動完成,不需要重復的安裝部署,提高了開發和運維效率。
與此同時,與Docker容器相關的DevOps工具種類繁多、用法各異、適用場景也不同[17]。因此,在本節中詳細介紹一種基于Docker容器技術的DevOps平臺,以持續集成、持續交付和容器云為核心,允許DevOps開發者、測試者和運維者通過一個統一的管理門戶來使用該平臺,從而打通開發、測試、運維全過程,如圖6所示。

圖6 基于Docker容器的持續集成和持續交付
圖6中,持續集成以源代碼版本管理軟件Gitlab和開源持續集成軟件Jenkins為核心;持續交付是以Jenkins和容器部署配置軟件Docker Hub為核心;容器云是以測試環境、預發環境和生產環境等三種Docker容器部署方式為核心。
當DevOps開發者通過統一管理門戶將源代碼提交給Gitlab進行版本管理和項目文檔的配置管理后,Jenkins和相關工具插件會持續對源代碼進行檢查、編譯和測試,這便是持續集成過程,具體內容如下:
(1)Jenkins可以在Repository URL中配置好Gitlab代碼倉庫地址,使在Gitlab中每次提交后觸發拉起最新版本的源代碼;
(2)Jenkins可以通過配置Maven工具插件地址,利用Maven等插件對源代碼進行編譯,實現自動構建;
(3)Jenkins在對源代碼構建完畢后,還可以調用SonarQube[18]、TestNG[19]等工具插件,進行各項自動化檢查。其中,SonarQube用于代碼質量管理檢查,TestNG用于代碼自動化測試,包括功能測試、性能測試、安全測試等。利用工具實現自動化檢查,可以有效提高源代碼的規范性,發現潛在的代碼缺陷,提高代碼質量。
當DevOps運維者通過統一管理門戶對應用鏡像進行Docker容器云資源的配置管理和鏡像部署管理后,Jenkins和Docker Hub會持續將構建好的Docker應用鏡像,自動部署到Docker容器云中相應的測試環境、預發環境和生產環境,這便是基于Docker容器云的持續交付過程。同時,DevOps測試者會通過統一管理門戶,指定相關的測試方式,實現自動測試或人工測試。具體內容如下:
(1)Jenkins還可以通過配置Docker容器服務器(Docker Hub)地址,根據源代碼應用中編寫好的Dockerfile文件[16],自動構建應用鏡像;這里,通過執行Dockerfile文件中基礎鏡像信息、維護者信息、鏡像操作和容器啟動等4種類型指令,構建一個虛擬容器,實現快速構建;
(2)Docker Hub服務器軟件可以利用Terraform開源工具插件[20],根據應用系統的拓撲、依賴關系等對容器云資源進行配置管理;還可以利用Ansible開源工具插件,根據不同的部署方式,將應用鏡像自動部署到不同的Docker容器云環境中;
(3)當應用鏡像通過預發環境中DevOps測試者對其的A/B測試[21]后,DevOps運維者可以指定金絲雀發布策略[12],實現預發環境中最新版本的應用鏡像自動部署到生產環境中;
(4)為實現持續交付過程,Docker Hub會與三種類型容器云環境中應用鏡像進行多次拉鏡像和推鏡像操作,可在任意環境實現多個應用系統的快速部署。
限于政務數據安全要求,在本節構建了大數據分析可視化應用的演示示例,用于預先驗證提出的方法。
基于Python編程語言的數據分析可視化系統的交互演示界面如圖7(a)所示。該交互演示界面是以圖形插件的形式在Python3環境下運行,集成了4種數據預處理方法、12種數據分析工具和12種數據可視化工具。圖7(b)為當選中三維點圖后,該交互界面根據相關數據,實時繪制出來的三維點圖。三維點圖所展示的內容都是持續動態變化,這是通過可以與后端的分析結果數據服務進行數據實時交互而得到的。經驗證分析,該交互演示界面能夠較好地反映出真實場景中數據分析工具子系統和數據可視化工具子系統的應用。

圖7 數據分析可視化系統的交互演示界面和三維點圖示例
提出了一種面向DevOps自動開發部署平臺的政務大數據分析可視化系統,依托于機器學習算法設計大數據分析方法,利用交互式和大屏可視化技術提出大數據可視化方法。該系統已部署在某政府部門,根據真實場景下系統運行情況及應用結果表明,提出的大數據分析及可視化系統,可以通過數學模型和機器學習幫助客戶挖掘大數據更深層次的價值和內涵,滿足了前期的政務大數據分析與可視化需求。該系統后續會持續迭代、開發、部署,以期更好地服務于客戶的業務體系。