張永躍
(天津市大數(shù)據(jù)管理中心 天津市 300000)
自2016 年“互聯(lián)網(wǎng)+政務(wù)服務(wù)”技術(shù)體系規(guī)范發(fā)布以來,全國各地推行政務(wù)服務(wù)“一網(wǎng)通辦”,打破信息孤島,有效促進了政務(wù)數(shù)據(jù)跨部門、跨層級的協(xié)同應(yīng)用。部門間政務(wù)數(shù)據(jù)共享主要通過前置機交換和服務(wù)接口方式實現(xiàn),在此過程中,數(shù)據(jù)供需雙方需明確約定數(shù)據(jù)格式、交換頻率以及數(shù)據(jù)對賬機制等,以保證數(shù)據(jù)交換的安全性、完整性和時效性。為凸顯“互聯(lián)網(wǎng)+政務(wù)服務(wù)”背景下“一網(wǎng)通辦”優(yōu)勢,有必要按業(yè)務(wù)場景特性選用不同的數(shù)據(jù)共享模式,優(yōu)化共享流程,提高用戶體驗。以跨部門單日辦結(jié)業(yè)務(wù)為例,對于涉及多部門參與、前置依賴性強、實時響應(yīng)要求高的共享應(yīng)用場景可采用微服務(wù)+Redis 模式實現(xiàn)高效協(xié)同。
在系統(tǒng)建設(shè)設(shè)計中,為降低業(yè)務(wù)邏輯復(fù)雜性,解耦是系統(tǒng)設(shè)計的重要考慮因素。部分政務(wù)信息系統(tǒng)受歷史因素等影響,存在系統(tǒng)龐大、業(yè)務(wù)邏輯復(fù)雜、數(shù)據(jù)結(jié)構(gòu)冗余等問題,導(dǎo)致業(yè)務(wù)拆分困難,在互聯(lián)網(wǎng)+背景下的服務(wù)輸出效能不高。在此情況下,保持系統(tǒng)運行穩(wěn)定的同時能夠持續(xù)提供跨部門業(yè)務(wù)協(xié)同服務(wù),是一網(wǎng)通辦業(yè)務(wù)的基本目標。隨著政務(wù)云等基礎(chǔ)設(shè)施的發(fā)展,政務(wù)信息系統(tǒng)建設(shè)逐步向政務(wù)云端遷移部署,已經(jīng)具備提供云架構(gòu)、平臺化、資源彈性擴展的條件,可以為微服務(wù)應(yīng)用提供靈活的資源配置保障。根據(jù)業(yè)務(wù)場景需要,通過構(gòu)建場景業(yè)務(wù)模型、編制場景應(yīng)用數(shù)據(jù)目錄、微服務(wù)能力輸出的方式,實現(xiàn)在原業(yè)務(wù)系統(tǒng)最低改造下的跨部門協(xié)同,有效降低部門間業(yè)務(wù)聯(lián)動成本,提高共享效率。
本文中描述的業(yè)務(wù)主要有以下場景特點:以政務(wù)服務(wù)中跨部門業(yè)務(wù)協(xié)同為主,部門間以信息同步為核心需求,各部門業(yè)務(wù)邊界清晰,業(yè)務(wù)邏輯關(guān)系明確;不關(guān)心各部門業(yè)務(wù)系統(tǒng)復(fù)雜性及性能,無需改造各部門原系統(tǒng)業(yè)務(wù)邏輯,僅在原系統(tǒng)基礎(chǔ)上通過增加微服務(wù)方式提交、獲取相關(guān)數(shù)據(jù);實時性要求高,目標是實現(xiàn)“立刻辦、馬上辦”;各部門業(yè)務(wù)系統(tǒng)所在網(wǎng)絡(luò)相對統(tǒng)一,多以政務(wù)外網(wǎng)環(huán)境為主。
3.2.1 微服務(wù)
微服務(wù)架構(gòu)風(fēng)格是一種將單體應(yīng)用程序開發(fā)為一組小型服務(wù)的方法,每個服務(wù)在獨立進程中運行,并通過輕量級機制進行通信,通常是HTTP 協(xié)議API。服務(wù)圍繞業(yè)務(wù)功能構(gòu)建,并通過完全自動化地部署機制獨立部署。服務(wù)可以用不同的編程語言編寫,使用不同的數(shù)據(jù)存儲技術(shù),從而對這些服務(wù)進行最少地集中管理。

圖1:技術(shù)架構(gòu)圖
在本設(shè)計中,每個微服務(wù)代表一個單一職責(zé)(部門)的功能模塊提供服務(wù),獨立運行于服務(wù)容器中并配置獨立數(shù)據(jù)庫,避免與其他微服務(wù)因磁盤數(shù)據(jù)庫共用、I/O 資源占用等導(dǎo)致?lián)砣瑢崿F(xiàn)對各功能模塊服務(wù)的有效隔離。為保證各部門產(chǎn)生的業(yè)務(wù)數(shù)據(jù)能夠及時同步寫入數(shù)據(jù)庫,每個微服務(wù)應(yīng)按照場景應(yīng)用數(shù)據(jù)目錄清單,創(chuàng)建適用于本職責(zé)(部門)的數(shù)據(jù)同步接口,保證各部門業(yè)務(wù)系統(tǒng)產(chǎn)生數(shù)據(jù)的同時也同步寫入每個微服務(wù)的數(shù)據(jù)庫。此外,根據(jù)各部門業(yè)務(wù)協(xié)同需要,每個部門應(yīng)對照場景應(yīng)用數(shù)據(jù)目錄創(chuàng)建相應(yīng)的服務(wù)接口,通過應(yīng)用服務(wù)容器發(fā)布,供不同微服務(wù)或部門業(yè)務(wù)系統(tǒng)之間調(diào)用。
3.2.2 容器化工具
在政務(wù)云計算環(huán)境下,云原生技術(shù)將更適用于云計算時代的技術(shù)架構(gòu)體系。本次設(shè)計的場景中涉及多部門、多微服務(wù),考慮運維管理需要,便于對眾多微服務(wù)進行快速部署、穩(wěn)定運行和服務(wù)鏡像管理,可選用開源技術(shù)Docker 作為應(yīng)用服務(wù)容器,通過對應(yīng)用服務(wù)及其環(huán)境及資源依賴打包發(fā)布,實現(xiàn)一次打包、任意部署或遷移。結(jié)合開源技術(shù)Kubernetes 容器編排系統(tǒng),實現(xiàn)自動部署、擴展和管理微服務(wù),從而降低場景應(yīng)用在高復(fù)用、高伸縮性、高可靠性、跨云等要求下的運行管理成本。
3.2.3 內(nèi)存數(shù)據(jù)庫
本次設(shè)計針對的場景是多部門參與、跨部門業(yè)務(wù)協(xié)同下的實時業(yè)務(wù)辦理,數(shù)據(jù)讀寫頻繁,跨部門調(diào)用頻次高,數(shù)據(jù)實時同步要求突出。使用內(nèi)存數(shù)據(jù)庫以鍵值對(key-value)存儲形式作為一種緩存機制搭配磁盤數(shù)據(jù)庫,可以有效分擔(dān)磁盤I/O 壓力,通過內(nèi)存數(shù)據(jù)庫讀寫操作,及時響應(yīng)業(yè)務(wù)辦理,并將數(shù)據(jù)定期持久化到磁盤數(shù)據(jù)庫中,從而滿足當(dāng)日辦結(jié)類業(yè)務(wù)場景需要。
Redis 是一種開源的內(nèi)存數(shù)據(jù)庫系統(tǒng),可用作數(shù)據(jù)庫、緩存和消息中間件使用。它支持多種類型數(shù)據(jù)結(jié)構(gòu),支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)等類型數(shù)據(jù)的范圍查詢。在保證網(wǎng)絡(luò)延遲、進程間通信消耗穩(wěn)定的情況下,利用Redis 讀寫性能高、支持數(shù)據(jù)類型種類多的優(yōu)勢,采用Redis+Mysql 的數(shù)據(jù)庫設(shè)計,是服務(wù)本次目標場景中實時數(shù)據(jù)同步的理想數(shù)據(jù)庫方案。
3.3.1 構(gòu)建場景業(yè)務(wù)模型
在“一網(wǎng)通辦”業(yè)務(wù)中,各部門需明確在本部門業(yè)務(wù)辦理中所需的前置條件信息及必要的回傳信息,如其他部門的辦理結(jié)果信息、憑證信息及本部門的辦理結(jié)果信息等,可由參與部門共同商議,研究確定各部門涉及的業(yè)務(wù)信息類及信息項,針對每一個信息類,還需要明確其產(chǎn)生部門、更新頻率、分發(fā)及回傳規(guī)則等,匯總形成場景應(yīng)用數(shù)據(jù)目錄清單及場景業(yè)務(wù)規(guī)則清單。根據(jù)確定的業(yè)務(wù)模型和業(yè)務(wù)邏輯關(guān)系,多部門共同創(chuàng)建跨部門的場景應(yīng)用庫。
3.3.2 技術(shù)架構(gòu)設(shè)計
如圖1 所示,總體設(shè)計分為四層,分別為:業(yè)務(wù)層、網(wǎng)關(guān)層、服務(wù)層和持久層,各層的主要功能:
業(yè)務(wù)層:作為跨部門協(xié)同場景應(yīng)用的前端,負責(zé)接收處理來自各部門及辦事主體的業(yè)務(wù)請求。業(yè)務(wù)發(fā)生主要通過各部門業(yè)務(wù)系統(tǒng)、網(wǎng)上辦事大廳、自助終端以及政務(wù)服務(wù)手機APP 實現(xiàn)。當(dāng)辦事主體發(fā)起辦事申請后,部門業(yè)務(wù)系統(tǒng)按照本部門環(huán)節(jié)業(yè)務(wù)邏輯關(guān)系,以辦事主體身份標識為索引,調(diào)用服務(wù)層提供的微服務(wù)接口獲取相關(guān)業(yè)務(wù)依賴信息,完成本部門業(yè)務(wù)環(huán)節(jié)處理并生成辦理結(jié)果信息;辦事主體通過網(wǎng)廳或手機APP 查詢了解當(dāng)前總體辦事進度及相關(guān)狀態(tài)信息。
網(wǎng)關(guān)層:利用共享交換體系中的云服務(wù)總線技術(shù),提供接口服務(wù)注冊、配置管理、用戶認證、鏈路加密、負載均衡等接口網(wǎng)關(guān)服務(wù)能力,發(fā)揮各業(yè)務(wù)系統(tǒng)網(wǎng)絡(luò)統(tǒng)一的優(yōu)勢,利用服務(wù)總線提高服務(wù)接口管理及調(diào)用的安全性和穩(wěn)定性。
服務(wù)層:利用微服務(wù)和Redis構(gòu)建,是跨部門場景應(yīng)用的核心層。在不破壞和改造原業(yè)務(wù)系統(tǒng)邏輯前提下,創(chuàng)建本部門微服務(wù),按照業(yè)務(wù)隔離原則分別提供獨立的、原子的業(yè)務(wù)支撐服務(wù)接口,如數(shù)據(jù)查詢、寫入和校對等。在本設(shè)計中,Redis 主要作為內(nèi)存數(shù)據(jù)庫扮演數(shù)據(jù)緩存角色,以支撐高并發(fā)讀寫操作,實現(xiàn)實時地跨部門業(yè)務(wù)查詢和辦理。最后可根據(jù)場景業(yè)務(wù)需要,將Redis 中的數(shù)據(jù)持久化到磁盤數(shù)據(jù)庫中。
持久層:每個微服務(wù)應(yīng)具備獨立數(shù)據(jù)庫,按部門業(yè)務(wù)條線分別入庫存儲,用于單一部門數(shù)據(jù)比對校核。場景應(yīng)用庫是按場景主題梳理、整合各部門在場景業(yè)務(wù)運行中生產(chǎn)的業(yè)務(wù)數(shù)據(jù),形成綜合的場景應(yīng)用數(shù)據(jù)模型,并按模型對Redis 緩存數(shù)據(jù)、各部門業(yè)務(wù)分庫數(shù)據(jù)進行加工和持久化,最終形成場景應(yīng)用庫并通過服務(wù)層對外提供綜合服務(wù)。
3.3.3 關(guān)鍵業(yè)務(wù)功能
(1)數(shù)據(jù)同步。當(dāng)業(yè)務(wù)發(fā)生時,部門業(yè)務(wù)系統(tǒng)產(chǎn)生新數(shù)據(jù),調(diào)用本部門業(yè)務(wù)系統(tǒng)相應(yīng)的微服務(wù)接口提交數(shù)據(jù)并在Redis 中緩存,供其他微服務(wù)實時查詢調(diào)用,同時可將數(shù)據(jù)持久化到本部門微服務(wù)對應(yīng)的數(shù)據(jù)庫中,作為單一部門生產(chǎn)數(shù)據(jù)存儲。此外,以當(dāng)日辦結(jié)類業(yè)務(wù)場景為例,可定時在非業(yè)務(wù)辦理時間進行Redis 緩存數(shù)據(jù)的持久化,按場景應(yīng)用數(shù)據(jù)模型歸集當(dāng)日辦結(jié)的全部業(yè)務(wù)數(shù)據(jù)并寫入數(shù)據(jù)庫。數(shù)據(jù)同步是作為實現(xiàn)數(shù)據(jù)共享的重要功能,在同步實時性上要優(yōu)于前置機數(shù)據(jù)推送方式。
(2)數(shù)據(jù)查詢。由各部門開發(fā)匹配本部門業(yè)務(wù)系統(tǒng)的微服務(wù),提供跨部門的基本數(shù)據(jù)查詢接口,從而為各部門業(yè)務(wù)串聯(lián)銜接提供數(shù)據(jù)支撐保障。同時,每個查詢接口返回的信息都是來自原始數(shù)據(jù)產(chǎn)生部門的、原子的業(yè)務(wù)數(shù)據(jù),以保證每個環(huán)節(jié)業(yè)務(wù)辦理所需數(shù)據(jù)的來源和屬性都是唯一的、最新的。
(3)場景應(yīng)用庫服務(wù)。在場景業(yè)務(wù)運轉(zhuǎn)過程中,業(yè)務(wù)辦理用戶、部門業(yè)務(wù)系統(tǒng)、微服務(wù)、Redis 數(shù)據(jù)緩存、持久層數(shù)據(jù)庫等都是支撐本場景跨部門業(yè)務(wù)協(xié)同的組成部門,但還應(yīng)通過場景應(yīng)用庫服務(wù)將業(yè)務(wù)流程辦結(jié)后的結(jié)果和過程數(shù)據(jù)進行梳理并向外提供服務(wù),例如:向辦事用戶提供業(yè)務(wù)辦理全流程狀態(tài)查詢服務(wù)、向政務(wù)服務(wù)管理部門提供辦件流程或結(jié)果信息等。
(4)數(shù)據(jù)沉淀。各業(yè)務(wù)系統(tǒng)在參與場景業(yè)務(wù)運轉(zhuǎn)中,可通過微服務(wù)向各業(yè)務(wù)分庫快速沉淀數(shù)據(jù),分流數(shù)據(jù)庫I/O 并發(fā)壓力。分庫數(shù)據(jù)代表某一特定業(yè)務(wù)數(shù)據(jù),不與其他業(yè)務(wù)數(shù)據(jù)相混雜,數(shù)據(jù)結(jié)構(gòu)清晰、定義明確,便于提供單一數(shù)據(jù)的比對校核、定向輸出等服務(wù),簡化了數(shù)據(jù)梳理工作,是建設(shè)主題數(shù)據(jù)庫、專題數(shù)據(jù)庫的良好數(shù)來源。
按照《“互聯(lián)網(wǎng)+政務(wù)服務(wù)”技術(shù)體系建設(shè)指南》,政務(wù)服務(wù)數(shù)據(jù)共享通過前置機(數(shù)據(jù)庫表)、Web Service、文件交換等形式實現(xiàn)數(shù)據(jù)共享。前置機交換方式需要各部門制定詳細的交換庫表結(jié)構(gòu)、交換規(guī)則并按時進行手動或自動數(shù)據(jù)推送,共享環(huán)節(jié)包括提供部門業(yè)務(wù)系統(tǒng)、提供部門前置機、共享交換平臺、需求部門前置機、需求部門業(yè)務(wù)系統(tǒng),此模式交換過程路徑節(jié)點多、執(zhí)行規(guī)則要求高,適用于數(shù)量大、變化慢、結(jié)果型數(shù)據(jù)的批量定時交換。WebService與微服務(wù)的最終實現(xiàn)形式都是接口,但WebService 需要對業(yè)務(wù)系統(tǒng)本身進行改造,增加定制接口,并且性能受業(yè)務(wù)系統(tǒng)事務(wù)復(fù)雜度、數(shù)據(jù)庫讀寫速度、調(diào)用并發(fā)量等條件制約。微服務(wù)方式能夠用較小的系統(tǒng)改造和獨立部署方式換來高實時性的數(shù)據(jù)同步性能。同時,微服務(wù)+Redis 的模式在服務(wù)各業(yè)務(wù)系統(tǒng)及辦事用戶之外,還可承載場景應(yīng)用數(shù)據(jù)加工整理職能,便于形成主題或?qū)n}數(shù)據(jù)庫,不僅實現(xiàn)場景內(nèi)應(yīng)用服務(wù),也能面向場景外部提供服務(wù)和數(shù)據(jù)輸出能力。
本次設(shè)計中,運用微服務(wù)、Redis 等構(gòu)建適用于高并發(fā)、時效性要求高的場景數(shù)據(jù)交換方案,可作為常規(guī)前置機數(shù)據(jù)庫表交換方式的有益補充。隨著云原生技術(shù)發(fā)展帶來的新的應(yīng)用建設(shè)模式,相信以微服務(wù)、容器技術(shù)、容器編排管理等新一代技術(shù)將更多地應(yīng)用于政務(wù)信息化建設(shè)中去,同時也對云計算時代信息化建設(shè)提出了新的要求,在應(yīng)用安全架構(gòu)、運維管理架構(gòu)、業(yè)務(wù)架構(gòu)等方面需要進行重新思考和設(shè)計,以滿足新形勢下技術(shù)棧與業(yè)務(wù)的有效融合。