背景
美团点评酒旅运营需求在离线场景下,已经得到了较为系统化的支持,通过对离线数据收集、挖掘,可对目标用户进行T+1触达,通过向目标用户发送Push等多种方式,在一定程度上提高转化率。但T+1本身的延迟性会导致用户在产生特定行为时不能被实时触达,无法充分发挥数据的价值,取得更优的运营效果。
在此背景下,运营业务需要着手挖掘用户行为实时数据,如实时浏览、下单、退款、搜索等,对满足运营需求用户进行实时触达,最大化运营活动效果。
业务场景
在运营实时触达需求中,存在如下具有代表性的业务场景:
- 用户在30分钟内发生A行为次数大于等于3次
- 用户为美团酒店老客,即用户曾购买过美团酒店产品
- 用户在A行为前24小时内未发生B行为
- 用户在A行为后30分钟内未发生B行为(排除30分钟内用户自发产生B行为的影响,降低对结果造成的偏差)
本文以该典型实时运营场景为例,围绕如何设计出可支撑业务需求高效、稳定运行的系统进行展开。
早期方案
运营实时触达需求早期活动数量较少,我们通过为每个需求开发一套Storm拓扑相关代码、将运营活动规则硬编码这一“短平快”的方式,对运营实时触达需求进行快速支持,如图1所示:
图1 早期方案示意图
早期方案的问题
早期方案是一种Case By Case的解决方式,不能形成一个完整的系统。随着实时运营业务开展,相关运营活动数量激增,线上维护着多套相似代码,一方面破坏了DRY(Don't Repeat Yourself)原则,另一方面线上维护成本也呈线性增长,系统逐渐无法支撑当前的需求。
挑战
为解决早期方案中出现的问题,对系统建设提出了以下挑战:
- 硬编码活动规则的方式产生了大量重复代码,开发成本较高,需求响应时间较长。
- 业务规则修改困难,调整运营活动条件需要修改代码并重启线上拓扑。
- 线上Storm拓扑较多,资源利用率、系统吞吐量低,统一维护成本较高。
- 缺乏完善的监控报警机制,很难早于业务发现系统及数据中存在的稳定性问题。
针对以上挑战,结合业务规则特点,美团点评数据智能团队调研并设计了酒旅运营实时触达系统。
技术调研
规则引擎的必要性
提高灵活度需要从业务规则和系统代码解耦和入手,规则和代码耦合直接导致了重复代码增多、业务规则修改困难等问题。那如何将业务规则和系统代码解耦和呢?我们想到使用规则引擎解决这一问题。
规则引擎是处理复杂规则集合的引擎。