實時營銷引擎在vivo營銷自動化中的實踐 | 引擎篇04( 二 )

  • 業務數據的統一標識補全,將多源數據進行打通關聯 。
  • 對業務數據進行各種指標計算 。常見的是基于時間窗口和會話窗口的流式計算,一般使用Flink來搭建 。
  • 目標用戶匹配 。常用的用戶直接交并差集計算,能夠更好的對目標用戶進行實驗 。
  • 業務規則匹配 。基于業務邏輯對用戶的數據進行匹配 。
  • 數據輸出層
    負責結果數據輸出分發,主要目的是數據調配和觸達發送策略 。
    數據管理
    保存事件元數據的配置 。
    數據倉庫
    離線數據的儲存,作用于流程中各種數據處理流程 。
    三、關鍵組件和流程設計3.1 事件實時接入的擴展性設計由于公司內部業務技術棧不盡相同,需要支持多種業務事件數據接入方式,比如通用HTTP接口,Java技術棧的DUBBO接口、和MQ消息隊列的方式,為了系統內部可以進行統一管理,最后轉成MQ的方式進行統一分發 。
    3.1.1 接入隊列設計由于事件數據源的不同 , 需要對宿主業務進行MQ隊列流量管控隔離 。不同業務系統事件接入需求有以下不同的設計方案:
    方案一:為每個接入的事件創建一條新隊列,不同事件使用不同隊列 。
    實時營銷引擎在vivo營銷自動化中的實踐 | 引擎篇04

    文章插圖
    • 優點:最小粒度的流量控制,不同事件接入之間可以做到隔離,互不影響 。
    • 缺點:每次接入新事件都需要申請創建隊列,隨著事件接入數據增加,隊列維護成本比較高 。
    方案二:同一接入方的事件使用同一隊列,不同接入方使用不同隊列(目前消息中心的方案)
    實時營銷引擎在vivo營銷自動化中的實踐 | 引擎篇04

    文章插圖
    • 優點:按接入方來進行流量控制,接入方之間進行隔離,同一接入方只需在首次接入使用時創建隊列,后續接入新事件無需創建 。
    • 缺點: 不同接入方接入時需要創建隊列,同一接入方不隔離,有相互影響的風險 。
    方案三:不同接入方、事件均使用同一隊列
    • 優點:業務方使用友好 , 后續接入無需變更 , 耦合度??,藩勯澲x籑Q中間件 。
    • 缺點:最大粒度的流量控制,無法做到隔離 , 風險較高,需要經常進行隊列擴容 。
    方案四:事先評估每個事件的優先級(如流量),高優先級的事件單獨創建一條隊列,低優先級的事件共用同一隊列
    • 優點:按事件的維度進行流量控制 。
    • 缺點:對接入方使用不夠友好,不同業務接入時需要創建隊列 。
    各方案對比如下:
    實時營銷引擎在vivo營銷自動化中的實踐 | 引擎篇04

    文章插圖
    結論:按照當前項目優先級綜合評估來看,業務隔離性>可伸縮性>可維護性>接入方友好性 。
    方案二比較適合。(不同的項目可以根據自己的實際情況按優先級進行合適的選型)
    3.1.2 動態消息監聽背景:當需要做好業務間風險隔離時,就必須按業務或者事件的維度進行隊列拆分 。此時若進行新接入事件就可能需要重新創建新的隊列 。
    初期方案:采用公司中間件vivo-rmq, 當接入方需要新增隊列時 , 需要修改代碼新增隊列監聽,重新發版,這樣做的問題是重新發版成本較高,按照項目流程管理進行效率低 。
    優化方案一: 修改啟動加載類加載指定目錄下的配置文件,新增隊列時修改配置文件上傳 。
    • 優點:無需發版 。
    • 【實時營銷引擎在vivo營銷自動化中的實踐 | 引擎篇04】缺點:仍需要重啟服務器 , 同時需要維護配置文件目錄等信息 。
    優化方案二:保存隊列配置信息到數據表中 , 啟用定時任務在服務器運行時動態監聽數據庫配置,新增或者下線隊列配置記錄后,自動進行隊列變更 。
    • 優點:無需發版和重啟 。
    • 缺點:定時任務實時性稍差,必須確保隊列監聽成功后在通知業務方接入 。
    結論:采用方案二 , 新增事件無需對系統進行重新部署,使用運行時動態方式進行消息隊列接入 。

    推薦閱讀