实时营销引擎在vivo营销自动化中的实践 | 引擎篇04( 二 )

  • 由于事件数据源的不同,需要对宿主业务进行队列流量隔离管控,同时还需要评估后续队列的容量伸缩效率 。
  • 需要满足新增事件时,无需对系统进行重新部署,需要进行动态消息队列接入(下文会进行详细解析) 。
  • 数据处理层
    实时引擎的核心部分 。主要负责对事件数据进行加工处理,主要包括:
    1. 业务数据的统一标识补全,将多源数据进行打通关联 。
    2. 对业务数据进行各种指标计算 。常见的是基于时间窗口和会话窗口的流式计算,一般使用Flink来搭建 。
    3. 目标用户匹配 。常用的用户直接交并差集计算,能够更好的对目标用户进行实验 。
    4. 业务规则匹配 。基于业务逻辑对用户的数据进行匹配 。
    数据输出层
    负责结果数据输出分发,主要目的是数据调配和触达发送策略 。
    数据管理
    保存事件元数据的配置 。
    数据仓库
    离线数据的储存,作用于流程中各种数据处理流程 。
    三、关键组件和流程设计3.1 事件实时接入的扩展性设计由于公司内部业务技术栈不尽相同,需要支持多种业务事件数据接入方式,比如通用HTTP接口,Java技术栈的DUBBO接口、和MQ消息队列的方式,为了系统内部可以进行统一管理,最后转成MQ的方式进行统一分发 。
    3.1.1 接入队列设计由于事件数据源的不同,需要对宿主业务进行MQ队列流量管控隔离 。不同业务系统事件接入需求有以下不同的设计方案:
    方案一:为每个接入的事件创建一条新队列,不同事件使用不同队列 。
    实时营销引擎在vivo营销自动化中的实践 | 引擎篇04

    文章插图
    • 优点:最小粒度的流量控制,不同事件接入之间可以做到隔离,互不影响 。
    • 缺点:每次接入新事件都需要申请创建队列,随着事件接入数据增加,队列维护成本比较高 。
    方案二:同一接入方的事件使用同一队列,不同接入方使用不同队列(目前消息中心的方案)
    实时营销引擎在vivo营销自动化中的实践 | 引擎篇04

    文章插图
    • 优点:按接入方来进行流量控制,接入方之间进行隔离,同一接入方只需在首次接入使用时创建队列,后续接入新事件无需创建 。
    • 缺点: 不同接入方接入时需要创建队列,同一接入方不隔离,有相互影响的风险 。
    方案三:不同接入方、事件均使用同一队列
    • 优点:业务方使用友好,后续接入无需变更,耦合度小,方便切换MQ中间件 。
    • 缺点:最大粒度的流量控制,无法做到隔离,风险较高,需要经常进行队列扩容 。
    方案四:事先评估每个事件的优先级(如流量),高优先级的事件单独创建一条队列,低优先级的事件共用同一队列