數據架構的未來——淺談流處理架構

来源:https://www.cnblogs.com/tree1123/archive/2019/08/29/11428109.html
-Advertisement-
Play Games

​ 數據架構設計領域正在發生一場變革,其影響的不僅是實時處理業務,這場變革可能將基於流的處理視為整個架構設計的核心,而不是將流處理只是作為某一個實時計算的項目使用。本文將對比傳統數據架構與流處理架構的區別,並將介紹如何將流處理架構應用於微服務及整體系統中。 傳統數據架構 ​ 傳統數據架構是一種中心化 ...


file

​ 數據架構設計領域正在發生一場變革,其影響的不僅是實時處理業務,這場變革可能將基於流的處理視為整個架構設計的核心,而不是將流處理只是作為某一個實時計算的項目使用。本文將對比傳統數據架構與流處理架構的區別,並將介紹如何將流處理架構應用於微服務及整體系統中。

傳統數據架構

​ 傳統數據架構是一種中心化的數據系統,可能會分為業務數據系統和大數據系統。

file

​ 業務數據系統存儲事務性數據,比如SQL, NOSQL資料庫,這種數據擁有準確的數據,比如用戶業務,支付業務等體系都可以這樣實現,這類需要經常更新,是整體業務系統支撐的核心。

​ 大數據系統主要負責存儲不需要經常更新的數據,由於數據量過大,可能需要Hadoop等大數據框架進行實現,系統會定時的計算結果,比如在每天零點統計用戶訪問量,可能將結果結果寫入SQL資料庫,完成統計工作。

​ 而實時數據系統往往只作為一個某一個項目使用,比如實時日誌報警系統,實時推薦系統。

file

​ 這樣設計的原因是因為數據處理性能和準確性的限制,在Streaming-大數據的未來一文中曾提到過,由於對事件時間的不可控,我們不能將實時數據作為準確可靠的數據來源。而低延遲的要求將極大的占用系統性能。

​ 這種傳統架構成功地服務了幾十年,但隨著大型分散式系統中的計算複雜 度不斷上升,這種架構已經不堪重負。許多公司經常遇到以下問題。
• 在許多項目中,從數據到達到數據分析所需的工作流程太複雜、太緩慢。

• 傳統的數據架構太單一:資料庫是唯一正確的數據源,每一個應用程式 都需要通過訪問資料庫來獲得所需的數據。

• 採用這種架構的系統擁有非常複雜的異常問題處理方法。當出現異常問題時,很難保證系統還能很好地運行。

而且隨著系統規模擴大,維持實際數據與狀態數據間的一 致性變得越來越困難,需要不斷更新維護全局狀態。

流處理架構

​ 作為一種新的選擇,流處理架構解決了企業在大規模系統中遇到的諸多問題。以流為基礎的架構設計讓數據記錄持續地從數據源流嚮應用程式,併在各個應用程式間持續流動。沒有一個資料庫來集中存儲全局狀態數據, 取而代之的是共用且永不停止的流數據,它是唯一正確的數據源,記錄了業務數據的歷史。在流處理架構中,每個應用程式都有自己的數據,這些 數據採用本地資料庫或分散式文件進行存儲。

​ 這種思路在之前是不可能辦到的,它要求我們對消息有重覆消費的能力,還要保持消息系統的高性能,同時還必須對事件時間做出精確的處理,但是現在我們有了Kafka與Flink,一切都變得簡單了。

file

​ 流處理項目架構主要是兩部分:消息傳輸層,流處理層。 數據來源是連續的消息流,比如日誌,點擊流事件,物聯網數據。輸出為各種可能的數據流向。

​ 消息傳輸層從各種數據源(生產者)採集連續事件產生的數據,並傳輸 給訂閱了這些數據的應用程式和服務(消費者)。 這種設計使得生產者與消費者解耦,topic的概念,多個源接收數據,給多個消費者使用,消費者不需要立刻處理消息也不需要一直處於啟動狀態。消息傳輸層需要同時具備高性能,持久性,相當於緩衝區,可以將事件數據短期保存起來。而Kafka可以讓高性能和持久性兼得。Offset機制實現了消息持久性,消息可以重播再計算;而基於磁碟緩存的讀寫可以做到高吞吐。

file

​ 流處理層有 3 個用途:①持續地將數據在應用程式和系統間移動;②聚合併處理事件;③在本地維持應用程式的狀態

Flink兼顧了這些優勢,Apache Flink是一個框架和分散式處理引擎,用於在無邊界和有邊界數據流上進行有狀態的計算。Flink 能在所有常見集群環境中運行,並能以記憶體速度和任意規模進行計算。

file

將流處理架構應用於微服務與整體系統

應用於微服務

​ 從上文可以知道,流處理架構的消息是從Kafka中流出的流數據。 Flink從消息隊列中訂閱數據並加以處理。處理後的數據可以流向另一個消息隊列。這樣所有的應用都可以共用流數據。

​ 基於流處理的微服務架構也為欺詐檢測系統的開發人員帶來了靈活性。新增加一個數據消費者的開銷幾乎可以忽略不計,同時只要合適,數據的歷史信息可以保存成任何一種格式,並且使用任意的資料庫服務。消息就在反覆使用,處理,持久化中發揮了其最大最高效的作用。

應用於整體系統

​ 事實上,流處理架構的作用遠不止於此,流數據消費者並不僅限於實時應用程式,儘管它們是很重要的一種。

file

圖中展示了從流處理架構中獲益的幾類消費者。A 組消費者可能做各種實時分析,包括實時更新儀錶盤。B 組消費者記錄數據的當前狀態,這些數據可能同時也被存儲在資料庫或搜索文件中。

​ 比如在電力監控系統中,我們需要實時的對電力故障報警,也需要實時監控電流電壓數據,也需要持久化數據做歷史分析預測等等。

file

本文簡單對比了傳統數據架構與流處理架構的區別,以及流處理架構的優勢所在,但這種體系也面臨著其複雜性和很多挑戰,深入瞭解Kafka和Flink將使得這一切變得更加簡單。

參考資料:Flink基礎教程

Flink官方文檔

相關文章:

Flink快速入門

Streaming-大數據的未來

什麼是Kafka?

更多實時計算,Flink,Kafka等相關技術博文,歡迎關註實時流式計算

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在 ASP.NET Core 中,微軟提供了一套預設的依賴註入實現,該實現對應的包為: ,我們可以通過查看其對應的開源倉庫看一下它的具體實現。基於該實現,我們不必顯式創建我們的服務對象,可以將其統一註入到 ServiceProvider 中進行集中維護,使用的時候直接在該對象中獲取即可。讓我們 ...
  • 作者:int32bit www.zhihu.com/question/59227720 ag:比grep、ack更快的遞歸搜索文件內容。 Github地址: https://github.com/ggreer/the_silver_searcher tig:字元模式下交互查看git項目,可以替代gi ...
  • 進程介紹: 1、在Linux中,每個執行的程式(代碼)都稱為一個進程。每一個進程都分配一個ID號。 2、每一個進程,都會對應一個父進程,而這個父進程可以複製多個子進程。 3、每個進程都有兩種方式存在:前臺進程和後臺進程。前臺進程就是用戶屏幕上可以進行操作的;後臺進程則是實際在操作,但屏幕上無法看到的 ...
  • ******Linux目錄結構與目錄管理******* 一、Linux目錄結構: 1、目錄創建規則:FHS文件系統層次化標準 指定了Linux操作系統的哪些目錄是一定要具備的 2、目錄的結構 樹形結構: / rootfs 根文件系統;在系統啟動後,硬碟需要被使用就需要有驅動,驅動程式在grub1.5 ...
  • 一、系統基礎 1、三大部件: CPU:運算器、控制器、存儲器 記憶體:CPU的數據只能從記憶體中讀取,且記憶體數據是易失性的(頁面) IO: 控制匯流排、數據匯流排 2、OS的管理 GUI:圖形用戶界面 GNOME KDE XFCE CLI:命令行管理界面 shell 常見的shell程式: sh bash ...
  • 安裝WebPlatformInstaller_x64_en-US,導致了IIS應用被訪問時,應用程式池自動關閉的問題。 ...
  • 這樣的sql咋樣? ...
  • 8月28日,騰訊雲資料庫在京正式啟動戰略升級,宣佈未來將聚焦雲原生、自治、超融合三大戰略方向,以用戶為中心,聯接未來。併在現場面向全球用戶同步發佈五大戰略級新品,包括資料庫智能管家DBbrain、雲資料庫TBase、資料庫備份服務DBS、雲資料庫Redis混合存儲版,以及自研雲原生資料庫CynosD ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...