揭秘!闲鱼拉新投放系统如何设计

  • 时间:
  • 浏览:64
  • 来源:小阿晨资源 - 专注共享天罚娱乐资讯

背景

闲鱼目前肯能是国内最大的闲置物品交易平台。随着闲鱼体量的增长和用户规模不断扩大,闲鱼App上的有有六个 多普通banner抑或是feeds中的一张普通的卡片,每天都肯能被数以千万计的人想看 。

为了更好地服务好广大的用户群体,更加个性化的内容推荐和更加精细化的素材投放就显得尤为必要了。今天朋友来聊一聊如可设计有有六个 多都不能精准触达用户、运营快速试错、解放开趋于稳定产力的投放系统。

思路

投放是哪些地方?举例来说,往城市广场的一块广告牌上在不同时分不同场景下更换广告画什么都五种投放,当然互联网技术带来了人的维度,不同用户想看 的广告画肯能也是不一样的。朋友来看下没法 有有六个 多系统应该带有哪些地方功能。

1、朋友把“城市广场上的那块广告牌”叫资源位,没法都要有有六个 多服务端接口来获取都要透出的素材。 2、不同资源位都要透出的素材格式肯能是不一样的,肯能是banner,肯能是feeds,肯能是运营自定义的手填数据,肯能是任何合理的数据内部。 3、同有有六个 多资源位,不同时分,针对不同平台、不同人群,透出的素材肯能是不一样的,没法就都要有有六个 多多服务来在一堆素材中筛选出适合资源位的内容。在资源位命中了多个素材的可是我,还都要有一些机制来裁决出最终透出的那有有六个 多。

详细设计

朋友设计的投放系统扮演的是前端实体资源位和后端多种数据源之间的桥梁的角色。它负责从各个业务数据源中根据一定规则筛选出在特定资源位上都要透出的数据,基本的数据流如下图所示:

图中的哪些地方地方概念在朋友的系统中是为什么我分解的呢?

资源位

所谓资源位,在朋友这个体系内,是指前端页面上的实体坑位。是技术同学在产品开发中创建的。理所当然,资源位都要消费的数据内部是在开发阶段就选用了,比如banner、feeds肯能内部非常灵活的手填数据等。

在朋友这个体系里,朋友用有有六个 多 schema 描述资源位都要消费的数据内部。

这个 schema 是用 json 描述的。技术同学在前端页面上开发实体资源位后,都要在朋友的系统中创建对应的虚拟资源位,并通过有有六个 多图形化的 json schema 编辑器来定义这个资源位都要消费的数据内部。

投放物料

上述 schema 定义了有有六个 多资源位所都要消费的数据的格式。什么都光有 schema 是匮乏的,肯能资源位要消费的是数据,而都要数据内部五种。在朋友的系统中,朋友用有有六个 多动态表单模块根据schema生成动态的表单,产品运营同学通过动态表单生产的数据,朋友称之为投放物料。资源位消费的什么都投放物料。

对于一些手填数据,表单直接产生的数据什么都资源位可用的了。什么都对于 Feeds 例如的,表单往往没法定义 Feeds 的一些诸如选品等内部字段。对于例如特殊类型的数据源,服务端就没法简单的直接返回数据了,都要根据哪些地方地方内部字段,做一些数据查询和数据解析工作,再返回给前端有有六个 多详细规范的数据。

投放单元

前述文章说到,同有有六个 多banner,肯能对新用户投放的是红包,对年轻男孩子投放的是手机数码内容,对年轻女人不投放的是美妆服饰。朋友把这个连接了资源位、投放物料与多个投放因子的桥梁叫做投放单元。

没法投放单元都要有十几个 个投放因子呢?其实是视业务而定的,朋友认为基础的投放肯能应该带有 投放时分、投放人群、投放平台、投放AB配置等。

当资源位向投放系统发起请求拉取数据时,投放系统在这个资源位上挂载的所有投放单元中根据投放因子筛选出命中的投放单元,最后将命中的投放单元上挂载的投放物料返回给前端的投放资源位。当命中了多个投放单元时,都要一些土土办法来裁决出最终胜出的那有有六个 多。这个土土办法简单点做,都不能在投放单元中配有有六个 多权重,筛选时最后选用权重高的那个,也都不能引入算法决策,根据投放的 ctr 数据做排序。

投放计划

投放计划是产品运营对多个资源位管理形式。简单来说,有有六个 多投放计划下,都不能挂载多个关联的资源位。试想一下,一次大促活动肯能涉及到几六个资源位的投放,将哪些地方地方资源位组织到同有有六个 多投放计划中进行管理,都不能更加方便操作以及查看投放效果。

端侧接入

对于前端来说,朋友希望通过提供有有六个 多封装的npm包,通过简单调用,传入resourceId(资源位ID) 即可获取数据。

这个调用土土办法对业务调用方来说是比较优雅的,什么都对页面性能来说却是不省心的。肯能有有六个 多页面往往由什么都个资源位组成,每个资源位单独发起请求就会形成絮状的并发请求,不仅页面性能会降低,完会对服务器产生比较大的qps压力。

针对这个请况,朋友做了有有六个 多小优化。服务端提供有有六个 多批量查询的接口,前端SDK内部,每10ms 对模块的请求调用做一次聚合,将单个资源位的数据获取转化成批量的查询。负面影响是对偏离 资源位的数据加载造成最大10ms的延时,优点是提升了页面整体的性能,有效减小了服务端QPS压力。

效果

上述投放系统在闲鱼拉新业务实践中稳定了run了五天多,为闲鱼应用内的数百个资源位提供投放能力支持,每天服务千万级别的闲鱼用户。

既实现了资源位的精细化投放,提高了单个资源位的利用率,又赋能运营更自由地进行各种拉新投放实验,减小试错成本,还减少了技术同学频繁参与运营实验改造的开发工作量,解放了技术同学的生产力。

写在最后

上述文章介绍了有有六个 多简易的投放系统的设计思路,本质上是有有六个 多连接前端实体资源位和服务端多种数据源的桥梁的设计。

其带有什么都能力是依赖了团队内部其它同学努力的成果,比如: 1、描述资源位数据内部的 json schema如可设计 2、根据json schema动态生成的表单为什么我实现 3、人群校验的服务和能力 4、AB测试的能力 5、feeds 的选品服务 6、个性化动态banner能力

这个系统还有什么都都不能优化的点,比如数据回流如可做得更好,如可引入算法能力对策略筛选进行优化等等,都要未来值得努力的方向。

本文由

闲鱼技术

发布在

ITPUB

,转载此文请保持文章详细性,并请附上文章来源(ITPUB)及本页链接。

原文链接:http://www.itpub.net/2019/05/29/1988/