快手大數據平臺服務化實踐

點擊上方

藍字

關注我們


面試官:請你講講Redis官方提供的高可用方案?


一次性說清楚秒驗(本機號碼一鍵登錄)


本文是圍繞着快手的數據服務化中臺進行介紹。 第一部分是背景介紹,包括數據開發的痛點,第二部分是介紹大數據服務化平臺,包括平臺架構以及關鍵細節詳解,第三部分是經 驗總結和未來思考。

背景


快手是一家數據驅動的公司,數據扮演了非常重要的角色,而數據的生產加工主要依靠數據開發工程師,其工作內容會涉及多個方面:數據開發工程師則首先根據業務需求開發好高質量的數據,通常是結構化數據(數據表);其次,開發穩定可靠的數據服務,並通過API方式交付給業務方使用。數據開發工程師有兩個痛點:1)開發數據服務門檻高;2)重複開發數據服務。


痛點一:開發數據服務門檻高


數據開發工程師除了開發完數據表外,通常還需要思考如下問題:


  1. 數據如何交付:業務通常期望使用數據接口方式來使用數據,而非數據表,這會更加靈活、解耦、高效。數據開發工程師因此需要建立對應的數據服務。

  2. 服務如何開發:數據服務有多種形式,通常要求開發工程師有微服務知識、服務發現註冊、高併發等。

  3. 權限、可用性問題:開發完數據服務後,需要考慮權限問題,確保數據資源能被安全的訪問;此外還需要考慮可用性問題,要以多種手段保障數據訪問的穩定性。

  4. 運維問題:數據服務本身涉及多種運維問題,如擴容、遷移、下線、接口變更、服務報警等。


以上問題都需要數據開發工程師去解決。這要求數據開發不僅僅是開發出數據表,還需要將數據表包裝成一個獨立的、靈活的、高可用的、安全的數據服務。這對於數據開發工程師要求很高:除了具備基本的業務需求捕獲、數據建模、SQL開發等能力外,還要具備開發高可用、高性能的數據服務能力(包括java開發、微服務等)。



痛點二:重複開發數據服務


快手很多業務線(如支付業務、直播業務、賬戶業務等),都存在數據需求,各業務線都做着:1)數據同步到線上數據庫和緩存;2)建設微服務等開發,其中不同業務線下,數據同步和微服務通常有很多共同之處,重複煙囪式的開發意味要重複開發數據服務,造成了人力資源浪費,而且開發效率低,從數據開發到最終交付數據服務,需要經歷較長的週期。


基於上述痛點,我們開始建設統一的數據服務化平臺。由此開啓一個新模式去解決問題。


大數據服務化平臺


數據平臺本身的定位是一站式自助數據服務平臺。用戶通過平臺來創建數據服務接口、運維服務、調用服務。平臺秉承“配置即服務”的理念:數據開發工程師不再需要手寫數據服務,只需要在平臺上進行簡單配置,平臺便可自動生產和部署數據服務,從而提升效率。


系統架構


大數據服務化業務架構如下所示,Data Lake 數據湖中存儲原始數據,經過數據開發之後,形成按主題域組織的數據資產。此時數據資產通常是在數據倉庫,訪問速度較慢,因此需要通過數據加速到更高速的存儲介質,最後經過多場景服務接口,服務於業務。


在技術架構方面,數據接口形式有 RPC 和 HTTP 兩類接口。RPC 接口不需要重複建立鏈接,且傳輸數據時會被高效序列化,適用於高吞吐場景下的微服務,實現負載均衡、流控、降級、調用鏈追蹤等功能。相對而言,HTTP 接口傳輸效率低一些,但使用非常簡單。


關鍵技術一:配置即開發


平臺用戶分爲兩類角色:其一是數據服務生產方,其二是數據服務調用方。數據服務生產方只需要配置,做到“配置即開發”,配置包括:1)數據源;2)數據加速到何處;3)接口形態,訪問方式;4)配置獨立的測試環境,訪問隔離的測試數據。當配置完畢後,數據服務平臺便會根據配置清單,完成接口的自動化生產和部署。生產和部署完畢後,調用方在平臺申請服務權限調用。通過自動化生產,達到配置即開發的目的,從而極大的提升效率。



關鍵技術二:多模式服務形態


數據服務有多種服務形態,包括:

  1. KV API:簡單點查,可以支撐百萬QPS、毫秒延遲。這類API是通過模板自動化創建出來,支持單查、批量查詢等接口,返回的結果是 Protobuf (PB) 結構體,從而將結果自動做了 ORM,對於主調方更加友好。典型場景包括:根據IP查詢geo位置信息、根據用戶Id查詢用戶標籤畫像信息等。

  2. SQL API:複雜靈活查詢,底層基於 OLAP/OLTP 存儲引擎。通過 Fluent API 接口,用戶可自由組合搭配一種或若干種嵌套查詢條件,可查詢若干簡單字段或者聚合字段,可分頁或者全量取回數據。典型場景包括:用戶圈選(組合若干用戶標籤篩選出一批用戶)。

  3. Union API:融合API,可自由組合多個原子API,組合方式包括串行和並行方式。調用方不再需要調用多個原子API,而是調用融合API,通過服務端代理訪問多個子查詢,可以極大降低訪問延遲。




關鍵技術三:高效數據加速


前面提及的數據資產,通常是存在於低速的存儲引擎中,無法支撐線上業務高訪問流量。因此需要以系統化的方式進行數據加速。目前有兩種加速方式:1)全量數據加速;2)多級緩存(部分數據加速)。


全量數據加速


從多個數據源攝入原始數據(如Kafka,MySQL、線上訪問日誌等),進行加工建模後,得到數據資產。數據資產經由獨立的數據同步服務,同步至其他更高速的存儲引擎,如 redis、hbase、druid等。數據同步支持一次性或者週期性(小時、天、周等)將數據從Hive同步至其他存儲中,數據同步本身是基於分佈式的調度系統,內核是基於 datax 進行數據同步。大數據服務化平臺單日同步的數據量達到1200億條,數據size達到20TB。


多級緩存


大數據服務化平臺會使用 Redis、Hbase、Druid、Clickhouse 等方式存儲所有數據,但是部分存儲如Hbase速度可能較慢,針對熱點數據需要使用額外的熱點緩存來Cache數據。熱點緩存是多級緩存,針對每個API接口,用戶可自由搭配組合多級緩存、靈活設置緩存策略。此外,針對數據較大的API,還可配置數據壓縮,通過多種壓縮方式(如 ZSTD, SNAPPY, GZIP 等),可將數據量顯著減少(部分API 甚至能減少90%的數據存儲量)



關鍵技術四:高可用保障


服務可用性是微服務領域內的一大核心,服務的高可用通常需要組合多種手段來保障。快手數據服務化平臺通過多種方式來達到高可用的目的,主要包括:

  • 彈性服務框架

  • 資源隔離

  • 全鏈路監控


彈性服務框架


數據服務是部署在容器雲環境,容器雲是快手自研的彈性可伸縮的容器服務,部署在其中的RPC服務會註冊到 KESS (快手自研服務註冊與發現中心),供主調方去調用,如有離羣壞點,會自動摘除。服務調用是基於 RPC,全鏈路都有監控,包括服務可用性、延遲、QPS、容器CPU、容器內存等情況。


資源隔離


資源隔離是可用性保障的常見手段之一,通過隔離將意外故障等情況的影響面降低。不管是微服務,還是存儲,我們都按照業務 + 優先級(高、中、低)粒度隔離部署,獨立保障,業務之間互不影響、業務內不同級別也互不影響。同一業務線內可能有多個不同數據服務,通過混合部署,提高資源使用率。


全鏈路監控


服務很難避免出現問題或者故障,一旦出現問題,及早發現及早介入是非常重要的。服務平臺構建了全鏈路監控,包括:

  1. 數據同步:對數據資產同步至高速存儲的過程進行監控,包括數據質量檢測(過濾髒數據)、同步超時或者失敗檢測等

  2. 服務穩定性:構建一個獨立的哨兵服務,來監測每個API的運行指標(如延遲、可用性等),客觀的評估健康度

  3. 業務正確性:數據服務需要確保用戶訪問的數據內容和數據資產表內容是一致的,因此哨兵服務會從數據一致性層面去探查,確保每個API的數據一致性


總結和展望


大數據服務化平臺從2017年演化至今,已經支持多類應用場景,涵蓋直播、短視頻、電商、商業化等在線業務,生產者中臺等準在線業務,運營系統等偏內部數據系統等,目前平臺在線業務總 QPS 達到 1000W,平均延遲在毫秒級;對於準在線業務和內部數據系統,基於CH、Druid等多種數據引擎,支持多種靈活查詢。數據服務平臺支持了多種模式API,很好滿足了多元化需求。此外數據服務平臺也支持服務權限、API市場等豐富功能,進一步賦能業務。


大數據服務化平臺未來進一步發展方向主要包括:


  1. 貼近業務需求:數據服務平臺本身是爲業務服務,通過賦能業務而對企業帶來價值,業務本身在不斷髮展,未來也會有更多的需求出現,因此數據服務平臺本身會不斷抽象和沉澱出公共數據服務能力。

  2. 深耕數據資產:數據資產是數據服務之根本,如果沒有完善的數據資產建設,上面就很難構建出結構化的統一的數據服務,針對數據資產有較多內容,包括資產註冊和審覈、資產地圖、資產標籤、資產管理、資產開放和服務。



大數據服務平臺的能力建設會朝着統一的 OneService 體系前進。主要包括三個方面:


  1. 支持豐富的數據源:包括大寬表、文本文件、機器學習模型(模型也是一種數據資產),來構建完善的數據服務。

  2. 支持多樣取數方式:除了支持同步快速取數之外,還支持異步查詢取數、推送結果、定時任務等多樣化方式,以滿足業務多種場景需求。

  3. 建設統一的API網關:集成權限管控、限流降級、流量管理等於一體,不僅平臺創建的服務可以註冊進API網關,用戶自己開發的API也可註冊進API網關,從而享受已有的基礎網關能力,爲業務提供數據服務能力。


作者簡介:倪順,本碩畢業於北京大學,曾就職於Hulu,從事視頻領域大數據研發工作,包括視頻播放質量的數據建設以及基於數據驅動的播放體驗提升。目前就職於快手,從事數據中臺領域工作,主要負責大數據服務化基礎平臺建設。

本文分享自微信公衆號 - 俠夢的開發筆記(xmdevnote)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章