吳新松,裴倫鵬,郭孝彬,薛 松,成翌寧,袁海峰
(1.中國電子技術(shù)標(biāo)準(zhǔn)化研究院,北京 100007;2.中科軟科技股份有限公司,北京 100190)
如何實(shí)現(xiàn)行政系統(tǒng)與業(yè)務(wù)系統(tǒng)之間松耦合的流程協(xié)同和數(shù)據(jù)共享[1],是深度集成協(xié)同辦公平臺(tái)需要解決的核心問題。因此,本文提出一種基于SOA(Service-Oriented Architecture)體系結(jié)構(gòu)[2]實(shí)現(xiàn)的數(shù)據(jù)總線,可以為各系統(tǒng)提供準(zhǔn)確、一致的數(shù)據(jù),以此來滿足協(xié)同辦公平臺(tái)的數(shù)據(jù)協(xié)同需求。
數(shù)據(jù)交換總線是數(shù)據(jù)中心與其他應(yīng)用系統(tǒng)溝通的橋梁,也是進(jìn)行數(shù)據(jù)交換的樞紐。總線的主要任務(wù)是負(fù)責(zé)從各個(gè)業(yè)務(wù)系統(tǒng)采集數(shù)據(jù),對數(shù)據(jù)進(jìn)行清洗與整合,并按照相關(guān)標(biāo)準(zhǔn)對原始數(shù)據(jù)進(jìn)行規(guī)范化,為協(xié)同辦公平臺(tái)提供可靠的數(shù)據(jù)支撐。因此,為確保數(shù)據(jù)交換總線信息共享功能的完備性,總線的設(shè)計(jì)目標(biāo)如下:
(1)支持各分支數(shù)據(jù)源的匯總以及按權(quán)限向各數(shù)據(jù)需求方分發(fā)數(shù)據(jù)。
(2)支持實(shí)時(shí)且按需進(jìn)行數(shù)據(jù)存取訪問。
(3)支持對異構(gòu)數(shù)據(jù)進(jìn)行統(tǒng)一標(biāo)準(zhǔn)格式轉(zhuǎn)換。
(4)支持進(jìn)行監(jiān)控管理,用戶權(quán)限管理,運(yùn)行日志查看,性能統(tǒng)計(jì)。
為實(shí)現(xiàn)高效的數(shù)據(jù)交換,數(shù)據(jù)交換總線需要支持?jǐn)?shù)據(jù)采集、數(shù)據(jù)更新、數(shù)據(jù)轉(zhuǎn)發(fā)、數(shù)據(jù)轉(zhuǎn)換等基礎(chǔ)功能。此外,由于數(shù)據(jù)類型不僅包含靜態(tài)基礎(chǔ)維護(hù)數(shù)據(jù),還包含變化較大的動(dòng)態(tài)業(yè)務(wù)數(shù)據(jù),因此在進(jìn)行數(shù)據(jù)交換時(shí)總線要包含數(shù)據(jù)按需查詢、實(shí)時(shí)或定時(shí)交換等功能。在保證數(shù)據(jù)傳輸安全性的方面,則需要通過身份驗(yàn)證、權(quán)限管理、加密算法、有效性、一致性、完整性等檢驗(yàn)手段來實(shí)現(xiàn),總線的安全目標(biāo)如下:
(1)數(shù)據(jù)共享的訪問方式支持身份驗(yàn)證與權(quán)限管理。
(2)支持可視化運(yùn)維、監(jiān)控與審計(jì),確保數(shù)據(jù)交換安全性。
(3)具備負(fù)載均衡能力,支持多部門間的數(shù)據(jù)交換。
協(xié)同辦公平臺(tái)的數(shù)據(jù)交換需求多樣,包括對接口協(xié)議的需求、對交換策略的需求、對數(shù)據(jù)格式的需求、對數(shù)據(jù)安全的需求等,交換總線需支持不同的協(xié)議、不同的策略和不同的格式,以支持不同部門或系統(tǒng)間的數(shù)據(jù)交換與協(xié)同。在交換接口方面,目標(biāo)如下:
(1)基于Web Services服務(wù)的方式用于部門與平臺(tái)間的實(shí)時(shí)交換。
(2)基于數(shù)據(jù)庫接口的方式用于內(nèi)部系統(tǒng)間實(shí)時(shí)或非實(shí)時(shí)交換。
(3)基于文件交換的方式用于外部或內(nèi)部系統(tǒng)間非實(shí)時(shí)批量交換。
(4)支持用戶自己配置和管理相關(guān)的服務(wù)或定義接口。
數(shù)據(jù)是協(xié)同辦公平臺(tái)和業(yè)務(wù)系統(tǒng)的核心,數(shù)據(jù)的交換和共享是協(xié)同辦公平臺(tái)和業(yè)務(wù)系統(tǒng)之間功能交互和業(yè)務(wù)協(xié)同的重要內(nèi)容和體現(xiàn)。協(xié)同辦公平臺(tái)數(shù)據(jù)共享交換總線的建設(shè)目標(biāo)是將分散建設(shè)的若干業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)整合,通過數(shù)據(jù)共享交換總線在協(xié)同辦公平臺(tái)和各業(yè)務(wù)系統(tǒng)間進(jìn)行信息傳輸與共享,提高數(shù)據(jù)資源的利用率,保證分布式異構(gòu)系統(tǒng)之間互聯(lián)互通,實(shí)現(xiàn)數(shù)據(jù)與業(yè)務(wù)規(guī)則的全集中,總體架構(gòu)圖如下圖1所示。
圖1 數(shù)據(jù)共享交換總線架構(gòu)圖
整個(gè)數(shù)據(jù)共享交換總線分為數(shù)據(jù)交換、數(shù)據(jù)服務(wù)兩部分。
2.1.1 數(shù)據(jù)交換
數(shù)據(jù)交換主要實(shí)現(xiàn)各業(yè)務(wù)系統(tǒng)將實(shí)時(shí)的待辦數(shù)據(jù)、已辦數(shù)據(jù)和結(jié)果數(shù)據(jù)通過接口或中間庫的形式發(fā)送至數(shù)據(jù)共享交換總線中,對業(yè)務(wù)數(shù)據(jù)進(jìn)行系列操作后將結(jié)果數(shù)據(jù)定時(shí)同步至數(shù)據(jù)服務(wù)。規(guī)范化后形成統(tǒng)一格式規(guī)劃的多個(gè)“數(shù)據(jù)倉庫”滿足業(yè)務(wù)需求。
2.1.2 數(shù)據(jù)服務(wù)
數(shù)據(jù)服務(wù)對內(nèi)實(shí)現(xiàn)數(shù)據(jù)融合,形成人員、財(cái)務(wù)、固定資產(chǎn)等資產(chǎn)數(shù)據(jù)的數(shù)據(jù)倉庫,對外提供按權(quán)限的數(shù)據(jù)訪問控制和服務(wù),主要包括數(shù)據(jù)資產(chǎn)和數(shù)據(jù)服務(wù)兩部分。
2.2.1 數(shù)據(jù)交換
(1)數(shù)據(jù)源管理
維護(hù)數(shù)據(jù)庫交換時(shí)的數(shù)據(jù)庫基礎(chǔ)信息,在后續(xù)數(shù)據(jù)交換時(shí)可通過選擇性直接調(diào)用該處的數(shù)據(jù)源信息,包括數(shù)據(jù)源名稱、數(shù)據(jù)庫類型、節(jié)點(diǎn)名稱、更新時(shí)間、子數(shù)據(jù)源、操作等。
(2)交換任務(wù)管理
包含實(shí)時(shí)任務(wù)與定時(shí)任務(wù)兩種,滿足各個(gè)業(yè)務(wù)系統(tǒng)之間通過注冊接口的形式配置路由任務(wù),達(dá)到實(shí)時(shí)的進(jìn)行數(shù)據(jù)推送交換,并支持推送給多個(gè)下游系統(tǒng)。只有當(dāng)源端和目的端數(shù)據(jù)交換時(shí)需要配置相關(guān)的交換任務(wù)才能交換,交換任務(wù)中明確說明了兩個(gè)交換方、具體交換模式等信息,具體到表的交換以及是否壓縮、加密、映射關(guān)系等備注信息是在交換流程中完成配置。
(3)交換流程管理
交換流程用來詳細(xì)說明數(shù)據(jù)交換的交換的需求、機(jī)制與細(xì)節(jié),包括流程名稱、歸屬任務(wù)、加密壓縮、有序交換、流程描述、設(shè)置發(fā)布接收、明確映射關(guān)系等內(nèi)容。
(4)運(yùn)行監(jiān)督管理
運(yùn)行監(jiān)控管理提供以網(wǎng)絡(luò)拓?fù)鋱D形式查看平臺(tái)內(nèi)各節(jié)點(diǎn)狀態(tài)的功能,并對異常節(jié)點(diǎn)的相關(guān)告警信息進(jìn)行展示。
(5)數(shù)據(jù)集成交換服務(wù)
數(shù)據(jù)集成交換服務(wù)作為數(shù)據(jù)交換平臺(tái)核心功能模塊,是數(shù)據(jù)采集與交互過程中必不可少的數(shù)據(jù)服務(wù)項(xiàng),主要包括如下服務(wù):
①數(shù)據(jù)抽?。簭脑聪到y(tǒng)抽取需要的源數(shù)據(jù),需要考慮以下因素:準(zhǔn)入原則、類別、源系統(tǒng)分布方式、時(shí)效性要求、抽取方式、抽取時(shí)間窗口、全增量抽取策略。
②數(shù)據(jù)標(biāo)準(zhǔn)化:對企業(yè)內(nèi)業(yè)務(wù)系統(tǒng)綜合性應(yīng)用需求進(jìn)行分析,從而定義出一系列數(shù)據(jù)交換標(biāo)準(zhǔn),反映至各個(gè)應(yīng)用所需要的數(shù)據(jù)結(jié)構(gòu)中,并能以XML結(jié)構(gòu)記錄。
③數(shù)據(jù)加工:包括增量對比、數(shù)據(jù)篩選、數(shù)據(jù)標(biāo)準(zhǔn)化三項(xiàng)。
增量比對:是指支持增量抽取與加載的處理方式,提供數(shù)據(jù)更新的時(shí)間點(diǎn)或周期。
數(shù)據(jù)篩選:對數(shù)據(jù)進(jìn)行篩選的自定義功能,包括對數(shù)據(jù)進(jìn)行列與行數(shù)據(jù)的篩選。
數(shù)據(jù)標(biāo)準(zhǔn)化:通過數(shù)據(jù)標(biāo)準(zhǔn)規(guī)范模型設(shè)計(jì)及標(biāo)準(zhǔn)整合方式實(shí)現(xiàn)數(shù)據(jù)標(biāo)準(zhǔn)的落地。
④數(shù)據(jù)安全:通過數(shù)據(jù)保護(hù)措施使得數(shù)據(jù)免遭未經(jīng)授權(quán)的訪問、使用、修改和刪除。
2.2.2 數(shù)據(jù)服務(wù)
(1)數(shù)據(jù)資產(chǎn)管理
數(shù)據(jù)資產(chǎn)管理內(nèi)容由框架到明細(xì)可以概括為三方面內(nèi)容:數(shù)據(jù)庫管理、表單管理、字段管理,功能包括針對具有權(quán)限的用戶及維護(hù)人員在應(yīng)用系統(tǒng)上對數(shù)據(jù)庫、表單、字段的相關(guān)操作(刪除、停用、添加)等操作的管理,當(dāng)進(jìn)行相關(guān)操作時(shí)需要填寫詳細(xì)信息并校驗(yàn),對不符合的信息發(fā)出告警提示。
(2)數(shù)據(jù)服務(wù)管理
數(shù)據(jù)服務(wù)管理包括服務(wù)注冊,運(yùn)行監(jiān)控、運(yùn)行日志及權(quán)限控制四部分內(nèi)容,服務(wù)注冊在線注冊功能,支持按照時(shí)間、對象、權(quán)限等提供服務(wù);運(yùn)行監(jiān)控提供服務(wù)任務(wù)的運(yùn)行狀態(tài)監(jiān)控;權(quán)限控制依托應(yīng)用支撐平臺(tái)統(tǒng)一權(quán)限管理實(shí)現(xiàn),支持到字段級的權(quán)限控制。
平臺(tái)的接口設(shè)計(jì)采用基于Web Services服務(wù)的方式來實(shí)現(xiàn),用于各系統(tǒng)與數(shù)據(jù)中心間實(shí)時(shí)的數(shù)據(jù)交換和業(yè)務(wù)協(xié)同應(yīng)用。數(shù)據(jù)提供方定義公開數(shù)據(jù)服務(wù),以服務(wù)的形式封裝數(shù)據(jù)交換的內(nèi)容和協(xié)議,使用方調(diào)用數(shù)據(jù)提供方的公開數(shù)據(jù)服務(wù)以獲取所需的數(shù)據(jù),并按照規(guī)則更新本地?cái)?shù)據(jù)源。
數(shù)據(jù)共享交換總線不僅能夠?qū)Ω髟聪到y(tǒng)中的多源異構(gòu)數(shù)據(jù)予以集成處理,還能通過平臺(tái)中集成的各功能性組件來實(shí)現(xiàn)數(shù)據(jù)的路由適配與實(shí)時(shí)處理、服務(wù)調(diào)度、數(shù)據(jù)服務(wù),總線包括工具倉庫、數(shù)據(jù)路由、轉(zhuǎn)換引擎、配置中心、輔助功能等。為將數(shù)據(jù)共享交換總線在盡可能多的場景下適用,需要支持關(guān)系型結(jié)構(gòu)與非關(guān)系型結(jié)構(gòu)的信息數(shù)據(jù)的適配,因此在底層數(shù)據(jù)庫技術(shù)的選型上采用混合模型制,如下圖2所示。
圖2 總線實(shí)現(xiàn)框架圖
配置中心主要包括語義定義、流程配置、路由配等功能。為實(shí)現(xiàn)實(shí)時(shí)交換任務(wù),選擇以“目標(biāo)地址”的形式注冊路由接口再配置路由。在實(shí)時(shí)任務(wù)結(jié)束后提供可出發(fā)新拉取接口的功能。
語義定義:語義定義配置了各種數(shù)據(jù)類型相互轉(zhuǎn)換的取值規(guī)則。
流程配置:存在部分API接口需要調(diào)用多類型數(shù)據(jù)庫適配層才能高效地完成此功能,應(yīng)完成API調(diào)用數(shù)據(jù)庫適配層的順序。
路由配置:針對所有的API接口請求轉(zhuǎn)發(fā)到各類型的數(shù)據(jù)庫適配層配置。
轉(zhuǎn)換引擎包括標(biāo)準(zhǔn)模型、方言模型、轉(zhuǎn)換器。
標(biāo)準(zhǔn)模型:在轉(zhuǎn)換的過程中設(shè)置中間模型完成關(guān)系數(shù)據(jù)模型的轉(zhuǎn)換。
方言模型:方言模型主要應(yīng)用到各類型數(shù)據(jù)庫適配層,各類型數(shù)據(jù)庫適配層應(yīng)支持不同數(shù)據(jù)庫。
轉(zhuǎn)換器:根據(jù)語義定義及數(shù)據(jù)模型完成各數(shù)據(jù)模型間的轉(zhuǎn)換,為后續(xù)數(shù)據(jù)操作提供服務(wù)。
數(shù)據(jù)路由是當(dāng)通過API調(diào)用進(jìn)入平臺(tái)后,當(dāng)前此請求應(yīng)轉(zhuǎn)化到對應(yīng)類型的數(shù)據(jù)庫適配層完成增刪改查的操作,并將適配層的結(jié)果返回給調(diào)用方。
元數(shù)據(jù):元數(shù)據(jù)是指API接口與各類型的數(shù)據(jù)庫適配層的映射關(guān)系。
讀寫路由:將API接口根據(jù)路由配置或元數(shù)據(jù)轉(zhuǎn)發(fā)到各類型的數(shù)據(jù)庫適配層。
調(diào)用鏈路:部分API接口可能需要調(diào)用多個(gè)類型的數(shù)據(jù)庫適配層才能高效地完成此功能。
工具倉庫數(shù)據(jù)共享交換過程中形成的工具集:
批量導(dǎo)入:批量導(dǎo)入指的是將源數(shù)據(jù)表單類數(shù)據(jù)批量轉(zhuǎn)換導(dǎo)入非關(guān)系數(shù)據(jù)庫,建立存檔與關(guān)系集。
清洗整合:清洗整合工具能夠?qū)崿F(xiàn)數(shù)據(jù)清洗的整合規(guī)則,篩掉不合規(guī)數(shù)據(jù)。
清洗規(guī)則:根據(jù)數(shù)據(jù)清洗過程收集的清洗規(guī)則。
數(shù)據(jù)抽取:數(shù)據(jù)抽取任務(wù)負(fù)責(zé)完成兩個(gè)數(shù)據(jù)源之間或同一個(gè)數(shù)據(jù)源內(nèi)部的數(shù)據(jù)采集轉(zhuǎn)換,分為異構(gòu)抽取和同構(gòu)抽取。
數(shù)據(jù)庫適配服務(wù)主要針對同類型的數(shù)據(jù)庫的不同語法的支持,主要完成增刪改查等操作,確保高效完成數(shù)據(jù)庫交互數(shù)據(jù)的服務(wù),包含各種數(shù)據(jù)庫并根據(jù)數(shù)據(jù)庫的語法類型差異以及數(shù)據(jù)庫存在關(guān)鍵字差異完成數(shù)據(jù)庫相關(guān)操作的適配。
中間層會(huì)根據(jù)調(diào)用的服務(wù)類型自動(dòng)適應(yīng)不同的事務(wù)管理方式。采用最終一致性原則保證所有數(shù)據(jù)庫數(shù)據(jù)保持一致,外部請求調(diào)用中間層時(shí),組件層優(yōu)先確保關(guān)系型數(shù)據(jù)庫操作和非關(guān)系數(shù)據(jù)操作日志記錄成功。關(guān)系型數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)操作日志操作采用TCC分布式事務(wù)確保事務(wù)一致。
數(shù)據(jù)共享交換總線目前服務(wù)于十余個(gè)業(yè)務(wù)系統(tǒng)進(jìn)行實(shí)時(shí)和分布式數(shù)據(jù)交換共享任務(wù),支持集群化部署,通過運(yùn)行監(jiān)控和日志分析對實(shí)時(shí)或定時(shí)的數(shù)據(jù)交換請求響應(yīng)準(zhǔn)確,支持至少10個(gè)并發(fā)請求的響應(yīng),支持實(shí)時(shí)與批量數(shù)據(jù)的均衡調(diào)度,對10萬次以上的連續(xù)請求處理無故障。
運(yùn)行中也發(fā)現(xiàn)了有待優(yōu)化和改善的地方,主要體現(xiàn)在以下兩方面:
(1)對復(fù)雜關(guān)系的數(shù)據(jù)處理部分依賴傳統(tǒng)數(shù)據(jù)庫,當(dāng)業(yè)務(wù)數(shù)據(jù)量增加時(shí)對服務(wù)器運(yùn)算性能要求較高,影響總線對復(fù)雜業(yè)務(wù)及深層數(shù)據(jù)處理的性能。后續(xù)需加強(qiáng)混合數(shù)據(jù)庫支持,強(qiáng)化圖數(shù)據(jù)庫存取和加工能力,引入多節(jié)點(diǎn)分布式運(yùn)算策略,支持多節(jié)點(diǎn)分布式運(yùn)算,提升運(yùn)算與查詢性能。
(2)數(shù)據(jù)交換對象主要還是結(jié)構(gòu)化數(shù)據(jù),對非結(jié)構(gòu)化數(shù)據(jù)處理較弱,不支持大數(shù)據(jù)平臺(tái)交換服務(wù)。后續(xù)會(huì)引入對結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)更多的處理組件和能力,自然語言處理,增強(qiáng)數(shù)據(jù)分析和解析能力,豐富服務(wù)對象。