货拉拉-营销平台流程画布建设

引言

随着货拉拉用户和司机规模以及订单量的不断增长,运营对营销工具的要求不断提升,急需一个能覆盖用户和司机生命周期、全渠道触达、丰富奖励发放等能力的营销工具,流程画布因此应运而生。流程画布以数据驱动,支持多策略组合的灵活配置,并整合了丰富的营销投放能力,通过精准的用户定位、恰当的时机选择、合适的触达方式以及贴切的内容传递,帮助业务实现用户和司机规模、订单量的持续增长,从而实现流量最大化的价值转化。接下来将为大家介绍营销平台流程画布的建设与实践。

一、什么是流程画布?

货拉拉流程画布平台是以"营销策略引擎"为核心,基于用户行为驱动的一站式自动化营销工具。流程画布服务于货拉拉多业务 、覆盖了用户与司机的全生命周期 (拉新、促活、转化、召回),同时支持对用户与司机进行多奖励全渠道的触达。

我们结合整个货运的业务流程,覆盖了多种业务场景,支持对货拉拉用户、司机全生命周期的运营。

"营销策略引擎"最核心的目标在于如何精准而有效地利用每份流量,最大化的挖掘私域的价值。我们通过自研、并整合了货拉拉多平台能力,集成了一套可灵活配置各种单一式、组合式的营销策略,通过圈人群(找对的人)-选权益(对的奖励)-选渠道(合适的触达方式)-选时机(对的时间、场景)到看效果的完整业务流程闭环,帮助业务实现流量的最大价值转化。

营销流程画布平台目前已覆盖货拉拉大部分业务线,对用户与司机全生命周期的运营起到了关键性的作用,货拉拉大部分的补贴都是由流程画布平台发放出去的。

二、我们是怎么做的?

2.1 产品架构

2.2 业务模型

结合业务使用场景,抽象出一套事件触发(Trigger) + 条件规则(Condition) + 动作执行(Action) 策略模型,通过策略模型的关联组合成一个画布模型,用来满足各种复杂的运营场景。

策略模型

策略模型主要由事件触发条件规则动作执行三部分组成。

  • 事件触发(Trigger)
    • 定时批量触发:基于离线画像人群、名单上传(Excel/CSV)触发批量任务。
    • 实时事件:通过监听用户行为(如:注册、下单、估价等)、司机动作(如加盟、启动、完单、取消)等。
    • 同步事件:通过同步API直接触发策略执行(如:扫码领券等),用户可即时感知结果。
  • 条件规则(Condition)
    • 基础属性:时间窗口(如活动时段)、地理围栏(LBS)、城市/区域、画像人群等。
    • 业务状态:订单状态(待支付/已完成)、账号状态(司机认证状态)等。
    • 将来行为状态:完成司机加盟1天内未认证、用户估价3分钟内未下单等。
  • 动作执行(Action)
    • 触达动作:短信、push、收件箱、企微、公众号、外呼等全渠道触达。
    • 奖励动作:会员卡、优惠券、三方券、积分等。
画布模型

通过多个策略编排(定时+实时、实时+实时)组合成一个策略树,并指定一套策略树流转规则。

一个画布是如何运行?

  • 用户在同一画布流程中,同时可进入(命中)不同根流程(如命中root step1.1 和root step1.2)。
  • 用户在同一个根流程下,只能选择命中一个子策略step,同时满足将随机选择其一(如同时满足step2.1和step2.2的条件时,将随机选择命中step2.1触发动作)。
  • 针对单个用户,用户在画布中走完一次流程,回到根策略的条件有两个,满足其一则回到根策略(root step)。
    • 条件1:用户到达叶子节点,并且完成叶子节点任务,如红色流程中,用户完成了step3.1的任务。
    • 条件2:用户在画布中任何一个节点,直到该节点过期失效用户仍未命中,如蓝色流程,用户在step2.3中过期。

2.3 系统架构

  • 管理后台(Admin):提供活动编排功能,并具备元数据配置管理(如事件管理)、排障工具和数据看板等功能。

  • 事件接入层(Trigger):系统支持定时和实时触发。定时触发适用于离线画像和名单上传,实时触发通过监听上游行为事件实现。事件特征平台负责管理数据源、流量管控、特征加工与补全、指标计算、存储,以及事件拆分与分发,最终输出标准化事件消息。

  • 策略引擎层(Engine):作为整个系统的决策中心,engine主要负责策略规则解析,事件流量从进入会经过一系列过滤链节点,包含条件规则校验、AB分流、画布状态、频次管控、预算控制等,最终根据动作类型、用户类型以及业务优先级等分发到不同的动作执行通道。

  • 动作执行层(Action):负责动作的执行,支持丰富的触达以及补贴动作内容,并可对各执行通道做速率管控,防止下游过载崩溃。

三、我们碰到了哪些挑战?

3.1 如何又快又稳接入海量事件?

随着覆盖的业务线越来越多,面对的产品以及业务人员也越来越多,在人力有限的情况下如何又快又稳支持各业务线持续不断的新需求成为了一个较大的挑战。

如何解决

我们设计了一套事件特征平台,通过后台配置管理界面,可快速配置和调整数据源、事件、函数、特征补全与加工、事件分发等元数据信息,以满足多业务线的敏捷迭代需求。

  • 数据源动态加载:系统具备动态数据源管理能力,能够实时接入事件数据源。通过集群管理,根据流量大小将事件数据源合理分配到不同集群进行消费,实现消费节点的弹性扩缩容和流量调控,从而在高并发场景下优化资源利用率,确保系统稳定性。

  • 特征加工与补全:支持通过Groovy脚本、RPC接口和指标统计等方式,对实时事件数据进行特征补全和加工,从而扩展事件特征集。

  • 数据标准化处理

    • 统一数据模型 :将交易、计价、司机、用户等领域多源异构数据转换为标准事件模型,下游系统无需关心事件数据来源。

    • 关键特征提取:解析并提取账号主体、业务类型、时间等核心元数据特征。

  • 事件拆分与分发:可根据主事件拆分条件生成多个子事件,同时支持将主子事件分发至不同的输出数据源。
  • 可动态调试:支持事件、函数等配置在线调试能力,方便开发快速验证配置的准确性。

3.2 如何设计一个策略引擎?

策略引擎是整个流程画布的"智慧大脑",随着使用的业务方越来越多,系统面临着三多问题:"策略多"、"事件多"、"流量多",如何让这些海量的流量高效的在正确的时间、通过正确的渠道、向正确的人群传递正确的信息成为了一大挑战。

如何解决

通过对入口和出口流量的管控、数据缓存设计、流量漏斗过滤模型等手段保证策略引擎高效稳定运行。

  • 事件层流量接收管控:支持通过MQ、API方式承接事件接入层的实时单用户数据流以及画像、上传名单批量用户数据流处理,并支持队列动态新增、限流调整,根据业务优先级合理分配计算资源。

  • Loader本地缓存:针对策略信息、事件配置等低频变更、高频读取的核心元数据建立内存索引,保证策略高效筛选,同时也减少了数据库查询。

  • 流量漏斗过滤模型,逐级削减流量:大部分流量会在前置本地内存计算过滤节点中被拦截过滤,依赖数据库查询或更新的过滤节点后置执行,从而有效减少对数据库的请求压力。

  • 动作执行流量调度与管控:

  • 流量调度:根据动作类型、用户类型以及业务优先级等分配不同的执行通道,避免资源竞争。

  • 流量管控:基于下游系统承载能力差异,我们为不同通道配置相应的派发速率,以防止下游系统过载崩溃。

  • 补偿重试:对于下游网络抖动、接口超时等临时故障,系统支持自动重试,并提供阶梯式重试补偿机制。

3.3 如何排障?

随着公司业务量的增长,接入的流量和策略以及使用方日益增多,线上经常会遇到两个问题:

问题1:某策略命中流量为什么不符合预期?
问题2: 某用户为什么没命中策略?

在项目初期开发面对此类问题时,可用的手段相对有限。开发主要依赖日志系统,通过关键字搜索相关日志来分析问题。然而,这一过程可能非常耗时,并且大多数情况下,问题并非源于系统本身,而是由于策略中某些条件配置错误所致。这种情况导致开发人员需要投入大量时间进行排查和定位,严重影响了工作效率。

如何解决

我们对系统的过滤节点进行了全面梳理和分类,并设计了一套标准化的排障信息埋点方案。通过策略和单次请求两个维度构建可视化工具,实现快速、直观的问题定位辅助。

单次请求排障

运营、产品或测试开发人员可以通过账号、traceId、策略和时间等信息,快速定位用户在某个策略中被过滤的原因。

策略流量分析

利用排障工具收集的埋点数据,我们通过聚合计算生成多个指标,并利用可视化流量分析工具快速识别策略流量在各节点的拦截情况。

四、总结与展望

历经几年深耕与实践,流程画布已覆盖多个运营业务线,接入各种事件100+,全平台月均活动创建数2300+,日常在线运行活动数500+,已成为货拉拉业务增长的重要营销工具。在数字化进程加速的当下,伴随着大模型的快速发展,我们也将探索如何借助大模型能力辅助提升策略效果,同时将拓展更多新的业务场景接入,并不断提升系统能力,促进公司业务的持续增长。

相关推荐
风象南23 分钟前
Redis中6种缓存更新策略
redis·后端
程序员Bears1 小时前
Django进阶:用户认证、REST API与Celery异步任务全解析
后端·python·django
非晓为骁1 小时前
【Go】优化文件下载处理:从多级复制到零拷贝流式处理
开发语言·后端·性能优化·golang·零拷贝
北极象1 小时前
Golang中集合相关的库
开发语言·后端·golang
喵手2 小时前
Spring Boot 中的事务管理是如何工作的?
数据库·spring boot·后端
玄武后端技术栈3 小时前
什么是延迟队列?RabbitMQ 如何实现延迟队列?
分布式·后端·rabbitmq
液态不合群4 小时前
rust程序静态编译的两种方法总结
开发语言·后端·rust
bingbingyihao5 小时前
SpringBoot教程(vuepress版)
java·spring boot·后端
一切皆有迹可循5 小时前
Spring Boot 基于 CAS 实现单点登录:原理、实践与优化全解析
java·spring boot·后端
Kookoos6 小时前
从单体到微服务:基于 ABP vNext 模块化设计的演进之路
后端·微服务·云原生·架构·c#·.net