前端埋點資料採集(一)採集系統架構設計

爵岚發表於2024-05-06

前幾次內容分享,我們逐步搭建了傳統hadoop大資料平臺、zookeeper、kafka叢集等。

假設現在一個場景是:今天產品經理提了1個優先順序極高的需求:應用系統前端埋點資料都需要被採集到大資料平臺hadoop上。


“前端埋點資料的採集系列”,主要分為以下5個部分:

一、採集系統架構設計

二、mock應用系統10萬條前端埋點資料
三、Flume採集資料

四、Flume消費Kafka資料到HDFS

五. 前端埋點資料採集總結

一、明確專案目標設計方案

這個需求意味著公司專案開始由javaweb端的資料走向大資料平臺,再到數倉平臺,最終由報表系統、使用者畫像系統、推薦系統等展示資料分析平臺,來監控經營決策和衡量公司業績。

1、明確專案目標

  • 首先,我們要明確專案目標:前端埋點資料需要從javaweb端上傳採集到大資料平臺HDFS端。
  • 其次,前端APP、H5、PC、小程式等產生的資料分為兩大類:一類是業務資料,比如使用者的交易、下單、支付、退單等在應用系統的資料庫儲存;
  • 第二類是埋點資料,比如使用者的手機型號、位置、點選螢幕、購買路徑等行為會由應用系統寫到日誌檔案log中。
  • 需要採用不用的採集方法。

2、設計方案

  • 前端埋點的採集我們有很多方案:

    • 可以透過自行編寫java程式碼來模擬實現生成資料到本地檔案;
    • 也可以透過第三方工具,埋點系統工具來實現日誌的生成。比如:友盟和talking data、神策平臺、後裔採集器等等。
  • 梳理本地資料被採集到HDFS上的過程
    • flume採集資料到kafka
    • Kafka生產和消費資料
    • flume消費kafka資料到HDFS上

二、應用系統架構設計

我們首先需要了解應用系統涉及架構以及資料的流向。

1、前端

大前端資料來源包括:APP、PC、小程式、H5、爬蟲等資料;

2、CDN

主要組成部件是:防火牆、網路安全設施、F5、負載均衡等。我們關注的點是資料來源,其實這層對企業來說非常重要涉及網路資訊保安、負載等等。

3、後端

後端這裡分成兩大類:主要是根據資料結構來分。
1)業務資料系統

  • 單體架構單nginx,單tomcat,基於SpringBoot,單資料庫Oracle;
  • 分散式架構多負載均衡多個nginx,下掛多個tomcat的,基於SpringCloud,分散式資料庫mysql、非關係型資料庫redis;
  • 其他架構:如:基於ASPnet Core、net、php、sqlserver資料庫的;

2)日誌埋點資料系統

基於SpringBoot生成log到伺服器。前端埋點的日誌會被系統採集到log資料夾裡面存放在伺服器。

三、採集系統整體架構設計

採集系統的架構設計:

  • 從底層資料業務型別來看分為兩大類:埋點日誌和業務系統資料

  • 邏輯分層來看:分為三層
    • 資料來源層
    • 資料採集層
    • 資料儲存層

1、資料來源層

  1. 業務資料
    • 關係型資料庫資料

      常用常見的如:傳統型Oracle、網際網路公司Mysql、PGsql、OceanBase來自阿里系已經獨立奧星貝斯公司。屬於國產化資料庫,工行目前對公理財已經使用,部分中小型銀行中原銀行等也已經使用。對於金融行業近年來一直要求新創,未來應該會成為主流資料庫。

      非關係型資料庫Not Only Sql資料基於鍵值儲存的redis;基於文件資料庫mongoDB;基於圖形儲存的Neo4j
      基於寬列儲存的Cassandra;
  2. 日誌資料作為一種非結構化資料,如:log、video、picture等。

2、資料採集層

    1. 業務資料採集
    2. 業務系統資料庫產生的資料,需要透過分散式元件Sqoop來採集。sqoop主要用於在Hadoop(Hive)與傳統的資料庫(mysql)間進行資料的傳遞,可以將一個關係型資料庫(例如:MySQL ,Oracle 等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫中。

  1. 日誌資料採集日誌作為一種非結構化資料,如:log、video、picture等。採集到HDFS平臺,需要透過flume、kafka等元件完成。涉及到伺服器採集的選型通道的建立等等。

3、資料儲存層

Hadoop叢集資料儲存主要是資料存在分散式檔案系統HFDS上,後面會使用hive儲存。

4、註冊中心zookeeper

它提供的服務包括:統一命名服務、統一配置管理、統一叢集管理、伺服器節點動態上下線、軟負載均衡等。


總結:

    1. 先了解應用程式簡單基本架構
    2. 瞭解大資料平臺資料採集架構
    3. 涉及到專案管理知識,當你拿到一個專案首先要明確PM給你的專案目標是什麼?你需要交付什麼?然後拆分專案目標,拆分梳理實現專案目標的流程步驟,設計整體方案。

相關文章