PCon全球产品创新大会即将开幕,抢占最后的交流席位! 了解详情
写点什么

闲鱼玩法平台系列文章——双 11 实操篇

  • 2020 年 12 月 18 日
  • 本文字数:2813 字

    阅读完需:约 9 分钟

闲鱼玩法平台系列文章——双11实操篇

背景


营销玩法是电商行业进行商品促销和用户增长的重要手段,上一篇中介绍了闲鱼的玩法平台——多啦 A 梦,本篇将介绍在该系统上承接的玩法。闲鱼作为闲置循环工厂也参与了大促,为了让更多闲置在闲鱼游起来,在商品侧设计了《转卖抽奖》活动玩法;为了能让更多用户在闲鱼玩起来,在用户侧设计了 “摇钱树“活动玩法。


下面详细介绍“转卖抽奖“和“摇钱树“的活动玩法以及技术实现上注意的细节。


转卖抽奖


商品是闲鱼的必要组成部分,为了让用户可以在大促期间买买买,闲鱼在节前设计了转卖抽奖的活动帮助用户舍断离,具体详细玩法如下:


玩法介绍


用户发布商品后,将会获取一次抽奖机会,抽奖机会每天最多可以获取 50 次,活动期间抽奖机会可以累积,活动结束后抽奖机会清零;当用户拥有抽奖机会后即可抽奖,每次抽奖将会消耗抽奖机会,当抽奖机会为零时则不可以抽奖;每次抽奖用户将有概率获得支付宝现金红包和双十一店铺优惠券。


用户可以通过在闲鱼内发布商品或是在淘宝的闲鱼小程序中一键转卖商品参与活动,商品发布后如果用户获取到了抽奖机会,则在闲鱼端内弹出 POP 提醒用户获取到一次抽奖机会,并引导用户跳转到活动落地页,在落地页用户可以参与抽奖。


技术方案


转卖抽奖活动从实现上分为两个活动,一个是完成发布获取抽奖机会,另外是消耗抽奖机会进行概率抽奖。进一步抽象两个活动可以发现他们对应一个共同的业务模型:前置条件->抽奖->奖励。对于发布获取抽奖机会来说,前置条件是发布,抽奖是领取抽奖机会,奖励就是抽奖机会;对于消耗抽奖机会进行概率抽奖来说,前置条件是抽奖机会,抽奖是进行概率抽奖,奖励是红包或是优惠券。所以这个活动的底层实现方案使用的是闲鱼的业务玩法平台哆啦 A 梦下面详细介绍这两个活动的技术实现。


发布后获取抽奖机会,首先需要感知到用户的发布行为,在实现上可以通过硬编码的方式,侵入到商品发布过程中但是这种方案显然过耦合,本文采用的是 OMEGA 事件采集能力,该方案可以无侵入的感知用户的发布行为,同时可以在采集过程中定制逻辑例如对特定类目、标题进行筛选。用户发布后需要累计抽奖机会,在本方案中抽奖机会累计使用的是积分系统实现,但是要注意在业务上要做好幂等防止一次发布多次累计,同时每个用户每天最多获取 50 次机会,所以在给单用户发放机会过程中要进行单用户的全局锁,防止发放超出 50 次。



消耗抽奖机会进行概率抽奖,用户在进行抽奖前防止并发操作造成抽奖次数过多消耗,所以用户进行抽奖操作时首先进行并发控制,然后消耗抽奖机会再进行最终的抽奖,奖品发放是按照概率进行发放,在概率设计中价值越高的奖品中奖的概率越低,同时考虑活动效果和保证用户参与感,需要保证活动期间都有可抽取的奖品,这就要考虑奖品的发放排期,按照小时级别和天级别对奖品进行排期,保证奖品在活动中均匀分布。在活动期间对于按照价值对奖品进行分组,在高价值组中限制用户的中奖次数,保证高价值奖励能让更多的用户获取。



关键技术点:


1.用户公平性,活动初期活动中的现金红包按照每小时生效进行排期,通过活动监控发现整点参与量都会有一个峰值,分析发现这些用户掌握了红包生效的规律,整点来参与活动刷红包导致红包快速耗光,这对于大多数用户来说是不公平的,所以技术侧做了一个小时内随机多次生效红包,保证用户参与的公平性。


2.疲劳度,控制用户单位时间内可领取的次数,疲劳度的设计利用的是 Tair 分布式缓存的 Incr 自增能力,通过设计业务和 key 的映射实现对用户领取疲劳度的控制,但是在分业务进行疲劳度控制之上建议设计一个基于用户维度的总疲劳度,这样保证在业务疲劳度控制失效时,由用户疲劳度做兜底的控制。


摇钱树


经过双十一疯狂的剁手后闲鱼帮你来回血,在用户侧闲鱼设计了摇钱树活动,通过用户裂变的玩法对闲鱼用户进行拉新拉活,具体详细玩法如下:


玩法介绍


用户首先进入活动页面,可以领取一颗摇钱树,在领取摇钱树时会为每个用户分配一个随机的初始现金金额。领取摇钱树后可以通过分享按钮把自己的摇钱树分享给好友,好友通过分享口令进入闲鱼后,会帮助用户进行摇树,摇树成功后双方都可获取现金奖励。但一个用户每天最多只能成功邀请 4 个好友为自己摇树,超出后不计数,同时每天每人只能帮别人摇树一次。具体如下所示:



用户可以在闲鱼端内和手淘投放的 Banner 进入到活动页面,开启自己的摇钱树后可以通过淘口令、微信、当面扫一扫等方式把自己的摇钱树分享给好友,累计到一元即可提现。


技术方案


摇钱树活动是一种典型的用户裂变玩法,从技术上看可以分为三个部分,第一部分是领取自己的摇钱树获取奖励,第二部分是自己帮助好友摇树获取奖励,第三部分邀请好友为自己摇树获取奖励。进一步抽象三个部分其实对应一个业务模型:关系系统->领取奖励->获取奖励。在第一部分中关系系统中存储的是自己和自己的映射关系,在第二部分中关系系统存储的是自己和好友的映射关系,在第三部分中存储的是好友和自己的映射关系,同时在第二部分和第三部分两个的关系是同时存在的。所以整个实现方案如下所示:



本方案中领取奖励的部分是基于多啦 A 梦和拉菲已有的能力实现的,在设计关系系统时存储采用的是基 lindorm(HBase)设计,主态和客态关系存在一个表中,通过对 Key 的设计满足查询的功能和性能要求。当然也可以基于 mysql 的数据模型设计,对于主态和客态关系建立两个表,分别以主态和客态的用户 ID 作为分库分表设计;之所以没有采用 mysql 的数据模型是因为需要维护两个表的事务性和一致性成本过高。


在整个方案设计上主要关注的点有两个,第一个是资损,在活动中一个用户只能领取 1 次摇钱树,每天只能帮好友摇树 1 次,每个用户每天最多可以成功邀请 4 个用户,这些规则即是玩法规则也是资损易发点,在本文中采用了实时对账和领取限制实现对资损现象的监控和兜底保证,保障无资损是技术侧底线在方案设计上要优先考虑。第二个是并发控制,在活动中用户邀请多个好友为自己摇树,但是一天只能成功邀请 4 位,所以要做好邀请人侧的并发控制防止出现超过 4 人的邀请。


关键技术点:


1.幂等性,幂等能力是每个营销活动必要的能力,常用的方法有利用数据库乐观锁、Tair(redis)分布式缓存、zookeeper 等方案实现分布式全局锁,本文中采用的是 Tair 缓存分布式锁方案。


2.对账校验,对账是营销的一个必要环节,可以通过数据库层面的对账实现数据校验,也可通过业务上的对账进行校验领奖资格,本文采用的是业务上的对账,通过接受领奖后的消息,反查领取用户的资格实现实时的对账能力。


总结与展望


限于篇幅的限制本文主要介绍了相关的玩法以及在设计玩法过程中需要注意的技术点,后面会对每个技术点的实现单独进行介绍。目前多啦 A 梦已经在功能上实现了组件化,例如疲劳度校验、并发控制、人群校验的常用能力,这些能力会极大的方便新玩法的开发,未来除了在实现功能组件化以外会逐步实现玩法的组件化,这样运营同学可以直接利用玩法组件拼装自己的业务玩法。


本文转载自:闲鱼技术(ID:XYtech_Alibaba)

原文链接:闲鱼玩法平台系列文章——双11实操篇

2020 年 12 月 18 日 09:001041

评论

发布
暂无评论
发现更多内容

springcloud 高可用的服务注册中心及更高可用,java面试设计题

Java 程序员 后端

SpringBoot实战教程(3,mysql集群和主从原理

Java 程序员 后端

SpringBoot整合Shiro(完整版)(1),java企业级应用教程视频

Java 程序员 后端

SpringBoot整合Thymeleaf模板,java技术核心卷二

Java 程序员 后端

CSS页面设计稿构思与实现(二)

Augus

CSS 11月日更

Springboot快速整合JPA实现增删查改(1),java教程视频下载

Java 程序员 后端

springboot整合thymeleaf及常用标签的使用方法,美的java面试流程

Java 程序员 后端

SpringCloudRPC远程调用核心原理:Feign远程调用的执行流程

Java 程序员 后端

OpenHarmony LiteOS C-SKY指令集移植指南

华为云开发者社区

LiteOS 指令集 OpenHarmony C-SKY 移植

谈谈对Dapr的一些感想

LLLLimbo

架构 分布式 微服务 云原生 dapr

六问六答理解ForkJoin原理

华为云开发者社区

Java 线程 线程池 forkjoin 归并计算

最佳实践|放弃 Ceph,Salesforce 使用 Apache BookKeeper 在云中实现最强存储

Apache Pulsar

开源 云原生 存储系统 Apache Pulsar 消息系统 Apache BookKeeper

SpringBoot整合Shiro(完整版),java学习网站

Java 程序员 后端

SpringBoot:Shiro-整合-Redis,也不用担心用户投诉啦,java技术经理面试题

Java 程序员 后端

springBoot集成Mybatis,Java资料下载

Java 程序员 后端

SpringDataJPA的Audit功能,审计数据库的变更,springmvc源码分析pdf百度云

Java 程序员 后端

Springboot快速整合JPA实现增删查改,linux系统架构和应用技巧

Java 程序员 后端

Springboot整合ActiveMQ(Queue和Topic两种模式),Java开发者跳槽指

Java 程序员 后端

SpringBoot系列:Spring Boot集成redis,mongodb原理书籍推荐

Java 程序员 后端

Vue进阶(幺柒叁):表单元素日期校验

No Silver Bullet

Vue 表单校验 11月日更

使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数

Jerry Wang

云平台 SAP abap 11月日更

springboot入门教程和mysql数据库,java框架面试基础

Java 程序员 后端

SpringBoot整合MybatisPlus实战动态SQL,java编程入门经典

Java 程序员 后端

【文末送票福利】龙智携手Atlassian,与您相约GOPS全球运维大会

龙智—DevSecOps解决方案

DevOps 运维

SpringDataJPA之快速入门,arm架构v8和V9区别

Java 程序员 后端

腾讯云原生开源生态专场在武汉召开,洞察开源云原生技术发展趋势和商业化路径

科技热闻

springboot多数据源配合docker部署mysql主从实现读写分离

Java 程序员 后端

Springboot整合Mybatis增删查改、连接MYSQL数据库及配置druid连接池

Java 程序员 后端

SpringBoot整合Shiro实现权限管理,rabbitmq原理图

Java 程序员 后端

SpringCloudRPC调用核心原理:RxJava响应式编程框架,聚合操作符

Java 程序员 后端

springcloud(三)网关zuul,2021Java进阶学习资料

Java 程序员 后端

闲鱼玩法平台系列文章——双11实操篇_文化 & 方法_闲鱼技术_InfoQ精选文章