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