實時計算在貝殼的實踐

本文由貝殼找房的資深工程師劉力雲將帶來Apache Flink技術在貝殼找房業務中的應用,通過企業開發的實時計算平臺案例的分享幫助用戶瞭解Apache Flink的技術特性與應用場景。

**摘要:**Apache Flink 是一個分佈式大數據處理引擎,可對有限數據流和無限數據流進行有狀態計算。本文由貝殼找房的資深工程師劉力雲將帶來Apache Flink技術在貝殼找房業務中的應用,通過企業開發的實時計算平臺案例的分享幫助用戶瞭解Apache Flink的技術特性與應用場景。

業務規模及演進

下圖爲貝殼找房的業務場景示意圖。最上層爲貝殼找房公司最爲主體的四大業務:二手房交易、新房交易、租賃業務及裝修業務。四大業務運營將產生圖示中間部分的四大數據即樓盤字典、交易數據、用戶行爲日誌與後端服務日誌。圖示最下部分代表公司實時數據採集、實時數據計算的業務模塊,本文中的案例將重點介紹數據實時計算部分的設計、實現及應用內容。

幻燈片04.png

發展歷程

在2018年初,隨着公司埋點治理規範的推進,我們建設了DP實時數據總線,統一承接各種埋點數據流的標準化處理,並對外提供清洗後的實時數據。隨着維護的實時任務增加,面臨着實時數據流穩定性以及任務管理方面的挑戰,於是貝殼大數據部着手研發了Hermes實時計算平臺,提供統一的實時任務管理平臺。

在2018年10月,我們推出了SQL V1編輯器來方便用戶開發實時計算任務。SQL V1基於Spark Structured Streaming技術,用戶可以使用SQL完成需求的開發,同時以界面拖拽的形式呈現給用戶,使用戶的操作更加便捷。在2019年5月,經過調研對比,我們引入了Flink技術棧,研發的SQL V2編輯器正式上線,SQL V2全面支持Flink SQL的各種語法並設計了大量的自定義函數,兼容hive UDF以及用戶常用函數。目前我們已經在公司內進行實時數倉業務場景的探索應用。

幻燈片05.png

應用規模

下圖所示爲目前實時計算在貝殼找房企業中的應用規模。目前平臺支持30餘個業務項目,流計算任務數達到400個,隨着數倉的不斷擴充,實時流計算的任務數將不斷上升。每日處理的消息條數達到了800億級別,效率十分可觀。

幻燈片06.png

支持的項目

從下圖所示實時計算在企業中的支持項目可以看出,目前實時計算平臺支持從風控、租賃到策略搜索再到新房交易等一系列業務項目,從各個維度支持起了企業運營產生出數據實時計算業務需求。

幻燈片07.png

任務增長趨勢

最開始平臺上線時支持的任務增長較爲緩慢,在2019年6月初,平臺升級到Flink並全面支持SQL開發後,任務數量開始大規模的增長,在2019年11月份實時數倉建成後,平臺所支持的任務數量有了十分明顯的增長趨勢。

幻燈片08.png

平臺數據統計

下圖所示爲平臺每日數據統計。目前平臺每日可以處理1000億條數據,一般數據任務的處理延遲在40毫秒左右。

幻燈片09.png

Hermes實時計算平臺介紹

平臺概覽

Hermes平臺目前支持着公司實時任務的開發、編輯、部署、啓停等管理功能及豐富的監控報警等服務。平臺支持Java、Scala、Python等多種語言開發的實時任務,支持自定義任務、模板任務及場景任務三大任務類型,同時做到了各個項目的資源隔離,每個項目均有項目的專有隊列,防止與其他項目在資源上發生競爭。平臺同時爲資源需求較小的項目提供了公共隊列,通過公共隊列對該種項目進行支持的方式,更爲方便的實現任務的開發。

幻燈片11.png

Hermes架構

下圖所示爲Hermes平臺的整體架構,架構分爲4個層次,圖中最下層深藍條目代表架構中的計算引擎,目前計算引擎支持Flink與Spark Streaming技術,並通過消息隊列、離線存儲等技術輔助完成數據實時的存儲。在引擎層方面,架構採用StreamSQL、DataStream、StreamCEP等技術搭建,其中StreamCEP技術很好的支持了經紀人平臺業務實時監控報警的需求。功能組件層方面包括了任務實例的管理、項目管理及數據源管理等。平臺目前可以在同一任務中的不同任務快照間進行相互切換,當發現上線任務有問題時,可以回退到之前的快照。

幻燈片12.png

SQL V1編輯器

下圖所示爲SQL V1編輯器示意圖。該編輯器對於大部分數據清洗及數據處理的業務場景可以實現簡潔高效的編輯處理。用戶在編輯器左側可以定義編輯數據源、操作符及目標源等數據信息。中央面板上呈現的數據爲SQL V1支持編輯的操作類型,選中面板中央的過濾器,即可在編輯器右側添加相關的過濾條件,實現數據的相關過濾。在目標源層面,編輯器目前支持Kafka、Druid等多種目標源,大大提升了編輯器的兼容性。

幻燈片13.png

SQL V2編輯器

下圖所示爲SQL V2編輯器示意圖。目前SQL V2是基於Flink SQL技術較爲完善的編輯器,左側爲用戶進行代碼編輯的部分,用戶在此處可以編輯大量SQL語句以此助力不同業務場景。左下欄目中的數據爲用戶選中數據源自動生成的DDL,通過DDL編輯器將操作數據的樣式更清晰的展示給用戶。SQL V2支持了三大類型的數據表,分別是source表、sink表及維表,以此方便用戶的開發。編輯器右下角可以呈現SQL語法的檢測情況,以此提示用戶在編輯時出現的語法錯誤。

幻燈片14.png

SQL V2架構

SQL V2工具整體架構如下圖所示。前端SQL編輯器模塊包括語法語義的檢查、執行計劃的查看、自動DDL的生成及任務調試的功能。用戶通過任務調試功能可以查看任務執行結果。後臺將引擎提交到Yarn集羣上執行,引擎通過任務id回調後臺接口獲取需要執行的SQL,對SQL做語法校驗和語法解析,若出現維表關聯則會額外對SQL做一層轉換。

幻燈片15.png

在這裏插入圖片描述

SQL引擎整體架構

下圖所示爲SQL引擎的整體架構。整體架構分爲三個層次,最底層爲Flink Table API。在Flink層之上企業設計了代碼的封裝,以factory的形式方便最上層的方法調用。最上層的core層負責整個系統的SQL解析。

幻燈片16.png

維表關聯

在SQL解析過程中,最爲複雜的是維表的表格關聯,下圖爲維表關聯繫統架構圖。數據從數據源導入後,系統使用Async I/O技術訪問後端,系統後端使用Data Accessor接口訪問後端的存儲。系統後端存儲支持HBase與Redis存儲技術,同時後端會將數據緩存於LRU Cache模塊中。維表關聯後的數據支持多種大數據工具的存儲,從而大大增加了系統的兼容性。

幻燈片17.png

豐富的內置函數

系統同時爲用戶提供了豐富的內置函數,包括時間函數、集合函數、Json處理函數及字符串函數。豐富的內置函數可以方便用戶的開發,省去用戶自己去開發的時間。

幻燈片18.png

實時數倉整體架構

下圖所示爲實時數倉的整體架構,同時也是SQL V2系統落地的應用場景。各個層級間產生的數據被儲存在了Kafka Topic中,同時數據也將被同步到hive中備份。業務方可以查詢實時備份數據進行數據驗證及分析等操作。目前數倉的實時計算部分可以計算當天或過往幾天的數據,實時計算平臺正在與其他組件合作,開發實時與離線聯合的分析查詢,以此擴展實時數倉的使用範圍。

幻燈片19.png

實時數倉數據統計

下圖所示爲企業實時數倉的數據統計。從2019年8月,SQL V2正式上線運營,至2019年10月平臺開始支持實時數倉開發,系統的數據量開始加速增長。目前,實時數倉已經有100餘個任務,數據吞吐量也達到了21億條/天的數據級別,數據規模較爲可觀。

幻燈片20.png

實時數倉案例

下圖列舉出實時數倉平臺已經實現提供數據支持的應用案例。

1. 交易平臺

交易平臺實時大屏實時展示大區內的交易狀況。在交易平臺的建設中,開發團隊通過數據迴環將還未關聯的數據返回儲存模塊進行重新關聯,並通過檢驗該數據的生命週期判斷是否關聯成功,團隊通過此種方式使得數據維表與事實表數據最終一致。

2. 經紀人行程量

經紀人行程量可以動態的展示當前經紀人對客戶的維護情況,使企業可以掌握經紀人實時的工作狀態。

3. 實時用戶畫像

實時用戶畫像可以實時地向企業呈現來自各個系統用戶的數據信息,通過組合各個平臺上用戶的行爲信息,提供全面、精準的用戶畫像。企業的算法策略部門將根據用戶的實時畫像進行相關信息、內容的推薦。

幻燈片21.png

監控報警

下圖爲平臺的監控報警頁面截圖。監控系統會實時監控平臺任務的處理延時、source寫入量及sink寫出量三大指標。系統中同時可以設置平臺數據的無心跳時間,當超出設置時限後,系統將會進行報警。

幻燈片22.png

監控報警架構

下圖爲監控報警架構圖。監控系統通過自定義的Listener對Spark進行監控,Listener引入SDK收集Spark任務的信息及運行中的日誌數據。用戶在此處需要進行手動SDK的導入。在Flink應用模塊中,系統設計支持了自定義Report數據的獲取,並通過自動加載的方式直接載入Flink中進行數據的分析與計算,同時通過任務啓動是注入java探針的方式獲取任務的相關信息。所有的監控信息將被統一送到Kafka Topic中,經Hermes平臺分析處理,觸發相應的延時報警及心跳報警。

幻燈片23.png

未來發展與規劃

整體架構

實時計算平臺的整體架構如下圖所示。在架構中間部分,平臺包含了實時事件中心、事件處理平臺等系統來更好的處理未來企業中的業務場景需求,以通用服務平臺的方式爲更多的業務方提供統一的業務支撐。在引擎方面,未來會深入研究Flink的狀態管理、端到端的精確一次等技術,提高數據處理的準確性和一致性。

幻燈片25.png

未來發展

未來將會建設平臺的資源動態分配能力,根據任務的歷史運行情況自動分配資源。用戶可以在事件處理平臺上定義各種事件,實時的對事件進行分析,併產生相關的數據報表。用戶通過實時規則引擎用以完成各種業務規則的配置,事件命中規則後觸發相關的業務操作。用戶數據平臺彙集各個產品、各個端的用戶數據,提供用戶行爲的實時查詢、分析,更加高效的支持營銷、推薦等業務場景。實時數倉建設方面會進行KAPPA模式的探索,推進流批一體化建設,提升歷史數據的處理和查詢能力。

幻燈片26.png

發佈了119 篇原創文章 · 獲贊 39 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章