中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何設計實時數據平臺(設計篇)

發布時間:2020-07-25 12:33:26 來源:網絡 閱讀:3356 作者:宜信技術 欄目:大數據

導讀:本文將會分上下兩篇對一個重要且常見的大數據基礎設施平臺展開討論,即“實時數據平臺”。
在上篇設計篇中,我們首先從兩個維度介紹實時數據平臺:從現代數倉架構角度看待實時數據平臺,從典型數據處理角度看待實時數據處理;接著我們會探討實時數據平臺整體設計架構、對具體問題的考量以及解決思路。
在下篇技術篇中,我們會進一步給出實時數據平臺的技術選型和相關組件介紹,并探討不同模式適用哪些應用場景。希望通過對本文的討論,讀者可以得到一個有章可循、可實際落地的實時數據平臺構建方案。

拓展閱讀:如何設計實時數據平臺(技術篇)

一、相關概念背景

1.1 從現代數倉架構角度看待實時數據平臺

現代數倉由傳統數倉發展而來,對比傳統數倉,現代數倉既有與其相同之處,也有諸多發展點。首先我們看一下傳統數倉(圖1)和現代數倉(圖2)的模塊架構:

如何設計實時數據平臺(設計篇)

圖1 傳統數倉

如何設計實時數據平臺(設計篇)

圖2 現代數倉

傳統數倉大家都很熟悉,這里不做過多介紹,一般來說,傳統數倉只能支持T+1天時效延遲的數據處理,數據處理過程以ETL為主,最終產出以報表為主。

現代數倉建立在傳統數倉之上,同時增加了更多樣化數據源的導入存儲,更多樣化數據處理方式和時效(支持T+0天時效),更多樣化數據使用方式和更多樣化數據終端服務。

現代數倉是個很大的話題,在此我們以概念模塊的方式來展現其新的特性能力。首先我們先看一下圖3中Melissa Coates的整理總結:

如何設計實時數據平臺(設計篇)

在圖3 Melissa Coates的總結中我們可以得出,現代數倉之所以“現代”,是因為它有多平臺架構、數據虛擬化、數據的近實時分析、敏捷交付方式等等一系列特性。

在借鑒Melissa Coates關于現代數倉總結的基礎上,加以自己的理解,我們也在此總結提取了現代數倉的幾個重要能力,分別是:

  • 數據實時化(實時同步和流式處理能力)

  • 數據虛擬化(虛擬混算和統一服務能力)

  • 數據平民化(可視化和自助配置能力)

  • 數據協作化(多租戶和分工協作能力)
1)數據實時化(實時同步和流式處理能力)

數據實時化,是指數據從產生(更新至業務數據庫或日志)到最終消費(數據報表、儀表板、分析、挖掘、數據應用等),支持毫秒級/秒級/分鐘級延遲(嚴格來說,秒級/分鐘級屬于準實時,這里統一稱為實時)。這里涉及到如何將數據實時的從數據源中抽取出來;如何實時流轉;為了提高時效性,降低端到端延遲,還需要有能力支持在流轉過程中進行計算處理;如何實時落庫;如何實時提供后續消費使用。實時同步是指多源到多目標的端到端同步,流式處理指在流上進行邏輯轉換處理。

但是我們要知道,不是所有數據處理計算都可以在流上進行,而我們的目的,是盡可能的降低端到端數據延遲,這里就需要和其他數據流轉處理方式配合進行,后面我們會進一步討論。

2) 數據虛擬化(虛擬混算和統一服務能力)

數據虛擬化,是指對于用戶或用戶程序而言,面對的是統一的交互方式和查詢語言,而無需關注數據實際所在的物理庫和方言及交互方式(異構系統/異構查詢語言)的一種技術。用戶的使用體驗是面對一個單一數據庫進行操作,但其實這是一個虛擬化的數據庫,數據本身并不存放于虛擬數據庫中。

虛擬混算指的是虛擬化技術可以支持異構系統數據透明混算的能力,統一服務指對于用戶提供統一的服務接口和方式。

如何設計實時數據平臺(設計篇)

圖4 數據虛擬化

(圖1-4均選自“Designing a Modern Data Warehouse + Data Lake” - Melissa Coates, Solution Architect, BlueGranite)

3)數據平民化(可視化和自助配置能力)

普通用戶(無專業大數據技術背景的數據從業人員),可以通過可視化的用戶界面,自助的通過配置和SQL方式使用數據完成自己的工作和需求,并無需關注底層技術層面問題(通過計算資源云化,數據虛擬化等技術)。以上是我們對數據平民化的解讀。

對于Data Democratization的解讀,還可以參見以下鏈接:

https://www.forbes.com/sites/bernardmarr/2017/07/24/what-is-data-democratization-a-super-simple-explanation-and-the-key-pros-and-cons

文中提到技術層面如何支持數據平民化,并給出了幾個例子:Data virtualization software,Data federation software,Cloud storage,Self-service BI applications等。其中數據虛擬化和數據聯邦本質上是類似技術方案,并且提到了自助BI這個概念。

4)數據協作化(多租戶和分工協作能力)

技術人員應該多了解業務,還是業務人員應該多了解技術?這一直是企業內爭論不休的問題。而我們相信現代BI是一個可以深度協作的過程,技術人員和業務人員可以在同一個平臺上,發揮各自所長,分工協作完成日常BI活動。這就對平臺的多租戶能力和分工協作能力提出了較高要求,一個好的現代數據平臺是可以支持更好的數據協作化能力的。

我們希望可以設計出一個現代實時數據平臺,滿足以上提到的實時化、虛擬化、平民化、協作化等能力,成為現代數倉的一個非常重要且必不可少的組成部分。

1.2 從典型數據處理角度看待實時數據處理

典型的數據處理,可分為OLTP, OLAP, Streaming, Adhoc, Machine Learning等。這里給出OLTP和OLAP的定義和對比:

如何設計實時數據平臺(設計篇)

(圖5選自文章“Relational Databases are not Designed for Mixed Workloads”-Matt Allen)

從某種角度來說,OLTP活動主要發生在業務交易庫端,OLAP活動主要發生在數據分析庫端。那么,數據是如何從OLTP庫流轉到OLAP庫呢?如果這個數據流轉時效性要求很高,傳統的T+1批量ETL方式就無法滿足了。

我們將OLTP到OLAP的流轉過程叫Data Pipeline(數據處理管道),它是指數據的生產端到消費端之間的所有流轉和處理環節,包括了數據抽取、數據同步、流上處理、數據存儲、數據查詢等。這里可能會發生很復雜的數據處理轉換(如重復語義多源異構數據源到統一Star Schema的轉換,明細表到匯總表的轉換,多實體表聯合成寬表等)。如何支持實時性很高的Pipeline處理能力,就成了一個有挑戰性的話題,我們將這個話題描述為“在線管道處理”(OLPP, Online Pipeline Processing)問題。

因此,本文所討論的實時數據平臺,希望可以從數據處理角度解決OLPP問題,成為OLTP到OLAP實時流轉缺失的課題的解決方案。下面,我們會探討從架構層面,如何設計這樣一個實時數據平臺。

二、架構設計方案

2.1 定位和目標

實時數據平臺(Real-time Data Platform,以下簡稱RTDP),旨在提供數據端到端實時處理能力(毫秒級/秒級/分鐘級延遲),可以對接多數據源進行實時數據抽取,可以為多數據應用場景提供實時數據消費。作為現代數倉的一部分,RTDP可以支持實時化、虛擬化、平民化、協作化等能力,讓實時數據應用開發門檻更低、迭代更快、質量更好、運行更穩、運維更簡、能力更強。

2.2 整體設計架構

概念模塊架構,是實時數據處理Pipeline的概念層的分層架構和能力梳理,本身是具備通用性和可參考性的,更像是需求模塊。圖6給出了RTDP的整體概念模塊架構,具體每個模塊含義都可自解釋,這里不再詳述。

如何設計實時數據平臺(設計篇)

圖6 RTDP整體概念模塊架構

下面我們會根據上圖做進一步設計討論,給出從技術層面的高階設計思路。

如何設計實時數據平臺(設計篇)

圖7 整體設計思想

由圖7可以看出,我們針對概念模塊架構的四個層面進行了統一化抽象:

  • 統一數據采集平臺

  • 統一流式處理平臺

  • 統一計算服務平臺

  • 統一數據可視化平臺

同時,也對存儲層保持了開放的原則,意味著用戶可以選擇不同的存儲層以滿足具體項目的需要,而又不破壞整體架構設計,用戶甚至可以在Pipeline中同時選擇多個異構存儲提供支持。下面分別對四個抽象層進行解讀。

1)統一數據采集平臺

統一數據采集平臺,既可以支持不同數據源的全量抽取,也可以支持增強抽取。其中對于業務數據庫的增量抽取會選擇讀取數據庫日志,以減少對業務庫的讀取壓力。平臺還可以對抽取的數據進行統一處理,然后以統一格式發布到數據總線上。這里我們選擇一種自定義的標準化統一消息格式UMS(Unified Message Schema)做為統一數據采集平臺和統一流式處理平臺之間的數據層面協議。

UMS自帶Namespace信息和Schema信息,這是一種自定位自解釋消息協議格式,這樣做的好處是:

  • 整個架構無需依賴外部元數據管理平臺;

  • 消息和物理媒介解耦(這里物理媒介指如Kafka的Topic, Spark Streaming的Stream等),因此可以通過物理媒介支持多消息流并行,和消息流的自由漂移。

平臺也支持多租戶體系,和配置化簡單處理清洗能力。

2)統一流式處理平臺

統一流式處理平臺,會消費來自數據總線上的消息,可以支持UMS協議消息,也可以支持普通JSON格式消息。同時,平臺還支持以下能力:

  • 支持可視化/配置化/SQL化方式降低流式邏輯開發/部署/管理門檻

  • 支持配置化方式冪等落入多個異構目標庫以確保數據的最終一致性

  • 支持多租戶體系,做到項目級的計算資源/表資源/用戶資源等隔離
3)統一計算服務平臺

統一計算服務平臺,是一種數據虛擬化/數據聯邦的實現。平臺對內支持多異構數據源的下推計算和拉取混算,也支持對外的統一服務接口(JDBC/REST)和統一查詢語言(SQL)。由于平臺可以統一收口服務,因此可以基于平臺打造統一元數據管理/數據質量管理/數據安全審計/數據安全策略等模塊。平臺也支持多租戶體系。

4)統一數據可視化平臺

統一數據可視化平臺,加上多租戶和完善的用戶體系/權限體系,可以支持跨部門數據從業人員的分工協作能力,讓用戶在可視化環境下,通過緊密合作的方式,更能發揮各自所長來完成數據平臺最后十公里的應用。

以上是基于整體模塊架構之上,進行了統一抽象設計,并開放存儲選項以提高靈活性和需求適配性。這樣的RTDP平臺設計,體現了現代數倉的實時化/虛擬化/平民化/協作化等能力,并且覆蓋了端到端的OLPP數據流轉鏈路。

2.3 具體問題和考量思路

下面我們會基于RTDP的整體架構設計,分別從不同維度討論這個設計需要面對的問題考量和解決思路。

1)功能考量

功能考量主要討論這樣一個問題:實時Pipeline能否處理所有ETL復雜邏輯?

我們知道,對于Storm/Flink這樣的流式計算引擎,是按每條處理的;對于Spark Streaming流式計算引擎,按每個mini-batch處理;而對于離線跑批任務來說,是按每天數據進行處理的。因此處理范圍是數據的一個維度(范圍維度)。

另外,流式處理面向的是增量數據,如果數據源來自關系型數據庫,那么增量數據往往指的是增量變更數據(增刪改,revision);相對的批量處理面向的則是快照數據(snapshot)。因此展現形式是數據的另一個維度(變更維度)。

單條數據的變更維度,是可以投射收斂成單條快照的,因此變更維度可以收斂成范圍維度。所以流式處理和批量處理的本質區別在于,面對的數據范圍維度的不同,流式處理單位為“有限范圍”,批量處理單位為“全表范圍”。“全表范圍”數據是可以支持各種SQL算子的,而“有限范圍”數據只能支持部分SQL算子,具體支持情況如下:

  • join:

? left join:支持。“限制范圍”可以left join外部lookup表(通過下推,類似hashjoin效果)

? right join:不支持。每次從lookup拿回所有lookup表數據,這個計算是不可行的也是不合理的

? inter join:支持。可以轉化為left join +filter,可以支持

? outer join:不支持。存在right join,因此不合理

  • union:支持。可以應用在拉回局部范圍數據做窗口聚合操作。

  • agg:不支持。可以借助union做局部窗口聚合,但無法支持全表聚合操作。

  • filter:支持。沒有shuffle,非常適合。

  • map:支持。沒有shuffle,非常適合。

  • project:支持。沒有shuffle,非常適合。

Join往往需要shuffle操作,是最費計算資源和時間的操作,而流上join(left join)將join操作轉化成hashjoin的隊列操作,將批量處理join的集中數據計算資源和時間平攤在數據流轉過程中,因此在流上做left join是最劃算的計算方式。

復雜的ETL并不是單一算子,經常會是由多個算子組合而成,由上可以看出單純的流式處理并不能很好的支持所有ETL復雜邏輯。那么如何在實時Pipeline中支持更多復雜的ETL算子,并且保持時效性?這就需要“有限范圍”和“全表范圍”處理的相互轉換能力。

設想一下:流式處理平臺可以支持流上適合的處理,然后實時落不同的異構庫,計算服務平臺可以定時批量混算多源異構庫(時間設定可以是每隔幾分鐘或更短),并將每批計算結果發送到數據總線上繼續流轉,這樣流式處理平臺和計算服務平臺就形成了計算閉環,各自做擅長的算子處理,數據在不同頻率觸發流轉過程中進行各種算子轉換,這樣的架構模式理論上即可支持所有ETL復雜邏輯。

如何設計實時數據平臺(設計篇)

圖8 數據處理架構演化

圖8給出了數據處理架構的演化,和OLPP的一種架構模式。其中wormhole和moonbox分別是我們開源的流式處理平臺和計算服務平臺,后面會具體介紹。

2)質量考量

上面的圖也引出了兩個主流實時數據處理架構:Lambda架構和Kappa架構,具體兩個架構的介紹網上有很多資料,這里不再贅述。Lambda架構和Kappa架構各有其優劣勢,但都支持數據的最終一致性,從某種程度上確保了數據質量,如何在Lambda架構和Kappa架構中取長補短,形成某種融合架構,這個話題會在新起文章中詳細探討。

當然數據質量也是個非常大的話題,只支持重跑和回灌并不能完全解決所有數據質量問題,只是從技術架構層面給出了補數據的工程方案。關于大數據數據質量問題,我們也會起一個新的話題討論。

3)穩定考量

這個話題涉及但不限于以下幾點,這里簡單給出應對的思路:

  • 高可用HA

整個實時Pipeline鏈路都應該選取高可用組件,確保理論上整體高可用;在數據關鍵鏈路上支持數據備份和重演機制;在業務關鍵鏈路上支持雙跑融合機制

  • SLA保障

在確保集群和實時Pipeline高可用的前提下,支持動態擴容和數據處理流程自動漂移

  • 彈性反脆弱

? 基于規則和算法的資源彈性伸縮

? 支持事件觸發動作引擎的失效處理

  • 監控預警

集群設施層面,物理管道層面,數據邏輯層面的多方面監控預警能力

  • 自動運維

能夠捕捉并存檔缺失數據和處理異常,并具備定期自動重試機制修復問題數據

  • 上游元數據變更抗性

?上游業務庫要求兼容性元數據變更

? 實時Pipeline處理顯式字段

4)成本考量

這個話題涉及但不限于以下幾點,這里簡單給出應對的思路:

  • 人力成本

通過支持數據應用平民化降低人才人力成本

  • 資源成本

通過支持動態資源利用降低靜態資源占用造成的資源浪費

  • 運維成本

通過支持自動運維/高可用/彈性反脆弱等機制降低運維成本

  • 試錯成本

通過支持敏捷開發/快速迭代降低試錯成本

5)敏捷考量

敏捷大數據是一整套理論體系和方法學,在前文已有所描述,從數據使用角度來看,敏捷考量意味著:配置化,SQL化,平民化。

6)管理考量

數據管理也是一個非常大的話題,這里我們會重點關注兩個方面:元數據管理和數據安全管理。如果在現代數倉多數據存儲選型的環境下統一管理元數據和數據安全,是一個非常有挑戰的話題,我們會在實時Pipeline上各個環節平臺分別考慮這兩個方面問題并給出內置支持,同時也可以支持對接外部統一的元數據管理平臺和統一數據安全策略。

本文我們探討了實時數據平臺RTDP的相關概念背景和架構設計方案。在架構設計方案中,我們尤其著重講了RTDP的定位和目標,整體設計架構,以及涉及到的具體問題和考量思路。有些話題很大,可以后續單獨形成文章進行專題討論,但整體上,我們給出了一整套RTDP的設計思路和規劃。在下篇技術篇中,我們會將RTDP架構設計具體化落地化,給出推薦的技術選型和我們的開源平臺方案,并會結合不同場景需求探討RTDP的不同模式應用。

作者:盧山巍

來源:宜信技術學院

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临江市| 三门县| 阜新市| 湘乡市| 织金县| 炉霍县| 乐安县| 海原县| 松溪县| 旬阳县| 九江市| 息烽县| 迁西县| 鞍山市| 始兴县| 武胜县| 巴彦县| 商河县| 武宣县| 江门市| 长沙市| 泸州市| 东莞市| 长岛县| 富锦市| 疏勒县| 壤塘县| 孟州市| 全南县| 新绛县| 仁怀市| 宁都县| 通道| 安乡县| 焦作市| 明光市| 沧州市| 田阳县| 乌恰县| 东海县| 孝感市|