Apache Flink 在实时金融数据湖的应用
本文由中原銀行大數據平臺研發工程師白學余分享,主要介紹實時金融數據湖在中原銀行的應用。主要內容包括:
1、背景概況
2、實時金融數據湖體系架構
3、場景實踐
一、背景概況
首先簡單介紹一下中原銀行,它位于河南省鄭州市,是河南省唯一的省級法人銀行,是河南省最大的城市商業銀行。2017 年 7 月 19 日在香港成功上市。中原銀行在成立之初就將科技利行和科技興行作為我行的戰略,我行立志要成為一個科技銀行和數據銀行。我們一直在從事技術,也崇尚技術,希望用技術的手段來解決現在的問題。
本文將從實時金融數據湖的建設背景、體系架構、場景實踐三個方面分享。
1.數據湖誕生的業務背景
■ 決策方式變遷
下面來看一下背景概況,我們認為現在的銀行的決策方式正面臨巨大的變遷。
- 首先,傳統的銀行數據分析主要集中在銀行的收入、成本、利潤的分配和應對監管部門的監管。這些數據分析非常復雜,但也存在一定的規律,它屬于財務數據分析。隨著互聯網金融的不斷發展,銀行的業務不斷受到擠壓,如果仍然將數據分析集中在收入、成本、分配及監管方面,已經不能滿足業務的需求。如今,更好的了解客戶,收集大量的數據,做更多有針對性的營銷和決策分析是當務之急。因此,現在銀行的業務分析決策由傳統的財務分析逐步轉向面向 KYC 的分析。
- 其次,傳統的銀行業務主要依靠業務人員進行決策以滿足業務的發展需求。但是隨著銀行業務的不斷發展,各種各樣的應用產生大量的多類型數據。僅僅依靠業務人員去做決策,已無法滿足業務的需求。當前面臨的問題更加復雜,影響因素也日漸增多,需要用更全面、智能的技術方式來進行解決。因此,銀行需要將傳統的純業務人員決策方式轉變為越來越多依靠機器智能的決策方式。
■ 問題分析
大數據的時代最大的特點就是數據量大、數據的類型多。在使用大規模數據的過程中涉及各種各樣的技術,包括:
- 傳統的面向財務分析離線數據分析
- 面向非財務的數據分析
- 面向事件或日志等頻繁變更
- 實時性較高的數據分析
我們需要多樣化的數字營銷手段來描繪更全面、準確、科學的客戶畫像。同時,也需要實時風險決策技術來實時監控業務面臨的風險、多模數據加工技術來有效支撐不同類型的數據,包括結構化數據、半結構化數據、非結構化數據等。當然也需要機器學習和人工智能技術來支持問題的智能分析和決策。
如此多的技術,加上數據驅動決策的場景,決定了當前銀行的數據分析面臨著一個巨大的變遷,從傳統的面向財務的、面向離線的數據分析,逐步轉向面向客戶的、面向實時的數據分析。以上是實時金融數據湖建設的第一個觀點。
2.數據湖誕生的技術背景
實時金融數據湖建設的第二個觀點是,在銀行體系下,面向規范化、精準加工的傳統數倉體系,能夠較好的解決財務分析等場景,并在很長時間內仍會是主流方案。
■ 傳統數倉架構
下圖展示的是傳統的數倉架構。從下往上,依次是基礎貼源層、公共數據的整合層、業務集市層和應用加工層。不同的層每天通過批的方式執行大量的運算,來得到業務想要的結果。銀行很長時間內非常依賴傳統的數倉體系,因為它非常好的解決了財務分析的問題。其特點也比較明顯:
- 精準、規范
- 多層數據加工
- 口徑統一
- T+1 數據處理
- 具備較高的性能
- 經過長時間積累沉淀
- 適合財務分析
以上是傳統數據倉庫的優勢。當然它的缺點也比較明顯:
- 變更困難
- 單位存儲成本較高
- 不適合海量日志、行為等變更頻繁,實時性高的數據
- 半結構化數據和非結構化數據兼容差
以上是實時金融數據湖建設的第二個觀點,即傳統的數據倉庫有它的優勢和不足,并將長期存在。
■ 數倉的變遷
實時金融數據湖建設的第三個觀點是,面向 KYC、機器智能的分析,需要支持多類型數據、多時效數據、更加敏捷的使用,因此需要新的與數據倉庫互補的架構體系。
3.實時金融數據湖的特點
通過以上介紹的三個觀點引出今天介紹的主題,實時金融數據湖。 主要有三個特點:
- 第一,開放性。支持多類型場景,如 AI、非結構化、歷史數據,海納百川。
- 第二,時效性。具備有效的支持實時分析與實時決策的體系架構。
- 第三,融合性。與銀行數據倉庫技術架構融合,統一數據視圖。
整體的實時金融數據湖是一個融合的數據湖,它的融合理念主要體現在以下 6 個方面:
- 第一,數據匯聚的融合,各種海量、多樣數據匯聚的地方,包括結構化、半結構以及非結構數據。
- 第二,技術實現的融合,包含云計算、大數據、數據倉庫的融合以及流計算和批處理技術的融合。
- 第三,規范設計的融合,數據模型主題設計靈活,同時支持 Schema-on-read 和 Schema-on-write 模式,支持多維、關系數據模型。
- 第四,數據管理的融合,數據湖和數倉元數據管理的統一以及用戶開發體驗的統一。
- 第五,物理位置的融合,可以是物理集中的單一大集群,也可以是物理分散,邏輯集中的邏輯集群。
- 第六,數據存儲的融合,分析數據統一存儲的技術平臺,符合入湖倉標準的數據按照要求放入,降低存儲和運維成本。
1
二、體系架構
1.實時金融數據湖架構
■ 功能架構
首先來看一下實時金融數據湖的功能架構。在功能上,包括數據源、統一的數據接入、數據存儲、數據開發、數據服務和數據應用。
第一,數據源。不僅僅支持結構化數據,也支持半結構化數據和非結構化數據。
第二,統一數據接入。數據通過統一數據接入平臺,按數據的不同類型進行智能的數據接入。
第三,數據存儲。包括數據倉庫和數據湖,實現冷熱溫智能數據分布。
第四,數據開發。包括任務開發,任務調度,監控運維,可視化編程。
第五,數據服務。包括交互式查詢,數據 API,SQL 質量評估,元數據管理,血緣管理。
第六,數據應用。包括數字化營銷,數字化風控,數據化運營,客戶畫像。
■ 邏輯架構
實時金融數據湖的邏輯架構主要有 4 層,包括存儲層、計算層、服務層和產品層。
- 在存儲層,有 MPP 數據倉庫和基于 OSS/HDFS 的數據湖,可以實現智能存儲管理。
- 在計算層,實現統一的元數據服務。
- 在服務層,有聯邦數據計算和數據服務 API 兩種方式。其中,聯邦數據計算服務是一個聯邦查詢引擎,可以實現數據跨庫查詢,它依賴的就是統一元數據服務,查詢的是數據倉庫和數據湖中的數據。
- 在產品層,提供智能服務:包 RPA、證照識別、語言分析、客戶畫像、智能推薦。商業分析服務:包括自助分析、客戶洞察、可視化。數據開發服務:包括數據開發平臺,自動化治理。
2.實時金融數據湖工程實踐
下面講一下實時金融數據湖的工程實踐,主要針對實時結構化數據分析。整體基于開源架構搭建,如下圖所示,主要有 4 層,包括存儲層、表結構層、查詢引擎層和聯邦計算層。
- 存儲層和表結構層是數據智能分布的組成部分,支持 Upsert/Delete、Table Schema 和 ACID 的語義保證,并且它可以兼容存儲半結構化數據和非結構化數據。
- 查詢引擎層和聯邦計算層是統一數據開發平臺的一個組成部分。統一數據開發平臺提供的是一站式的數據開發,可以實現實時數據任務的開發和離線數據任務的開發。
本次分享主要針對的是實時數據任務的開發。后面主要介紹的是一站式流計算開發平臺,它可以實現實時任務的開發、管理、運維,保障實時任務的穩定運行。
1
3.流計算開發平臺
為什么銀行需要流計算開發平臺,流計算開發平臺的優勢是什么?
■ 優勢
流計算開發平臺的優勢在于可以有效降低實時數據開發準入門檻,助力實時業務快速發展。通過流計算開發平臺,提供一個一站式的實時數據開發平臺,包括可視化的數據開發,任務管理,實現多租戶和多項目的管理,統一運維管理、權限管理,可以在這個平臺上完成實時數據任務的開發。流計算開發平臺是基于 Flink SQL 來做的,Flink SQL 本身是一種生產力。
通過 Flink SQL 的不斷應用,可以把流計算開發平臺的能力下推至分支行,分支行可以通過平臺,按照業務需求自主的開發實時數據的任務,以此來促進銀行業務的發展。
■ 架構
流計算開發平臺的架構如下圖所示。主要有數據存儲、資源管理、計算引擎、數據開發、Web 可視化等。
它可以實現多租戶的管理、多項目的管理,并且用戶可以在上面實現一個實時任務的運維監控。流計算開發平臺資源管理方式,支持物理機和虛擬機的方式,同時支持統一的云底座 K8s。平臺計算引擎是基于 Flink,提供了數據集成、實時任務的開發、運維中心、數據管理,和可視化數據開發 IDE 等功能。
■ “直通式”實時場景
上面主要介紹了流計算開發平臺的架構和優勢,下面針對具體的場景做進一步介紹。首先是“直通式”實時場景架構。
不同的數據源數據被實時的接入到 Kafka,Flink 實時讀取 Kafka 數據進行處理,將處理的結果發送給業務端。業務端可以是 Kafka,也可以是 HBase 等不同的下游。業務的維表數據是用 Elastic 來存儲。“直通式”架構可以實現 T+0 的數據的時效性,主要用在實時決策場景中。
- 實時決策分析
這里舉了一個簡單的例子,臨期貸后催收業務。貸款快過期了需要進行催收。業務依賴賬戶余額、交易金額、本期應還金額。通過三個數據,針對不同的業務進行決策,是通過短信催收、智能語音催收,還是電話催收?
如果是基于原有的離線數倉的架構,得到的數據都是 T+1 的。用過期的數據決策,可能客戶已經還款,但是仍然存在電話催收的問題。而通過“直通式”場景架構的應用,可以實現 T+0 的賬戶余額,交易金額和本期應還金額,實時進行決策,提升用戶的體驗。
- 實時 BI 分析
再來看一個例子,實時獲取過去一段時間到現在的理財產品銷量信息,這個需求有一些關鍵字,需要“實時獲取”,即需要 T+0 的數據。“一段時間到現在”,它涉及歷史數據的查詢。理財產品的銷量信息涉及到銀行業務,一般都比較復雜,需要用到多流 join。
整個需求是一個實時 BI 需求,這個需求使用“直通式”的架構無法有效解決,“直通式”架構用的是 Flink SQL,但 Flink SQL 無法有效應對歷史數據的查詢,并且銀行的業務一般都比較復雜,現在主要用的雙流 join。要解決這個問題,需要探索區別于“直通式”實時場景架構的新架構。
■ “落地式”實時場景
下面介紹“落地式”的實時場景架構,數據源被實時接入到 Kafka 之后,Flink 可以實時處理 Kafka 的數據,并將處理的結果寫入到數據湖中。數據湖整體基于開源方案搭建,數據的存儲是用的 HDFS 和 S3,表格式用的是 Iceberg。Flink 讀取完 Kafka 的數據之后進行實時處理,這時候可以把處理的中間結果寫入到數據湖中,然后再進行逐步處理,最終得到業務想要的結果。處理的結果可以通過查詢引擎對接應用,包括 Flink、Spark、Presto 等。
4.實時金融數據湖
■ 架構
下面是中原銀行的實時金融產品架構。包括“直通式”實時應用場景和“落地式”的實時金融場景。數據會實時的接入到 Kafka,然后 Flink 實時的讀取 Kafka 中的數據進行處理。如果涉及維表數據,則是存在 Elastic 中。這里存在兩種情況:
- 業務邏輯簡單,Flink 實時讀取 Kafka 中的事件數據和 Elastic 中的維表數據進行處理,處理的結果會直接發送給業務。
-
業務邏輯復雜,會進行分步處理,將中間結果先寫到數據湖,再進行逐步的處理,得到最終的結果。然后最終的結果會通過查詢引擎對接不同的應用。
■ 數據流向
這是實時金融數據湖的數據流向圖。實時數據的數據源都來自于 Kafka,然后 Flink SQL 通過 ETL 方式實時讀取 Kafka 中的數據。通過實時數據的 ETL 和數據湖平臺兩種方式對接應用,提供的是實時和準實時的輸出結果。其中,實時數據 ETL 對應的是“直通式”實時場景架構,而數據湖平臺對應的是“落地式”的實時應用場景架構。
■ 實時金融數據湖特點
實時金融數據湖的特點有三點。
- 第一,開放性。數據湖兼容支持復雜 SQL,支持大量的金融場景。
- 第二,時效性。支持實時和準實時的數據分析處理,并且有落地和非落地的兩種應用對接的方式。
- 第三,融合性。數據湖提供的是一個金融數據湖的架構,支持流批統一的結構化數據的分析處理。當然也支持半結構化和非結構化,因為數據湖用的是分布式存儲。
■ 建設成果
通過數據湖的不斷建設,整體也取得了一系列成果。我們現在是 T+0 的數據時效性,已經支持 20+ 的金融產品,存儲成本可以降低 5 倍。
三、場景實踐
1.智能實時反欺詐
實時金融數據湖主要應用在兩個大的方面,一個是實時 BI,一個是實時決策。其中,實時決策的典型應用是智能實時反欺詐業務,它依賴于實時計算平臺、知識圖譜平臺、機器學習平臺、實時數據模型,提供一系列的數據服務,包括關系欺詐服務、設備指紋服務、行為監測服務、位置解析服務和共性匹配服務,以此來支持交易反欺詐場景、申請反欺詐場景和營銷反欺詐場景。
當前已經實現日均實時處理 140 萬條風險數據,日均實時阻斷 110 次,日均實時預警 108 次。
2.實時 BI
再來看一個實時 BI 場景,主要是客戶實時洞察平臺,內部叫知秋平臺,依賴于實時計算平臺、知識圖譜平臺、客戶畫像平臺、智能分析平臺。不同的平臺組合在一起,提供了交互式查詢服務、統一的元數據管理服務、SQL 質量評估服務、配置式開發服務、統一可視化數據展示等。支持了趨勢分析、圈子分析、留存分析、客戶客群分析等場景。現在已經可以打通實時分析類場景常用需求和服務,實現實時 BI 分析閉環可視化,分行自主數字化實時 BI 分析,已落地實時 BI 分析用例 26800 個,實時 BI 分析平臺平均月活 10000+,每天輔助分析各類實時 BI 需求 30000+。
原文鏈接:https://developer.aliyun.com/article/781340?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Apache Flink 在实时金融数据湖的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mPaas 研发流程和线上运维介绍
- 下一篇: 解读云原生下的可观察性发展方向