一个优秀的Push平台,需要经历怎样的前世今生

2020 年 3 月 21 日

一个优秀的Push平台,需要经历怎样的前世今生

对闲鱼用户来说,因为闲鱼商品库存只有一件,商品的时效性很强,因此当用户关注的卖家上新、浏览的商品发生降价或者平台为用户找到一批高性价比商品时,用户期望尽快被通知。Push 已经成为用户与闲鱼平台联系的重要纽带。


本文将以技术同学视角,介绍闲鱼 Push 从离线手工投放的 1.0 版本进化到智能个性化的 2.0 版本的发展过程,详细说明遇到的问题和技术方案选型,以期给读者带来一些思考和解决类似问题的思路。



闲鱼 Push1.0


当闲鱼 all in 无线后,平台需要把与用户相关的优质内容推送给用户,便于用户快速找到想购买的商品和感兴趣的内容。平台亟需一个 Push 产品化方案保证将优质内容以 Push 的形式触达到用户,提升用户体验。基于这样的前提,闲鱼 Push1.0 方案的主要思路如下:


  1. 计算Push用户名单

  2. a. 计算与用户强相关的优质Push场景,根据场景得到用户名单

  3. b. 垂直业务根据用户画像等条件,圈选业务的目标人群

  4. 基于场景疲劳度过滤每个用户能发送的场景列表

  5. 对每个用户的场景列表进行全局择优,挑选点击率最高的场景作为目标场景


闲鱼 Push1.0 方案简单明了,流程清晰,而且离线流程方便监控告警和问题排查,满足当时的业务需求,上线后运行稳定。在很长一段时间内 1.0 方案的核心架构和流程没有太大变更。但随着业务发展,闲鱼 Push1.0 方案的一些弊端开始暴露,包括


  • Push用户名单计算不够实时

  • 消息卡片样式不够丰富

  • Push触发时机单一

  • Push场景比较少


这些问题最终导致 Push 点击率无法继续提升,触碰到 1.0 方案的天花板。为了解决这些问题,我们对闲鱼 Push 系统进行几个方面的优化升级,并最终重构了闲鱼 Push 系统。


闲鱼 Push1.1


为了给 Push 用户提供更好的用户体验,丰富用户 Push 场景,我们优先考虑从消息样式、触发时机和用户场景几个方面优化扩展现有闲鱼 Push 方案,优化项主要分为消息 feeds 流升级、Push 时间个性化、实时 Push 等。


消息 feeds 流升级


Push 会沉淀到客户端的消息板块,而消息板块也是用户进入闲鱼后浏览最频繁的板块之一,消息样式最开始只支持文本消息和图片消息,这类消息样式的问题是对用户来说有效信息曝光少、而且消息样式单一。为此我们对消息展示形式进行升级,通过 feeds 方式展示消息,提升有效信息曝光率,优化消息样式,打造消息板块的用户心智。feeds 流升级上线后效果明显,因为用户感兴趣的内容相比透出更多,UV 点击率和用户次留相对提升都很大。



第一条为feeds流消息,之后是图片消息,相对来说,feeds流消息可以透出更多有效信息


Push 时间个性化


闲鱼 Push1.0 方案主要支持的是定时批量 Push,实际的运行情况是定时批量给目标用户发 Push。Push 触发时机比较单一,人为造成流量较为集中,增加系统稳定性风险;另外统一的触发时机并不适用于所有用户,存在对部分用户打扰的情况。


针对这种情况,我们优化了 Push 触发时机,由算法根据用户行为计算预测每个用户的触发时机。算法将用户相对平均的分在一天之中,在用户相对活跃的时间段将 Push 触达给用户,减少对活跃用户骚扰,也使得 Push 触达的用户群体分层更加合理健康。


实时 Push


闲鱼 Push1.0 方案主要覆盖的是用户相关离线场景,对用户实时行为产生的场景覆盖不够,而且这类场景较离线场景相比实时性更高,对用户来说相对更重要。针对这个问题,我们增加了对实时场景覆盖,将用户行为抽象成关系模型,以 IFTTT 作为系统整体触发机制。当关系一侧的用户行为发生变更后触发对另一侧的触达,这类场景实时性更强,和用户强相关,提升用户 Push 场景丰富度,增强用户粘性。实时 Push 场景上线后 Push 点击率相对离线场景提升 1 倍以上,具体技术细节可参考《闲鱼IFTTT》。


以上是我们针对闲鱼 Push1.0 的功能优化和增强,通过这些能力也扩展支持了更多场景和业务,最终组合在一起成为闲鱼 Push1.1 版本。


闲鱼 Push 的今生


闲鱼 Push1.1 整体上线后极大提升了用户 Push 场景丰富度和用户体验。随着对 Push 和用户理解的深入,我们发现还有优化提升的空间,包括:


  • 平台视角不够,现有的优化更偏向点对点,需要从闲鱼Push平台视角将这些点连成线形成合力,产生1+1>2的效果

  • 现有闲鱼Push流程的本质还是离线计算,算法无法进行更加实时的个性化和全局择优,对用户体验有一定影响

  • 场景配置不够灵活,新增场景成本高,制约了丰富用户Push场景的进度


基于这些原因,我们最终对闲鱼 Push 系统进行重构和升级,打造闲鱼 Push 实时智能投放平台 Hermes。Hermes 取自希腊神话,他聪明(智能)、行动敏捷(快)、多才多艺(多种触达),最能契合闲鱼 Push 实时智能投放平台的使命愿景。


逻辑架构



Hermes 架构与闲鱼 Push1.0 完全不同,以实时为目标,在场景素材准备、算法全局调优和 Push 发送等关键环节实现实时或准实时,提升 Push 内容时效性;另外从平台角度出发,将 Hermes 分为配置中心、匹配中心和任务中心,各个子系统定义交互的数据协议,彼此没有强依赖。三个子系统的作用分别是:


  • 配置中心

  • 配置中心负责维护平台核心数据模型,给业务方提供页面操作配置Push场景和素材,降低业务方接入成本;并且把配置数据以离线全量和实时增量的方式同步给算法模型,作为匹配依据。

  • 匹配中心

  • 匹配中心又称为算法择优中心,匹配中心负责训练算法择优模型,根据场景和素材配置为每个用户个性化筛选,根据每个素材历史点击率数据排序,根据用户近期行为召回用户最有可能感兴趣的素材和个性化内容。

  • 任务中心

  • 任务中心负责Push触发时机和实际触达,任务中心核心支持定时触发、实时触发和时间个性化触发,目的是对Push触发方式收口,为不同的业务和场景选择不同触发方式,帮助业务实现业务目标。另外是对触达进行收口,方便平台编排触达计划,包括触发时间和发送量级,保证达到业务目标同时不会对Hermes和业务下游系统造成过大瞬时压力。


业务效果


Hermes 平台上线后效果非常明显,主要表现为:


  • Push点击率相对提升达到两位数

  • 用户场景覆盖量直接翻倍

  • Push点击激活的DAU也超过历史最高水平


总结


本文介绍了闲鱼 Push 从前世离线计算的 1.0 版本,发展到多项功能优化的 1.1 版本,最终进化成今世的实时智能投放平台的全过程,其实闲鱼 Push 的每个阶段都契合当时业务发展需要,但对于用户体验的无限追求最终产出了闲鱼 Push 实时智能投放平台 Hermes。希望这种方式可以帮助读者理解闲鱼 Push 发展的业务背景和技术方案选型考量。接下来我们还会有一篇文章详细说明 Hermes 的技术方案,包括系统架构、技术选型、性能优化和稳定性保障措施,欢迎大家继续关注。


本文转载自公众号闲鱼技术(ID:XYtech_Alibaba)。


原文链接


https://mp.weixin.qq.com/s/yGsymqoOiREqa9sLdWVCVQ


2020 年 3 月 21 日 10:191584

评论

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

食堂就餐卡系统设计

大雄

第一周作业

andy

SpringBoot整合Quartz实现任务定时

北漂码农有话说

SpringBoot 2

HBase 常用 Shell 命令手册

Rayjun

Java HBase

[安利] WSL Linux 子系统,真香!附完整实操

猴哥一一 cium

Docker Linux 推荐 WSL2 Windows 10

架构师训练营-学习笔记-第一周

心在飞

极客大学架构师训练营

MySQL 笔记(二)日志系统

奈何花开

Java MySQL

面试了 6 轮 Google中国 之后,还是挂了

石头

面试 谷歌Google Java 面试 经验分享 面经

第一周总结

andy

第一周总结

第一周学习总结

A Matt

极客大学架构师训练营

ARTS-02

NIMO

ARTS 打卡计划 ARTS活动

年龄性别的问题,好像也不是太大问题……

zhoo299

生活 随笔

极客时间 - 架构师训练营 - week1 - 作业2

jjn0703

极客大学架构师训练营

ARTS打卡Week 03

teoking

ios LeetCode

使用 Docker Desktop 中的 Kubernetes

FeiLong

Docker Kubernetes

ARTS 打卡 WEEK3

编程之心

ARTS 打卡计划

ARTS-week-2

youngitachi

ARTS 打卡计划

第一周UML作业

吴建中

软件建模与设计文档

大雄

UML

带你学够浪:Go语言基础系列 - 8分钟学复合类型

柠檬橙

golang 后端

scala callback hell

HackMSF

编程 最佳实践

ngrok穿越本地服务器,极客大学架构师训练营 第一课总结,John 易筋 ARTS打卡Week 03

John(易筋)

极客时间 极客大学 ngrok

公司出了一款新产品,要不要招代理商?

石云升

用户增长 价值网依赖 产品定位 新产品

mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比,于是写了个插件。

why技术

Java 源码 mybatis

ARTS-WEEK1

Allen

架构师训练营练习:食堂就餐卡系统设计

Shawn

软件架构基础

dapaul

架构 架构师 极客大学架构师训练营

就餐卡系统设计

满山李子

史上最诡异问题,iOS 单例初始化两次,你遇到过吗?

liu_liu

ios 初始化 单例 两次

作业1-食堂就餐卡系统设计

A Matt

架构文档-作业01

ashuai1106

UML

一个优秀的Push平台,需要经历怎样的前世今生-InfoQ