實時互動平臺流程與技術分析

鬆伯發表於2016-08-25

  最近幾個月一直在做基於storm的流式處理,索性整理下所有的知識點與技術知識。

  一、資料準備

  1、首先,我們需要使用者的所有資料,使用MapReduce進行資料處理,生成業務寬表匯入hbase與Redis,用於後續實時處理直接從Redis中獲取相應資料,減少讀寫磁碟IO的消耗。

 

  二、訊息的接入

  1、傳入的資料是經過二進位制處理的,所以使用jetty輕量級服務對傳入的報文進行接入解析,同時部署多個服務,使用nginx進行負載均衡。

 

  2、每個服務同時啟動多個執行緒進行訊息的接入,通過blockingQueue進行儲存,隨後進行報文解析,序列化後傳送對應主題的kafka.

 

  三、storm處理

  1、使用整合的kafkaspout進行訊息的接入代替storm的spout,降低工程複雜度,可直接編寫bolt進行業務邏輯處理,隨後進行資料的一次性過濾bolt,驗證訊息的正確性並並封裝入物件中。

 

  2、通過訊息中的相應主鍵,從Redis中載入該使用者的全量資料,以便後續業務處理(存入hbase是以防redis出現問題進而再查詢hbase,同時hbase中的rowkey做了雜湊,資料均勻分佈在每個region中)。

 

  3、載入配置活動規則,這些規則通過前臺web系統配置儲存,儲存於redis中。對多個規則進行遍歷匹配,封裝成一個大的物件,傳入下游推送拓撲。

 

  4、推送拓撲在接收到訊息後,從物件中獲取封裝的訊息物件的渠道物件,對其進行遍歷傳送至不同的渠道。


相關文章