1. 程式人生 > >線上流式處理 (stream processing)

線上流式處理 (stream processing)

前面咱們介紹了線上服務和離線批量處理中涉及的一些問題和方案,這章我們將分享的是線上流式處理中的問題和方案;

流失資料處理系統與其他型別系統對比,資料流可能無窮盡,資料上游可能多方,下游也可能多方,基於這種資料流特點,我們需要一個訊息系統(message system);

為了適應業務節點的多變特性,如新增訊息產生方,減少訊息處理方等,維持整個系統的穩定等,普遍通過訊息代理(message broker)來處理和分發訊息, 其中涉及訊息佇列和容錯等功能, 可通過設定訊息開端(offset)來區分每個訊息消費者(consumer)當前所處理的資訊;

關於訊息代理容錯,訊息代理在接受到訊息時會將訊息接入日誌,並放到記憶體,如果crash, 可快速從日誌中回覆訊息; 而且還可通過兩個小技巧-最小批量(micro-batching, 基本想法是對訊息進行分批)和檢測點(check-point,基本想法是對訊息進行設點備份,如果crash, 按最近一個點來重新開始),來減少出錯是帶來的損失;

流式處理中可應用的場景:

  • 線上資料分析,事件發生的頻次和統計分析
  • 線上特徵挖掘和監控,欺詐檢測,價格波動, 機器狀態監控
  • 系統狀態監控

在流式資料處理過程中,涉及三個較為重要的時間,訊息生成時間(message produce time), 訊息佇列時間(time send to server), 訊息處理時間(message process time); 在分析資料時需要區分這個時間的不同;