闲鱼把各种玩法做成了一个平台:哆啦A梦

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 哆啦A梦的口袋里,都有哪些好玩的?

作者:闲鱼技术-齐悟

玩法平台背景

    在闲鱼内我们把供给用户的闲鱼红包、支付宝红包、包邮券、宝卡等统称为用户权益。是闲鱼用户运营的重要策略,在拉新、留存、促活、裂变等方面都展现了其重要价值。在阿里内部管理权益的平台是拉菲,拉菲对外提供概率抽奖和领奖两种能力。各个业务使用方根据自己的诉求结合拉菲的能力,定制自己业务侧玩法,基于此建立了闲鱼权益玩法平台——哆啦A梦。

痛点分析

    早期闲鱼的营销活动有两个重要特点:低频、人工,闲鱼是c2c的二手交易平台,营销活动本身就不多,每年不超过10次。每次营销活动玩法都是简单的抽奖玩法,给中奖用户发奖,需要运营同学逐个联系然后发放权益。随着业务发展集团有了权益相关的平台,其中包括wlp、mrp、拉菲到最终统一的权益平台拉菲2,权益平台的目的就是收敛集团内的权益,简单的理解平台不生产权益、只是权益的搬运工。随着业务的丰富,平台也有了更丰富的权益包括支付宝红包、淘宝单品优惠券、淘宝店铺优惠券、淘宝满减券、闲鱼红包、包邮券等。闲鱼也更关注业务玩法产生了大转盘、翻牌子、九宫格等玩法。随着闲鱼业务的发展在玩法侧有了更多诉求产生了百币夺宝、PK赛、排行榜、签到领币等更复杂的玩法。同时也暴露出了越来越多的问题。
|center|600x600
    开发侧遇到的问题:
      a.开发周期长,活动业务层并不复杂,但每次活动都要考虑系统安全性、稳定性、数据一致性问题。
      b.发现和定位问题难,缺少监控和对账体系,导致活动中难以及时发现问题,往往是后知后觉。
    运营侧遇到的问题:
      a.配置流程复杂,从前端页面配置到活动规则配置分散在多个系统。
      b.沟通成本高,开发侧概念不统一,每次运营对接不同的开发都要接受一套概念。
      c.活动效果无法实时关注,往往都是活动后才开始跑效果数据。
    测试侧遇到的问题:
      a.测试成本高,在测试时需要构造多个测试用例条件的账户,用来测试不同情况,此时往往需要开发共同配合。
      b.反馈链路长,黑盒测试时遇到问题,但是不清楚具体问题是什么,该如何保持现场复现。
    对于开发来最难以接受的事情莫过于重复,如果再给我一次机会,我一定要搞一个玩法平台,就这样闲鱼玩法平台来了。根据上面总结的问题,给玩法平台一期定下了三个目标:
    1.沉淀能力可复用,拒绝重复开发,把可复用的能力沉淀
    2.运营易用,为运营提供可配置平台,可自己完成活动配置上线
    3.快速发现、定位、反馈问题,为测试提供测试工具

玩法平台1.0

    一个平台怎么也要有个名字,大家刚开始希望可以给力的解决闲鱼玩法中遇到的问题,所以起了一个黑土味的名字——奥利给,后面想了想玩法平台主要追逐的是玩法,哆啦A梦的口袋里面什么都可以变出来,与玩法平台刚好契合,所以后面又改为——哆啦A梦。

业务架构

    哆啦A梦的业务目标就是收敛闲鱼内的所有权益相关的玩法,所以很多玩法都是基于已有的系统建立的。如下图所示是哆啦A梦的整个业务架构主要分了三个层次,最底层是外部依赖、中间层是系统核心、最上层是业务。
|center|600x600
    外部系统依赖:哆啦A梦结合业务规则与这些已有的系统能力,开发了多种业务玩法。其中任务系统是玩法的一个重要依赖,其提供了父子任务、组合任务、有序任务等任务编排的能力;人群系统是进行用户身份验证的重要依赖,其提供了人群动态增加、删除、验证的能力;用户行为系统是进行用户行为采集与反馈的系统,其提供了行为编排与实时反馈的能力。个性推荐系统是对不同用户提供个性化的权益系统;对账系统保证系统数据的一致性;用户通知系统提供实时触达通知能力。
    系统核心层:哆啦A梦用活动的概念把拉菲玩法和业务规则进行封装,运营只需要通过简单的配置即可完成活动配置,同时哆啦A梦在活动进行中提供了日志采集、流量监控、数据对账、数据报表的基础能力保障活动的稳定安全运行。
    业务层:前端提供了多种玩法组件,运营同学配置完活动后可以直接选择可使用的玩法组件,给用户呈现不同的玩法。

解决方案

运营配置平台

    配置平台主要面向运营同学,目标是运营可以不依赖开发,通过配置平台就可以完成一个活动上线,在哆啦A梦中一次营销称为一个活动,在一个活动中会有多种业务规则,每个业务规则中对应一个拉菲权益,举个例子:运营做一次营销活动分别为闲鱼的男性用户发放一种权益,为女性发放一种权益,为未知性别用户发放一种权益,那么该活动中将会对应三个业务规则,分别是男性、女性、未知性别。一个用户抽取权益时,首先判断其性别,然后获取对应规则下的权益。当一个用户符合多个规则时,将会利用规则决策来决定用户具体获取哪个规则下面的权益。
|center|600x600
    业务决策有两种方式一种是按照权重进行规则决策,一种是算法决策;算法决策目的是权益效率最大化。

开发基础链路

    营销活动基础链路主要关心的是流量和安全,流量是对整个系统性能的一个考验,安全是对整个活动业务规则的考验。流量包含正常流量和非法流量,正常流量需要关注活动开始瞬时流量和活动的峰值流量,做好系统扩容和限流保证活动期间服务器不被打挂,非法流量需要关注类似爬虫的机器流量,需要在进入业务层前进行拦截,防止干扰正常的用户。其中安全侧包含业务逻辑和非业务逻辑,业务逻辑包括周期内限制中奖次数,业务规则条件等,非业务逻辑需要着重关注黑灰产的非法用户,其中包括同人账号、同设备账号、同IP账号等,防止活动权益被刷。解决方案如下:
|center|600x300
其中霸下校验是集团提供的流量清洗工具,包含DDoS攻击防护、CC攻击防护、Web攻击防护、批量机器行为防御;限流校验接入是集团提供的可以设定单机流量和总流量,超过阈值则采用拒绝访问的限流平台;安全校验接入集团的RMB系统,对同人账号、同设备、同IP的账号进行防控;单用户并发校验利用全局分布式锁,保证同一个账号只能有一个请求进入业务逻辑层,防止同用户并发产生问题;活动码校验,其中活动码是根据活动、时间、用户三个维度生成,利用Base64简单加密和解码进行验证;实时对账主要关注业务规则,对每一个中奖用户进行实时的规则校验,防止规则编码漏洞。小时离线对账主要关注数量级,防止运营侧的配置错误导致奖品的超发。

测试工具

    测试工具是面向测试同学的,需要解决两个问题:第一能快速的构造符合测试用例的用户,第二:快速发现、定位、反馈问题。
    其中测试用例是依据运营设置的营销规则产生的,如果能灵活的给测试用户添加或者跳过规则校验即可满足测试同学的邀请,本文采用的是白名单的方法去解决构造用户测试用例,当用户需要校验规则时添加到校验的白名单,当用户需要跳过校验时候则提交跳过的白名单,当不添加白名单时走正常的业务校验逻辑。
    发现问题方案本文采用的是通过在服务中打异常日志并日志监控系统完成,定位问题时日志打的越细越能快速的定位问题,但同时日志越细代表打的日志就越多,这对系统开销又很大,所以如何做取舍是个关键的问题,本文在解决这个问题上,产出了详细日志和粗略日志两套日志方案,首先把整个抽奖流程分为如下几个步骤如下图所示:
|center|600x300
对于线上的正常用户只需要打印最终成功日志和异常日志即可这里采用的是粗略日志,对于测试用户打印每个步骤的详细日志这里采用的是详细日志。最终解决方案流程图如下:
|center|600x400
    首先测试用户在调用抽奖接口前,可以通过扫码的方式加入白名单,在调用抽奖接口的流程中进行规则校验时,会对该用户进行白名单校验,白名单用户是个复杂对象里面包含了是否校验各个规则,通过校验后最终调用抽奖接口。同时利用Spring的AOP能力在调用抽奖的每个阶段都进行日志的打印,在打印的时候先校验是否是白名单用户,如果是白名单用户则打印每个步骤的详细入参出参,如果是正常线上用户则只需打印异常节点和最终的结果节点即可。为了提高校验白名单的性能,白名单用户信息是存储在内存中的,多台机器的白名单配置同步利用的是Diamond(外部zookeeper同样具有该能力)。

业务效果

上面简单的介绍了整个系统的业务架构和一些主要问题的解决方案,下面主要展示一下使用哆啦A梦平台承接的几种玩法:

任务玩法 PK玩法 累计玩法
用户通过任务列表页到达具体任务页面,完成任务后就可以得到对应的奖励,在闲鱼的闲鱼币场景就使用了这种玩法模式,通过完成任务获取闲鱼币 运营营造两个队伍,让用户分别支持各自的队伍,哪个队伍胜利,哪个队伍就会获取对应的奖励,在高达跑活动中使用的就是该玩法 用户通过任务积累抽奖次数,然后进行抽奖,在二次元活动中使用的就是该玩法

玩法平台持续探索

    本文通过对日常营销活动中遇到的问题进行整理,针对这些问题提出相应的解法,进而形成一个业务侧的玩法平台。限于篇幅限制本文主要介绍了系统的整体架构和几个重点解决的问题,对于系统中沉淀出的玩法、测试工具的实现细节、安全体系单独进行分享。后面规划中期望可以把玩法和玩法平台解耦开,作为一种玩法能力对外输出。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
缓存 NoSQL 数据库
优酷投票系统设计和重构
     介绍优酷投票系统,承载了优酷暑假战役、寒假战役、双十一促销,以及平时各自营销套路活动,系统设计相对合理,实现一塌糊涂,有代码为证(参考:列举一些神奇的代码)。重构的理由:代码僵化,难以改动,新增一个字段改动多出代码代码脆弱,改动会出现意想不到的情况,改一个bug引发无数bug代码晦涩,代码难以阅读理解,多位前任改bug的代码实现套娃式的修复投票系统的设计基础名词:投票活动,投票渠道,投票
650 0
优酷投票系统设计和重构
|
1月前
|
存储 缓存 边缘计算
揭秘直播带货背后的黑科技:播放流程全解析!
大家好,我是小米,今天聊聊社区直播带货的技术细节。我们将探讨直播播放流程中的关键技术,包括 HTTP DASH 协议、POP(Point of Presence)缓存和一致性哈希算法等。通过这些技术,直播流能根据网络状况动态调整清晰度,保证流畅体验。POP 和 DC 的多层次缓存设计减少了延迟,提升了观看效果。无论是技术人员还是直播运营者,都能从中受益。希望通过本文,你能更好地理解直播背后的技术原理。
37 3
|
6月前
|
自然语言处理 安全
线下陪玩游戏系统开发多语言/海外版/成熟技术/方案项目/源码功能
Continuing to develop an offline companion game system may involve the following aspects:
零撸游戏广告变现模式系统开发部署源码搭建
零撸游戏广告变现模式系统开发部署源码搭建
|
6月前
|
vr&ar
字节跳动上线Pixsoul,主打特效变脸
字节跳动上线Pixsoul,主打特效变脸
104 0
|
11月前
|
存储 Kubernetes Cloud Native
k8s实战系列:3-存储的花样玩法(上)
k8s实战系列:3-存储的花样玩法(上)
77 0
|
11月前
|
存储 Kubernetes API
k8s实战系列:3-存储的花样玩法(下)
k8s实战系列:3-存储的花样玩法(下)
48 0
|
自然语言处理 搜索推荐 UED
有钱景线上赛事直播开发搭建,探讨需要哪些核心功能
随着体育赛事直播平台成为用户最主要观赛,那么要打造一家充满活力的赛事直播平台,需要提供以下功能和内容。
|
数据可视化 定位技术
大屏设计师的躺平小秘诀是____?
DataV7.0 新功能「设计库」重磅上线!—— 无论你是设计师、产品经理、OR被赶鸭子上架的研发,都能快速搭建出风格统一的可视化大屏项目。
大屏设计师的躺平小秘诀是____?
|
移动开发 缓存 搜索推荐
淘宝首页大促新玩法“猫头”背后的技术挑战和设计
本文详细介绍了淘宝首页大促新玩法“首页即会场”项目,从开放模式、复用粒度、交互实现、性能、可扩展性等技术角度来说明“猫头”是怎样炼成的。
346 0