<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幾種實時數(shù)倉架構(gòu)設(shè)計思路

          共 3289字,需瀏覽 7分鐘

           ·

          2021-08-13 22:38

          01 什么是實時數(shù)倉


          首先需要明確什么是實時數(shù)倉,百度百科與維基百科都沒有給出具體說明,哪究竟什么才是實時數(shù)倉呢?是不是可以通過實時流實時獲取數(shù)據(jù)就是實時數(shù)倉?或者說流批一體就是實時數(shù)倉?在或者全面采用實時方式,采集和實時計算才是實時數(shù)倉?


          這個問題在不同企業(yè)可能會有不同答案,有些會認為提供實時看板或?qū)崟r報表就算是實時數(shù)倉;另外一些可能覺得數(shù)倉提供出去數(shù)據(jù)必須都是實時才算實時數(shù)倉。其實這個問題沒有一個標準答案,不同人、場景、企業(yè)對它理解是不一樣的。記得之前有位上司講管理崗與技術(shù)崗區(qū)別,其中一點是:


          對待一件事情或需求,T 崗答案都是明確:要么可以做,要么不可以做;M 崗的回答看似明確,其實會有多種解讀角度。【這不就是老油條么,哈哈】


          所以從不同角度去解讀實時數(shù)倉,對什么是實時數(shù)倉定義是不一樣;一般會有一些幾種定義:

          • 具備實時數(shù)據(jù)處理能力,并能夠根據(jù)業(yè)務(wù)需求提供實時數(shù)據(jù)的數(shù)倉能力,如可以為運營側(cè)提供實時業(yè)務(wù)變化、實時營銷效果數(shù)據(jù)。

          • 數(shù)倉中所有數(shù)據(jù),從數(shù)據(jù)采集、加工處理、數(shù)據(jù)分發(fā)都采用實時方式。

          • 從數(shù)據(jù)建設(shè)、數(shù)據(jù)質(zhì)量、數(shù)據(jù)血緣、數(shù)據(jù)治理等都是采用實時方式。


          從中可以看出不同理解,建設(shè)實時數(shù)倉復(fù)雜程度是不一樣。但最終建設(shè)一套什么樣實時數(shù)倉還是由業(yè)務(wù)驅(qū)動,需要綜合考慮投入產(chǎn)出。



          02 實時數(shù)倉架構(gòu)設(shè)計思路


          數(shù)據(jù)流轉(zhuǎn)與處理,在實時或者離線數(shù)倉基本上都是類似下圖的,因為分層是一種非常有效的數(shù)據(jù)治理方式,所以在實時數(shù)倉如何進行管理的問題上,首先考慮的也是分層的處理邏輯。



          從上圖可以看出,在設(shè)計實時數(shù)倉方案時,需要對以下幾點進行思考(不是為了設(shè)計出最牛逼技術(shù)方案,而是所設(shè)計方案是最切合業(yè)務(wù)場景與資源情況的;有時候牛逼技術(shù)方案會加大技術(shù)復(fù)雜程度與運維難度,會很考驗我們駕馭能力;因此我們選擇的不是技術(shù)最牛逼方案,而且最切合我們實際情況方案):
          • 是否數(shù)據(jù)集成流批一體:離線與實時是否使用統(tǒng)一數(shù)據(jù)采集方式;如統(tǒng)一通過 CDC 或者 OGG 將數(shù)據(jù)實時捕獲推送到 kafka,批與流在從 kafka 中消費數(shù)據(jù),載入明細層。

          • 是否存儲層流批一體:離線與實時數(shù)據(jù)是否統(tǒng)一分層、統(tǒng)一存儲;如離線與實時數(shù)據(jù)經(jīng)過 ETL 處理之后根據(jù)統(tǒng)一分層(ODS、DMD、DMS)持久化到同一個數(shù)據(jù)存儲中。

          • 是否 ETL 邏輯流批一體:流與批處理是否使用統(tǒng)一 SQL 語法或者 ETL 組件,再通過底層分別適配流與批計算引擎。

          • 是否 ETL 計算引擎流批一體:流與批使用同一套計算引擎,從根本上避免同一個處理邏輯流批兩套代碼問題。


          數(shù)據(jù)集成與存儲層流批一體主要產(chǎn)生以下問題:

          • 流處理更容易出現(xiàn)數(shù)據(jù)丟失,丟失的查詢操作。

          • 一般使用消息中間件對流數(shù)據(jù)進行存儲,消息中間件的存儲特點也決定了,丟失的查詢操作,非常苦難,難以對數(shù)。

          • Schema 的同步與轉(zhuǎn)換問題,基于流處理來確保 Schema 保持一致,并且數(shù)據(jù)不受影響其實并不容易。面對頻繁變動的業(yè)務(wù)系統(tǒng),往往維護量會變高。



          03 幾種實時數(shù)倉架構(gòu)分析


          根據(jù)這幾個是否一體:“是否數(shù)據(jù)集成流批一體、“是否存儲層流批一體”、“是否 ETL 邏輯流批一體”、“是否 ETL 計算引擎流批一體”,不同流批一體組合會設(shè)計出不一樣的實時數(shù)倉架構(gòu)。比較經(jīng)典的架構(gòu)有 LambdaKappa;還有美團實時數(shù)倉架構(gòu)(實時數(shù)據(jù)生產(chǎn) + 實時分析引擎)與阿里的流批一體架構(gòu)(Lambda+Kappa)。下面分別對這幾個實時數(shù)倉架構(gòu)概括說明。

          Lambda 數(shù)倉架構(gòu)



          Lambda 有 Batch Layer(批處理)和 Speed Layer(流式處理)。然后通過將批、和流的結(jié)果拼接在一起。Lambda 架構(gòu)具備有數(shù)據(jù)不可變性質(zhì)避免人為引入錯誤問題、支持數(shù)據(jù)重跑、將復(fù)雜的流處理分離出來。而 Batch Layer 和 Speed Layer 由于需要滿足不同的場景,往往會選擇不同的組件。


          而且,大家寫過 Storm 就會知道,Storm 的代碼寫起來的是挺痛苦的(Trident 會有所改善)。所以,我們需要準備兩套代碼。同樣的邏輯,針對批處理、和流處理要實現(xiàn)兩次。


          Lambda 架構(gòu)問題:

          • 兩套架構(gòu)、各自獨立

          • 一種邏輯兩套代碼

          • 組件太多

          • 數(shù)據(jù)散布在多個系統(tǒng)中,互相訪問困難

          Kappa 架構(gòu)


          Kreps 提出了另一個維度的思考,我們是否能夠改進,采用流處理系統(tǒng)來建設(shè)大數(shù)據(jù)系統(tǒng)呢?提出完全可以通過建設(shè)以流為核心來建設(shè)數(shù)據(jù)系統(tǒng)。并且,通過重放歷史數(shù)據(jù)來實現(xiàn)數(shù)據(jù)重跑。


          這種以流處理為核心來建設(shè)數(shù)據(jù)系統(tǒng),Kreps 稱之為「Kappa 架構(gòu)」。Kappa 和 Lambda 都是希臘字母符號。這套架構(gòu)遠比 Lambda 架構(gòu)簡單。就是把原先批處理,改成流處理。它沒有了 Lambda 架構(gòu)中的 Batch Layer、Speed Layer、以及 Serve Layer。



          Lambda 架構(gòu)問題:

          • 大數(shù)據(jù)量回溯成本高,生產(chǎn)壓力大

          • 遺留離線數(shù)據(jù)數(shù)倉的遷移問題,要將成千上萬的 ETL 作業(yè)遷往流處理系統(tǒng),其工作量之大、成本之大、風險之大

          • 數(shù)據(jù)丟失的問題,流處理平臺,數(shù)據(jù)丟失問題相對于批處理,更容易出現(xiàn)。而且,要進行對數(shù)非常困難

          實時數(shù)據(jù)生產(chǎn) + 實時分析引擎



          上圖是美團實時數(shù)倉架構(gòu)設(shè)計,數(shù)據(jù)從日志統(tǒng)一采集到消息隊列,再到數(shù)據(jù)流的 ETL 過程,作為基礎(chǔ)數(shù)據(jù)流的建設(shè)是統(tǒng)一的。之后對于日志類實時特征,實時大屏類應(yīng)用走實時流計算。


          對于 Binlog 類業(yè)務(wù)分析走實時 OLAP 批處理。美團實時數(shù)倉架構(gòu)主要是將一些在實時處理面臨的難點,由實時 OLAP 處理。

          實時處理面臨的幾個難點:

          • 業(yè)務(wù)的多狀態(tài)性:業(yè)務(wù)過程從開始到結(jié)束是不斷變化的,比如從下單->支付->配送,業(yè)務(wù)庫是在原始基礎(chǔ)上進行變更的,Binlog 會產(chǎn)生很多變化的日志。而業(yè)務(wù)分析更加關(guān)注最終狀態(tài),由此產(chǎn)生數(shù)據(jù)回撤計算的問題,例如 10 點下單,13 點取消,但希望在 10 點減掉取消單。

          • 業(yè)務(wù)集成:業(yè)務(wù)分析數(shù)據(jù)一般無法通過單一主體表達,往往是很多表進行關(guān)聯(lián),才能得到想要的信息,在實時流中進行數(shù)據(jù)的合流對齊,往往需要較大的緩存處理且復(fù)雜。

          • 分析是批量的,處理過程是流式的:對單一數(shù)據(jù),無法形成分析,因此分析對象一定是批量的,而數(shù)據(jù)加工是逐條的。

          Lambda+Kappa



          從上圖可以看出,阿里的實時數(shù)倉架構(gòu)是同時 Lambda 與 Kappa 結(jié)合;數(shù)據(jù)集成沒有使用流批一體,分別通過實時采集、數(shù)據(jù)同步方式實現(xiàn)流與批數(shù)據(jù)采集。ETL 邏輯流批一體,實現(xiàn)用戶只寫一套代碼,平臺自動翻譯成 Flink Batch 任務(wù)和 Flink Stream 任務(wù),同時寫到一張 Holo 表,完成計算層表達的統(tǒng)一。存儲層流與批是分開存儲,但可以實現(xiàn)流批存儲透明化,查詢邏輯完全一致。



          04 總結(jié)


          架構(gòu)設(shè)計不是為了設(shè)計出最牛逼技術(shù)方案,而是所設(shè)計方案是最切合業(yè)務(wù)場景與資源情況的。有時候牛逼技術(shù)方案會加大技術(shù)復(fù)雜程度與運維難度,需要投入更高成本駕馭它。因此我們選擇的不是技術(shù)最牛逼方案,而且最切合我們實際情況技術(shù)架構(gòu)。


          在實時數(shù)倉架構(gòu)設(shè)計時,主要是思考“是否數(shù)據(jù)集成流批一體、“是否存儲層流批一體”、“是否 ETL 邏輯流批一體”、“是否 ETL 計算引擎流批一體”;權(quán)衡這幾個一體帶來問題,而設(shè)計出符合業(yè)務(wù)場景的實時數(shù)倉架構(gòu)。

          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設(shè)PPT)

          企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 158
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲超碰成人在线 | 无码免费一区二区三区四区 | 国精产品一品二品国精 | 91干逼免费观看 | 亚洲天堂50p |