羅強:騰訊新聞如何處理海量商業化數據?

来源:https://www.cnblogs.com/datafuntalk/archive/2022/05/22/16297821.html
-Advertisement-
Play Games

導讀: 隨著信息化時代的來臨,信息呈現出爆炸式的增長。尤其是在移動互聯網的推動下,每天大量信息涌入讓人們應接不暇,騰訊新聞客戶端的出現,就是以幫助用戶尋找有用信息而出現。這時,面對海量的數據、繁多的業務,如何處理手中的數據,利用數據賦能是今天會議討論的重點。 今天的介紹會圍繞下麵三部分展開: 背景介 ...


file

導讀: 隨著信息化時代的來臨,信息呈現出爆炸式的增長。尤其是在移動互聯網的推動下,每天大量信息涌入讓人們應接不暇,騰訊新聞客戶端的出現,就是以幫助用戶尋找有用信息而出現。這時,面對海量的數據、繁多的業務,如何處理手中的數據,利用數據賦能是今天會議討論的重點。
今天的介紹會圍繞下麵三部分展開:

  • 背景介紹
  • 海量日誌處理架構
  • 數據應用舉例

--

01 背景介紹

首先介紹一下騰訊新聞的背景。

團隊目前承擔騰訊新聞客戶端,體育和新聞插件的創新業務的輸入,廣告和用戶行為的數據採集、處理、計算和分析的工作。最大的特點就是數據多、業務廣。數據龐大,業務應用多樣,例如數據會被用於報表展示、演算法模型的訓練、產品決策等場景。

file

--

02 海量日誌處理架構

1. 總體架構

file

眾所周知,業務在實際開發過程中需要一套有效的數據管理、組織、處理方法,使得整個數據體系更加有序。上圖展示的是騰訊新聞整體的處理架構,包括:

  • 採集層:依托於大同數據採集上報服務,大同是目前內部力推的數據治理的客戶端上報平臺。

  • 計算層:包括實時計算與離線計算。離線是基於TDW(hive表)和HDFS建立的各個業務請求、點擊、曝光等維度的數據表,同時利用歐拉平臺的數據分層、數據分類、數據血緣等能力完成數據資產的管理。實時計算方面使用Oceanus平臺和內部的Datahub完成整個數據的開發。這個設計解決了需求多變、代碼複雜、系統高可用、海量數據低延時接入、數據高復用等問題。在ODS原始數據層、DWD數據明細層、DWS主題輕匯聚層,我們採用集團的Tube消息中間件,以及BG內部的CDMQ。Tube消息中間件解決海量數據及時接入的問題。數據各層由流式計算引擎進行業務的清洗與轉化,結果會迴流到下一個消息中間件,供下游使用。對於ODS層的實時數據我們會每隔一個小時同步到TDW,大概存儲周期為3天,這部分數據既能用於離線計算,又能作為數據的備份。比如一些鏈路發生異常,可以利用這部分數據進行問題排查和數據恢復。

  • 數據存儲層:組件比較豐富,有Impala、ClickHouse、Mysql、Redis等。Impala主要應用在內部燈塔平臺和Datatalk平臺進行報表和數據探測的工作中。

2.數據上報

file

這部分詳細地講解整個數據上報體系。目前數據上報會根據數據源進行分類上報。數據源主要分為四大類:

  • 客戶端:包括客戶端、PC、H5這類數據。採用燈塔SDK進行上報,使用大同SDK進行採集。同時會基於大同平臺進行事件的管理,例如埋點的事件管理和統一參數的上報。大同平臺有效地解決需求散亂、數據難校驗、上報不規範等問題。在整個實時鏈路中,這部分數據接著會通過atta分發到TDW(hive表)和CDMQ實時中間件供下游進行實時消費。

  • 後臺:主要包括後臺伺服器日誌的上報。這部分數據會上報到Tdbank。Tdbank會同時將數據轉化為TDW(hive表),同時還會分發到Tube實時流中,供下游進行實時消費。

  • DB:跟後臺數據上報類似。以前的方式是DB同步,例如按小時更新或者按天更新將Mysql更新數據放到Hive表中。目前,會通過Flink CDC監聽Mysql的binLog實時更新業務維表。

  • 文件:例如業務配置和運營的配置文件,量不大,會通過手動的方式離線同步到TDW(hive表)中去。

3. 實時計算框架

file

實時計算架構整體上選擇Lamda架構,ODS層到DWD層數據的處理,實時和離線部分是公用的,也體現了流批一體的概念。下麵就分模塊介紹實時計算部分的整體架構。

  • 存儲/接入層:負責客戶端與後臺的實時中間數據上報。數據被上報到消息中間件中,消息中間件一方面負責消息的存儲,另一方面承擔數據分發給離線和線上處理平臺的功能,同時它是數據源和數據處理系統之間的橋梁。

  • DWD:DWD層的設計是為了減少下游頻繁對ODS層數據進行消費。對於新的需求開發我們只需要申請DWD層的Tube消費節點即可。這樣處理極大地節省了計算單元。

  • 計算層:主要負責數據的ETL、維表關聯、特征抽取等業務邏輯的計算。

  • 數據倉庫存儲層:主要採用TDW(hive表)、HDFS和Impala作為存儲介質。ODS層的原始數據預設保存在HDFS上,保存周期預設為3天。

另外,DWD和DWS層數據支持寫入TDW和HDFS去做離線計算。同時也支持導入Impala進行存儲,以供燈塔平臺和DataTalk平臺等進行數據探測和報表展示。

4. 離線計算框架

file

針對離線計算部分,我們對數據進行了分層管理,簡單概括為以下四層:

  • ODS:原始數據存儲層。存儲大同上報或後臺上報的原始數據,例如廣告點擊曝光等數據。

  • DWD:數據明細存儲層。存儲經過清洗和標準化的數據。

  • DWS:數據輕度匯合層。基於單業務場景或者單用戶行為的彙總。

  • ADS:數據應用層。只要存儲最終的,呈現結果的數據。例如存儲報表和進入Impala之前的數據,或者 存儲需要進入Redis、ClickHouse等的數據。

我們對數據層的調用進行了約束:

  • DWD層必須存在。且所有的ETL邏輯都在DWD層上。

  • DWS層優先調用DWD層。ADS優先調用DWS層。

  • DWD層不做過多與DIM維表的關聯

同時我們對於表的命名進行規範,該命名規範使得雜亂無章的數據表變得規範有序,使得內部業務合作變得便利。具體規範如下:

file

5. 數據質量及鏈路保障

關於數據質量以及鏈路保障,分為線上和離線兩部分進行講解。

file

離線部分,一方面會依托平臺提供指標監控告警以及SLA保障的能力;另一方面,在代碼層面進行設計,通過異常捕獲、分級告警,出錯分層管理,重置機制等,提高整個系統的高可用和穩定性。

實時部分,最容易出錯的就是Flink實時計算部分,例如出現記憶體不足、TaskManager突然減少、網路抖動導致的服務連接超時等。我們會依托於Oceanus平臺提供的告警能力。我們設計了一套代碼層級的告警作為報警獨立模塊。首先我們通過try catch捕捉Flink Task中的異常,同時這些報警信息會被髮送到消息中間件,然後報警信息會在消息中間件中被聚合,為了預防報警疲勞,報警信息會被分級,錯誤碼會被沉澱,然後報警會統一通過企業微信進行通知,正常情況問題可在5min內被解決。

6. 總結

file

我們在實時和離線對海量日誌處理設計方案上的收益可以總結如下:

  • 首先,通過大同平臺上報,使得上報更加規範化;

  • 第二是事件規範化,各個BG之間可以應用同一規範數據,有統一規範的數據格式和命名規則;

  • 第三就是數據倉庫規範化,包括分層、主題、管理等,使得整體管理更加清晰。


03 數據應用舉例

file

這部分,我們通過Flink CDC的DB數據同步技術,進一步舉例說明我們的海量數據處理流程。上圖是通過Flink CDC進行實時更新維表和實時排行榜更新的設計方案,整體主要包括輸入數據源、Flink實時ETL模塊、Flink核心計算模塊和數據存儲模塊四部分。Flink內部繼承開源組件Debezium和Kafka,CDC技術可以實時捕捉Mysql的增刪改,然後將數據同步到下游,同步到多個數據源,然後通過抽取資料庫日誌的方式完成數據上報。

file

Flink CDC實現方式主要有兩種:SQL模式和自定義反序列化模式。個人傾向於選擇第二種方式,可以更加靈活地實現業務需求。通過實現反序列化相關介面,資料庫的變更數據可以通過SourceRecord得到,解析之後的數據可以通過collect進行收集然後傳到下游進行消費。

今天的分享就到這裡,謝謝大家。
本文首發於微信公眾號“DataFunTalk”。


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

-Advertisement-
Play Games
更多相關文章
  • 前言 本篇博客將會詳細介紹 CSAPP 之 ShellLab 的完成過程,實現一個簡易(lou)的 shell。tsh 擁有以下功能: 可以執行外部程式 支持四個內建命令,名稱和功能為: quit:退出終端 jobs:列出所有後臺作業 bg <job>:繼續在後臺運行一個處於停止狀態的後臺作業,<j ...
  • 前置工作:安裝OpenBLAS; 安裝Mpich (可參考首頁博客) 官網下載壓縮包到/opt目錄 cd /opt && wget https://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz 解壓到 /opt 目錄 tar -xzf hpl-2.3.tar ...
  • 查看官網版本 https://www.mpich.org/downloads/ 最新的stable release是mpich 4.0.2,複製下載鏈接。 安裝依賴 mpich需要系列依賴,如果不確定缺少哪些依賴,可以在後續配置mpich時根據提示安裝缺少的依賴。 CentOS 7.9下安裝mpic ...
  • 概述 MongoDB 是一個介於關係型資料庫和非關係型資料庫之間的產品,是非關係型資料庫中功能最豐富,最像關係型資料庫的。 MongoDB 支持的數據結構非常鬆散,類似 json 的 bson 格式,因此可以存儲比較複雜的數據類型。MongoDB 最大的特點是支持的查詢語言非常強大,語法類似於面向對 ...
  • 一、概述 Apache Sqoop(SQL-to-Hadoop)項目旨在協助RDBMS(Relational Database Management System:關係型資料庫管理系統)與Hadoop之間進行高效的大數據交流。用戶可以在 Sqoop 的幫助下,輕鬆地把關係型資料庫的數據導入到 Had ...
  • 1.先把SplServer解壓 2.解壓後出來Evaluation_CHS 3.點進去,然後點SETUP 4.點擊安裝,然後點擊全新SQL 5.選擇Developer版本 6.資料庫引擎服務框打勾,下麵的目錄不建議放c盤,建議放其他盤去 7.不要動直接下一步 8.不用選中,直接下一步 9.選擇混合模 ...
  • 一、Apache Pig概述 Apache PIG提供一套高級語言平臺,用於對結構化與非結構化數據集進行操作與分析。這種語言被稱為Pig Latin,其屬於一種腳本形式,可直接立足於PIG shell執行或者通過Pig Server進行觸發。用戶所創建的腳本會在初始階段由Pig Latin處理引擎進 ...
  • 商業智能(BI)作為高價值服務, 自20世紀60年代電腦出現時就已經存在, 當時主要的用戶是大型企業和政府部門, 經過半個世紀的發展, 商業智能已經成為中小企業的必備技能. 使用BI, 企業可以從實際數據中提取關鍵事實, 將其轉化為決策的依據. 是否高效地使用商業智能和分析, 是現代環境中成功的關... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...