1. 程式人生 > >(2)Storm實時日誌分析實戰--Topology的設計

(2)Storm實時日誌分析實戰--Topology的設計

需求

日誌資料樣例:

215.187.202.215 - - [1481945172991] “GET/IBEIfeng.gif?order_id=1&orderTime=1481945172991&memberId=1234568970080798&productInfos=10009-2703.88-B-1|10001-2494.47-D-2|10003-2561.05-A-1&orderAmt=10253.87 HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko)

欄位:

變數名 對應資料
ip 使用者ip
serverTime 伺服器實際
requestUrl 請求地址
httpRefer 對映資訊
userAgent 使用者資訊
orderInfo 訂單資訊

需求:

  1. 統計分析 每天、每小時、每分鐘 各個IP訪問量
  2. 統計 每天、每小時、每分鐘 被訪問的url 的次數
  3. 統計 外鏈數
  4. 解析userAgent獲取得到 瀏覽器資訊 作業系統資訊,統計統計 每天、每小時、每分鐘訪問客戶使用瀏覽器或者作業系統情況
  5. orderInfo order_id=2&orderTime=1481945173124&memberId=4958868887900989&productInfos=10001-217.40-B-1|10003-2561.05-A-1&orderAmt=2778.44
    分析訂單資訊得到基於使用者的消費情況
    基於商品
    統計銷售額

處理流程

這裡寫圖片描述

  • KafaSpout

    負責從Kafka叢集讀取日誌資訊

  • LogParserBolt

    將日誌記錄進行解析,抽取出所需的欄位

    資料傳遞:
    這裡寫圖片描述

  • RequestUrlParserBolt

    抽取url,獲取orderInfo

    資料傳遞:
    這裡寫圖片描述

  • HttpReferParserBolt

    資料傳遞:

    這裡寫圖片描述

  • UserAgentParserBolt

    使用者瀏覽器和作業系統的資訊

    資料傳遞:

    這裡寫圖片描述

  • CountUrlBolt

    負責統計url

    資料傳遞:

    這裡寫圖片描述

  • CountOutLinkBolt

    統計外部連結

    資料傳遞:

    這裡寫圖片描述

  • CountBrowserBolt

    負責統計瀏覽器

    資料傳遞:

    這裡寫圖片描述

  • CountSearchKeyBolt

    負責統計搜尋關鍵字

    資料傳遞:

    這裡寫圖片描述

  • CountOsBolt

    負責統計使用者作業系統資訊

    資料傳遞:

    這裡寫圖片描述

  • CountIpBolt

    統計使用者的ip

    資料傳遞:

    這裡寫圖片描述

  • SaveBolt

    負責資料最後的儲存

    資料傳遞:

    這裡寫圖片描述

    優化

上面有多個負責統計的CountXXXBolt,現在設計一個通用的CountKipBolt

這裡寫圖片描述

即最後的流程如下:

這裡寫圖片描述