引言:
隨著云計算、大數據、物聯(lián)網等技術興起,數據朝著多樣性、高體量、高速度方向發(fā)展,如何將海量數據安全、穩(wěn)定、高效地數據共享出去成為各企業(yè)關注的重點。本次微課堂通過普元在數據服務共享平臺研發(fā)過程中的實踐,和大家分享數據服務共享發(fā)布的相關經驗。
目錄:
1.數據服務共享發(fā)布核心場景
2.數據服務共享發(fā)布技術架構
3.數據服務共享發(fā)布關鍵設計
4.數據服務共享發(fā)布安全考慮
5.結束語
1.數據服務共享發(fā)布核心場景
按功能劃分核心場景

核心場景主要包括四個環(huán)節(jié):資源目錄生成、數據服務發(fā)布、數據服務消費、數據服務監(jiān)控。
資源目錄生成:提供數據資源目錄與服務資源目錄兩種視圖,數據資源目錄通過自動化采集方式生成,對各種數據源(數據庫、文件、大數據)的元數據信息進行展示;通過數據服務發(fā)布快速生成服務資源目錄。
數據服務發(fā)布:基于數據資源目錄可將共享區(qū)數據快速發(fā)布成實時服務(RESTful)和批量服務(File)。
數據服務消費:定義了從服務瀏覽、申請、審批、數據使用的詳細流程,消費方通過訂閱或者拉取的方式使用數據。
數據服務監(jiān)控:對數據服務全生命周期管理與監(jiān)控,對故障進行實時告警。
按角色進行功能場景劃分

圍繞核心場景定義了四類角色:數據管理員、數據開發(fā)人員、數據消費方、運維人員。
數據管理員:負責數據資源目錄、服務目錄的維護,參與數據服務的審批及授權。
數據開發(fā)人員:負責數據資源服務化前的轉換、脫敏、核檢,負責實時和批量服務的開發(fā)。
數據消費方:數據資源的使用方,通過資源目錄查找相應的數據服務,向數據管理員提交數據服務申請使用數據。
運維人員:負責數據整體共享交換過程中數據資源的監(jiān)控、統(tǒng)計分析及故障處理。
圍繞核心場景,我們總結了四個典型應用場景:
場景一:讓用數據的所有人知道可以提供什么樣的數據

通過資源目錄提供技術元數據、業(yè)務元數據、服務元數據視圖,使資源更容易發(fā)現(xiàn),提供分區(qū)、分節(jié)點的體系化資源目錄管理,保護數據安全,快速查找數據。通過自動化采集與解析手段獲取元數據信息,建立技術、業(yè)務、服務元數據的注冊輸入,標明數據方位。
場景二:****提供接口、文件、數據庫三種服務類型對外進行共享

基于數據服務目錄以接口、文件、數據庫三種提供給數據使用方,數據消費方可通過申請的方式主動拉取數據,也可通過訂閱的方式自動獲取所需數據。
場景三:****自助式數據問題追蹤

消費方申請數據時通過血緣分析及級影響分析能夠及時發(fā)現(xiàn)資源在使用過程中的質量問題 ,確認是否是自己想要的數據,驗證開發(fā)正確性。 場景四 :****從全局了解企業(yè)數據服務應用情況

通過數據服務監(jiān)控自動形成數據監(jiān)控鏈路,提供數據服務共享的全貌地圖,幫助企業(yè)了解數據共享交換的全貌及系統(tǒng)間數據關系,從全局了解企業(yè)的數據服務應用情況。
2.數據服務共享發(fā)布技術架構
**支撐流水線式的數據服務共享發(fā)布核心架構**** **

上圖核心架構中定義了數據從數據源開始經過數據準備(清洗、轉換、質量核檢)后進入共享區(qū),對共享區(qū)數據進行服務化后提供給消費方使用的處理流程及機制,支撐流水線式的數據服務共享發(fā)布。 根據數據生命周期的不同環(huán)節(jié),架構設計上定義了三個數據區(qū)域(數據源、數據前置區(qū)、數據共享區(qū)),可根據實際情況對三個區(qū)域進行自定義或取舍。
功能架構

在功能架構上主要包括四大支撐引擎+四大功能模塊。 四大支撐引擎:
實時服務引擎:實時服務發(fā)布及訪問功能,以RESTful方式提供;
批量服務引擎:批量服務發(fā)布及訪問功能,以File方式提供;
調度引擎:提供對批量服務的調度功能;
日志引擎:采集日志進行指標分析。
四大功能模塊:
資源目錄:數據消費方和數據開發(fā)人員使用視圖;
數據服務發(fā)布:實現(xiàn)對實時服務和批量服務的發(fā)布管理;
數據使用及安全:定義數據申請使用流程及數據安全管理;
數據服務監(jiān)控:對數據服務生命周期進行全鏈路監(jiān)控。
開發(fā)采用的技術棧

在數據服務共享平臺開發(fā)的中涉及到的技術棧分為五個層次:
資源層:對主流關系型數據庫(Oracle、SQLServer、Mysql),大數據(HBase、Hive)、文件等多種數據源進行技術元數據的自動采集和業(yè)務元數據的管理。
訪問層:基于JDBC、HTTP、RPC、SFTP等通信協(xié)議實現(xiàn)與資源層的訪問交互。
邏輯層:提供對資源層不同數據源的適配器,同時提供可重用的安全、監(jiān)控、調度及日志組件。
服務提供層:基于SpringBoot+SpringCloud以微服務架構的方式對外提供服務。
展示層:采用vue+iview+es6+axios+ECharts技術實現(xiàn)前端頁面及展示效果。
3.數據服務共享發(fā)布關鍵設計
數據服務共享發(fā)布設計主要從數據服務發(fā)布、故障告警、數據質量核檢、數據服務監(jiān)控四個層面去考慮。
數據服務發(fā)布
數據服務發(fā)布提供兩種類型的服務發(fā)布:實時服務發(fā)布、批量服務發(fā)布。
實時服務發(fā)布:將DB、HBase、File數據發(fā)布成實時服務,以RESTful方式提供。
批量服務發(fā)布:將DB、Hive數據發(fā)布成批量服務,以文件方式提供。
實時服務發(fā)布-微服務架構的實時服務引擎

實時服務引擎是基于SpringBoot框架實現(xiàn)的微服務架構引擎,支持分布式部署,線性擴展。提供擴展能力,封裝內部技術實現(xiàn)細節(jié),提供擴展接口實現(xiàn)對特殊需求的服務發(fā)布。 支持三種數據類型服務:
數據源服務:基于數據資源目錄將整個數據源發(fā)布服務;
單表服務:基于數據資源目錄將選定的單表及字段發(fā)布成服務;
結果集服務:基于數據資源目錄將選定的多張表及字段組裝形成新的結果集,按自定義的結果集發(fā)布成服務。
實時服務發(fā)布-發(fā)布邏輯

實時服務發(fā)布邏輯主要分為幾個步驟:
選擇所要發(fā)布的資源;
填寫所發(fā)布服務的基本信息;
實時服務引擎根據預先定義的vm模板,動態(tài)生成API、controller、service、dao、Model等層的Java代碼,編譯后發(fā)布為RESTful服務,提供Swagger服務描述。
批量服務發(fā)布引擎
批量服發(fā)布引擎基于數據流的異步處理模型,可將DB、Hive資源快速生成指定的文件類型服務,主要提供Excel、Csv、Xml三種文件類型。 批量服務提供三種訪問方式:
sftp:將文件推送到ftpserver,通過sftp的方式進行下載;
https:通過https方式下載文件;
P2P:借助于普元文件傳輸工具實現(xiàn)點對點的可靠文件傳輸。
故障告警

通過事件的方式按照定義規(guī)則進行檢查,當滿足規(guī)則時進行告警,支持以站內信息、郵件、短信方式進行通知。
服務引擎告警:對服務引擎CPU、內存指標進行檢測,當達到閾值時進行告警;
服務狀態(tài)告警:實時探測服務狀態(tài),當服務停止運行及時進行告警通知;
服務質量告警:針對服務的訪問異常、響應時間進行監(jiān)控,當訪問出現(xiàn)異?;蛘唔憫獣r間達到配置閾值時自動進行告警。
數據質量檢核

在數據服務共享發(fā)布整個環(huán)節(jié)提供對數據資源質量檢核能力,在事前、事中、事后進行質量核檢,保證數據質量。支持按照自定義規(guī)則進行檢核。
事前:對主外鍵、時間戳字段、數據類型等進行檢查;
事中:對非空、重復記錄等進行核檢;
事后:對及時性、一致性等進行核檢。
數據服務監(jiān)控 數據服務監(jiān)控主要從異步日志落地、日志讀取解析指標、指標存儲及故障處理等方面去考慮。

在運行環(huán)境中日志引擎(SSM)與Gateway一對一部署,通過異步分析Gateway調用日志提供服務調用結果、服務性能、服務調用耗時等指標。數據服務監(jiān)控詳細機制普元工程師阿良做過《普元數據服務監(jiān)控解密》的分享,在這里不做詳細贅述。
4.數據服務共享發(fā)布安全考慮
數據服務共享發(fā)布安全主要從服務訪問控制、數據加密及脫敏、基于安全協(xié)議訪問三個方面進行考慮。
服務訪問控制

消費方系統(tǒng)通過SpringCloud Gateway訪問數據服務,依次通過token授權、IP白名單、訪問頻度、訪問流量多重攔截器進行控制,保證服務訪問安全。
數據加密及脫敏

數據服務引擎端提供安全組件,保證數據訪問安全,主要從以下幾個方面進行控制:
數據加密:提供MD5、DES、AES、RSA等多種數加密方式;
數據脫敏:根據脫敏規(guī)則對字段任意數據進行脫敏,如常規(guī)替換、加密替換等;
行列級權限:對消費方系統(tǒng)提供行級、列級數據權限控制。
基于安全協(xié)議進行數據傳輸

在數據訪問的過程中基于HTTPS、SFTP安全協(xié)議進行傳輸,防止數據在傳輸過程中不被竊取、篡改,確保數據的完整性。
5.結束語
數據服務共享發(fā)布是企業(yè)數據資源“縱向貫通”、“橫向互聯(lián)”的共享通道,從數據準備、數據質量、數據發(fā)布、數據共享、數據安全等多個環(huán)節(jié)去詳細考慮,它將向著服務自助化、智能化的方向發(fā)展,幫助企業(yè)更加有效、可靠的管理和使用數據。
精選提問:
問1:****列級權限怎么控制的?是基于接口配置字段控制,還是基于 SQL 解析器動態(tài)改寫SQL?
答:列級權限控制是通過動態(tài)改寫SQL的方式控制。
問2:****數據加密中的對等加密和非對等加密,哪個加密的安全性要高些?
答:非對稱加密安全性高。
問3:****數據共享系統(tǒng)長什么樣的,適用于哪些場景,哪些企業(yè)?
答:普元有自己的數據服務共享平臺,具體的可以從官網(www.primeton.com)查看。適用于政府、金融、保險等有數據交換、共享及使用的場景的各行業(yè)領域。
問4:****數據共享安全管控中如何對非結構化的數據資源進行安全控制,如影像地圖等,如何進行按地理區(qū)域來控制訪問的權限及安全?
答:數據共享安全管控中對影像地圖類非結構化的數據資源很難從內容上去做控制,可以配置地理區(qū)域標識與服務的對應關系、地理區(qū)域IP與服務對關系,從服務訪問的角度來控制。
問5:****即使用了https,數據是不是還有被修改的可能,目前能做到數據不被修改嗎?
答:https中將服務器端公鑰證書同客戶端綁定,由客戶端在交互過程中去驗證證書的合法性,可以避免中間人攻擊,防止抓包和篡改,需要客戶端有驗證的邏輯。
問6:****在數據中臺和業(yè)務中臺是否也需要這個?前期如何規(guī)劃?
答:數據服務共享發(fā)布可以做為數據中臺和業(yè)務中臺的一部分,關注將已有數據資產發(fā)布成數據服務。前期可從數據標準、數據質量、數據治理的角度去規(guī)劃。
問7:****數據服務共享,核心是數據質量可靠,請問數據質量核檢能否保證數據質量,有無辦法對數據質量的真實性、完整性、時效性進行有效的管控。行業(yè)及普元是否有相關的解決辦法?
答:普元有專門的數據質量產品,在金融、政企行業(yè)有關的解決方案。
問8:****請問如何對數據服務從計量的角度進行監(jiān)控,滿足監(jiān)控數據共享程度的熱度、使用的頻率和按數據的訪問流量計價等?
答:可以借助于SparkStreaming、Flink等流式處理框架對數據服務的交易日志進行相關指標的計算。
問9:****為什么數據服務共享中,是否有報表共享服務?
答:可以將報表以接口服務或者文件的方式提供給數據使用方。
問10:****場景三中的血緣分析及級影響分析,能否具體舉例說明下?
答:血緣分析是基于當前資源向上追溯分析影響,影響分析基于當前資源分析對下游產生哪些資源產生影響。比如:當表某個字段發(fā)生變更時,可以通過血緣分析與影響分析查看對上游和下游所牽扯到的哪些系統(tǒng)有影響。
問11:****密鑰怎么管理?
答:秘鑰需要考慮從整個生命周期進行管理,進行定期備份與存儲,建議從網上查看下相關資料。
問12:****請問,數據標準這塊怎么理解,具體包括哪些內容?
答:普元有自己的數據標準產品,數據標準包括基礎標準和分析類標準,基礎標準包括數據內容格式、數據類型及數據含義;分析類標準含有指標的計算口徑、緯度和定義等。