背景

闲鱼业务发展迅猛,首页feeds等多个大流量场景成为了各条业务线的产品、运营争抢的流量入口。随着海量的投放需求提到技术团队,陈旧的开发、运营模式的弊端就显现出来了:现有技术难以保障多业务方的pv目标、点击转化效率,无法解决多业务流量争抢冲突,难以对日趋多样的运营玩法快速开发上线,业务试错成本高。我们急需设计一套新的技术方案来解决这些问题。

思路

我们要解决的根本问题是在总流量一定的情况下,如何从全局视角做调控,最大化全局流量转化效率。为了解决这个问题,我们需要从以下几个角度着手:

  • 保障多方投放的流量目标在单一场景下(如首页feeds、搜索结果页)的达成,且在满足投放目标的前提下提升转化效率。

  • 在满足单一场景各项数据指标的前提下,打通多场景对全局转化效率做优化提升

  • 通过工程手段赋能业务方,加速新业务的快速上线、快速调整投放策略,降低业务试错成本。

基于以上考虑,我们决定与达摩院算法团队合作,从工程上打通都江堰算法平台,使得各投放业务能够以极低的成本享受算法红利,保障业务目标达成与转化效率提升。同时,我们设计了一套全新的投放系统,理念是各种运营能力可快速扩展、可组件化沉淀,且特殊素材投放需求支持全新并行化研发模式,给予业务方更多的尝试机会。

鲲鹏系统建设

为了实现运营能力可复用、易管理、灵活投放策略等特性,我们抽象了活动、场景、素材的3级结构,并支持在每个场景下定义多套模板来管理素材。场景是鲲鹏系统中最大的一个概念,它是素材投放的舞台。必须先定义好场景,才能进行针对性的业务开发与素材配置、投放等。以搜索结果页为例,就划分为以下5个场景:长颈鹿运营场景、搜索结果feeds场景、poplayer场景、query词干预场景、背景氛围场景,如下图所示。只有定义好了这些场景,才能决定运营素材的生效范围在哪里。

有了场景之后,我们根据各运营的投放需求差异为各业务创建个性化的素材模板,然后就可以由运营同学在模板约束下自主创建素材。各种已沉淀下来的运营能力(如uv疲劳度过滤、搜索关键词过滤、平台过滤、版本过滤等)都可以由运营同学配置素材时,自主在界面上进行勾选或填写。素材创建完成后,通过创建活动,指定人群、生效时间把素材投放出去,即可完成整个投放工作。

业务在制定投放计划时都是有预期目标的,运营只需要在投放过程中把业务投放目标填写在控制台上,鲲鹏系统就会自动与都江堰算法平台进行协作,帮助业务目标达成及转化效率优化。运营同学通过鲲鹏控制台配置的投放目标(如3天共100万曝光pv)、投放策略(尽快投放、平滑投放、自由投放)及其他各项素材内容,会通过鲲鹏离线数据链路T+1回流到算法平台,供混排算法模型制定次日的全局投放计划。各素材实际的曝光、点击数据包含鲲鹏下发的业务唯一标识,这份数据回流到混排算法平台,用于模型的不断优化迭代。各垂纵算法(业务定制的算法数据提供方,比如直播垂纵算法、求购垂纵算法)经过混排后实际曝光的数据,会通过鲲鹏通用曝光过滤数据链路回流到垂纵算法过曝表中,解决垂纵数据重复曝光问题。

在接入了鲲鹏平台后,用户发起一次请求的数据处理流程如下图:

从上图可以看到数据处理过程中涉及到较多的模块,我们在鲲鹏系统设计过程中尽可能把各种模板通过可扩展的架构实现,把各业务实现的定制功能沉淀为公共组件,横向助力更多业务快速迭代。

整个系统的架构设计如下图所示:

DataFetcher扩展点子系统

鲲鹏的DataFetcher扩展点子系统是能够实现多人低成本参与并行开发的关键之一。各业务线的数据投放需求如果需要从远端服务实时获取(比如根据用户搜索词实时推荐关联导购信息),那么业务开发同学通过继承DataFetcher扩展点基类,在子类的回调方法中调用远端服务获取数据、编写DO转换的逻辑,即可轻松完成业务开发和投放。至于多DataFetcher的RPC并发、资源隔离、指标监控等功能都已经在鲲鹏底层包装好了,对业务同学完全透明,业务开发同学只需要关注业务本身即可。而在诞生鲲鹏系统之前,各业务的投放都需要开发者对投放场景的主干代码极为熟悉才行,导致搜索、首页feeds等场景的投放开发工作只有场景owner一个人能够胜任,成为开发单点资源瓶颈,鲲鹏彻底消除了这个局面。

DataFetcher子系统是鲲鹏“积木化”特性的重要实现。比如闲鱼首页feeds场景需要为新用户投放一批实时推荐的优质权益商品,通过DataFetcher实现。那么以后运营需要在搜索结果页、猜你喜欢页面投放此类权益商品时,此DataFetcher可以直接复用,通过鲲鹏控制台注册到对应场景即可,有效节省了开发资源,也提升了业务上线效率。

过滤器子系统

随着业务对精细化运营的需求越来越高,我们在鲲鹏上打造了一套积木化的过滤器子系统,沉淀成为基础组件供所有业务使用。除了大家熟知的分人群定投之外,我们还提供了分平台(iOS/Android)、分版本、灰度流量比例、搜索词严格匹配、搜索词模糊匹配、页码过滤、uv疲劳度过滤等前置过滤器。如果业务有相关的运营定投需求,可以在控制台上选择对应的过滤器直接使用。

如果业务有特殊的定投需求,现有的过滤器还不能满足,那么可以通过继承MatFilter基类轻松实现特殊的业务逻辑,并沉淀为通用过滤器组件,所有业务都可以复用。如此一来,鲲鹏的过滤器子系统能力将不断积累沉淀,实现跨业务的能力共享。

举一个实际的搜索竹蜻蜓投放例子:游戏运营同学的需求是,当用户来闲鱼搜索“王者荣耀”“跑跑卡丁车”这几个词时,把游戏竹蜻蜓的素材针对特定的游戏爱好者人群、仅在andoird客户端6.6.7~6.7.1这几个版本上投放15%的灰度流量,且每个用户每3天最多曝光10次。这样一个需求中用到了众多的过滤条件,有了鲲鹏的加持,这些过滤器能力都可以无需开发直接复用快速上线。而在此之前,这些需求需要经过prd评审、开发、联调、测试、发布后才能上线生效。

都江堰算法平台

鲲鹏的一个重要目标是借助达摩院算法能力助力业务目标达成,实现全局流量分配调优。我们与达摩院共建了都江堰算法平台,实现了一套通用的混排算法,从工程侧打通离线数据通路与在线服务链路,各业务都可以低成本复用此算法能力。闲鱼首页feeds、闲鱼首页金刚卫上多条业务线投放已经使用了鲲鹏系统提供的通用混排算法能力,在保证业务方达成投放pv目标的基础之上,还把pvctr指标提升了60%~100%,且随着算法模型的不断迭代优化,效果指标还有很大的上升空间。

分组管理与审批流

鲲鹏系统在多个大流量接口落地(首页、搜索SRP、猜你喜欢等),每个接口都有众多业务线的运营同学来进行投放,需要进行合理的分组权限管理来规避错误修改其他业务素材的问题。鲲鹏系统搭建了分组管理子系统,每个业务同学都必须归属于某个业务分组,此分组下的同学都只能看到自己分组下的素材,无法看到其他分组下的素材。创建素材、活动时必须归属于一个分组。这样就实现了有效的人与素材的分组管理。一旦素材或活动的配置发生变化,都会自动触发一个审批流工单,流向本分组的审批人。通过审批流程规避人为失误的风险。

接入鲲鹏后的角色分工

以前老的开发模式中,运营与开发的界线存在模糊地带。由于投放平台能力不完善,很多运营类配置变更都需要通过服务端推开关甚至修改代码来实现。接入鲲鹏之后,开发与运营的角色分工就非常清晰了:

  • 场景开发owenr负责对接鲲鹏系统。

  • 业务开发同学负责在鲲鹏扩展点上实现自己的业务需求。

  • 运营同学负责在鲲鹏控制台上配置素材,把业务开发同学的扩展点实现投放出来,并根据实际需要选择合适的运营基础组件来达到投放效果。

开发实现了业务需求后,后续所有的运营类变更都由运营同学自助在控制台操作完成。如果投放不符合预期,运营可以自助修改、自助下线,全程不需要开发参与。

效果

目前闲鱼鲲鹏系统已经在闲鱼首页feeds、首页金刚位、搜索结果页、猜你喜欢、搜索底纹推荐等多个场景中落地,对各业务方目标达成提供了极大助力,pv转化率提升了60%~100%,uv转化成本降低了40%左右,且还有很大的优化空间。由于多种基础运营组件可以免开发直接复用,DataFetcher扩展点机制使得各业务方开发资源也可以并行投入进来,业务需求总体上线耗时缩短了50%以上。

展望

鲲鹏系统提供的算法赋能、扩展点并行开发、场景素材管理与投放、积木化运营能力沉淀,都对业务投放效果与研发效率带来了非常显著的正面提升。后续我们将会继续深挖垂纵算法通用能力、更灵活的扩展点开发模式、横向打通更多场景优化全局流量调控效果,为业务带来更多增长点。

2020,感谢有你

I will be at your side

抖音:@闲鱼技术

今日头条:@闲鱼技术

● 扫码关注我们

闲鱼高效投放背后的秘密——鲲鹏相关推荐

  1. 闲鱼架构专家,详解Flutter技术架构15页ppt:跨端方案如何选择?

    文/技术领导力社区 编辑/Emma 闲鱼架构团队负责人国有.技术专家宗心.灯阳,在文章及公开分享中介绍了Flutter在闲鱼的实践,内容包括:选择Flutter的背景和思考.闲鱼的Flutter新混合 ...

  2. GMTC2019|闲鱼-基于Flutter的架构演进与创新

    2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地.未来将持续关注终端技术的演变及趋势 Flutter的优势与挑战 Flutter是 ...

  3. 全民捡破烂,转转和闲鱼谁能胜出?

    继社交.电商.支付等领域后,阿里和腾讯又将战火蔓延到了二手市场. 5月6日,由腾讯投资的二手交易平台转转宣布,战略合并二手数码交易平台找靓机. 合并后的转转拥有强大的线上流量优势,特别是在二手手机这一 ...

  4. 一切围绕信任——闲鱼无忧购的技术演进

    背景 闲鱼无忧购是阿里巴巴集团旗下品牌,专注于为追求品质和性价比的人群提供品牌自营.品牌授权等优质商品 (包括但不限于官翻准新.滞销处理.退换货处理.展示品样等),并提供无忧售后服务的服务平台. 闲鱼 ...

  5. 更猛更持久的广告投放,闲鱼程序员的年终奖全靠它。。。

    业务背景 用户增长作为开源节流促成长的过程,是包含了有效用户增长.用户成长.用户变现.用户传播.防止用户流失等一整套增长流程,而非单纯数量上的增长. 在实践中,增长手段主要聚焦在如何获取用户和提升用户 ...

  6. 如何获得更持久的广告投放,闲鱼程序员的年终奖全靠它。。。

    业务背景 用户增长作为开源节流促成长的过程,是包含了有效用户增长.用户成长.用户变现.用户传播.防止用户流失等一整套增长流程,而非单纯数量上的增长. 在实践中,增长手段主要聚焦在如何获取用户和提升用户 ...

  7. 消息点击率翻倍的背后——闲鱼无侵入可扩展IFTTT系统

    面临问题 在闲鱼生态里,用户之间会有很多种关系.其中大部分关系是由买家触发,联系到卖家,比如买家通过搜索.收藏.聊天等动作与卖家产生联系:另外一部分是平台与用户之间的关系.对这些关系分析之后我们发现这 ...

  8. 闲鱼亿级商品结构化背后的思考和演进

    来自:闲鱼技术 背景 闲鱼是一个典型的C2C场景的闲置交易平台,每个在闲鱼的用户都能享受到自由交易的乐趣,只要简单的输入商品名,商品价格,库存等信息就能完成一个商品的发布.充分的自由是闲鱼活力的来源, ...

  9. 闲鱼如何高效承接并处理用户纠纷

    背景 闲鱼是一个基于C2C场景的闲置交易平台,每个用户既是买家也是卖家,在自由享受交易乐趣的同时也容易带来一些问题,如发一些侵权违规商品而不自知,发一些带情绪化言语对他人照成了伤害等,因此这也带来了一 ...

最新文章

  1. 【教程】利用libsvm-mat建立分类模型model参数解密【by faruto】
  2. 小米手机反复提示“请勿遮挡听筒区域“
  3. Val编程-val系列编程思想
  4. tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...
  5. XML约束——Schema约束
  6. django为Form生成的label标签添加class
  7. ORACLE Primavera P6 / Unifier 19.12 免费虚拟机
  8. 【Prescan学习】Prescan环境配置(介绍+安装+学习资源)
  9. Linux 录屏软件有哪些?
  10. 深入探讨apply()方法的作用
  11. 8月刚入职字节跳动的测试开发面试题,附答案
  12. C 语言中MDI有什么作用,Qt MDI及其使用方法(详解版)
  13. 反黑教程:手把手教你应对搜索引擎劫持攻击
  14. Verilog流水线CPU设计(超详细)
  15. 数据标注是做什么的?
  16. Allegro 过孔绘制
  17. 夜游项目怎样以文化差异吸引游客
  18. 杰克曼为宣传《X战警》抵京
  19. Python办公自动化|一键生成数据分析报告
  20. 计算机网络构建医院局域网,计算机网络课程设计-构建医院局域网

热门文章

  1. Android--操作图片Exif信息
  2. 【Java数组】数组的使用(打印数组元素,计算所有元素的和,查找最大值,反转数组以及打印数组元素)
  3. 2015-06-12
  4. 数据脱敏显示-用户名和手机号
  5. TLS协议中的握手协议
  6. 20【C趣味算法练习】“马克思手稿中的数学题”(解方程组)
  7. 跨界程序员,这是潘石屹 56 岁的生日礼物
  8. php面试题优化以下代码,值得深思的PHP面试题
  9. Ubuntu 开放端口
  10. 【无人机取证篇】无人机取证飞行日志分析(简)