背景

上周看完了闲鱼 push 系统 Hermes 的“三生三世”,大家是不是一直等着“十里桃花”呢?Hermes 咋就这么敏捷呢?她咋就这么懂你呢?今天,小编我就带领大家一起揭开她神秘的面纱。触达类业务,对用户最重要的三个问题:

• When is Right? 什么时候发给我最合适?

• Who is Right? 什么样的场景更适合我?

• What is Right? 发什么内容更吸引我,我更感兴趣,对我有帮助呢?

秉承这个原则,如何快速的触达用户,更好的更优质的推送用户感兴趣的内容,是消息推送需要解决的关键问题。

思路

Hermes 的设计理念是将系统分为三部分,不同的组件实现不同的需求:

• 合理的选择发送时机(When)通过任务中心完成。

• 不同场景选择不同的用户(Who)通过配置中心完成。

• 发送用户最感兴趣的内容(What)通过匹配中心完成。

首先,让我们来了解一下 Hermes 的整体技术架构。

我们可以从架构图中看出,配置中心负责维护平台核心的数据模型,提供任务和素材的内容给匹配中心和任务中心;任务中心负责触达的时机选择和实际的触达计划,保证系统稳定性;匹配中心负责素材场景择优,疲劳度控制以及实验。在具体讨论各个部分的设计之前,让我们先梳理一下 Hermes 在 push 整体触达链路上的不同类型:

• 个性化触发:通过洞察用户感兴趣的内容,有针对性的帮助闲鱼用户发现价值。举例来说,通过算法,找到用户最容易接受消息推送的时段(某用户 A 喜欢在上午吃完早餐后打开手机),推送用户感兴趣的消息内容(用户 A 最近喜欢浏览一些数码产品),帮助他们更好的通过闲鱼满足个人需求(闲鱼将最近有关数码产品的一些促销活动推送给用户 A,用户 A 找到了一个好 deal,很开心)

• 实时触发:通过洞察用户使用闲鱼的实时行为,更好的帮助用户实现个人需求,比如用户浏览了某个商品 x,如果商品 x 降价了,我们会通过消息推送告知用户曾经浏览过的商品降价了,这样用户就可以用更便宜的价格买到喜欢的商品。类似的还有关注卖家上新等场景。在触达方式上,我们有 push、短信、popLayer 等不同的触达方式,针对每种方式的特点,优化用户接收消息的体验。

结合上述两种类型,我们来讲解系统是如何通过各部分的配合实现上述链路的。

配置中心

配置中心是 Hermes 敏捷的重要一环,如何快速的发掘用户感兴趣的内容,快速的配置,快速的上线是影响用户体验的重要因素。首先需要明白配置中心的三个核心角色,任务、人群和素材。运营可以通过平台配置不同的活动(就是任务),每个活动都可以创建多个素材,素材支持千人千面(个性化内容),运营同学针对各自负责的活动,圈选对应的人群(奥格用户增长平台【1】),所以任务和素材是一对多的关系,任务和人群是一对一的关系。

Hermes 的配置中心对任务和素材进行分开管理,系统会把任务按照触达目的进行分类,任务关联素材。明确的分类管理,对运营同学管理当前的营销活动,活动目的以及触达形式一目了然,任务素材审核机制保证了推送给用户的活动质量,数据大盘的报表便于后期做数据分析,更好的了解用户对发送内容的反馈。

如何发掘用户个性化的内容呢?每个业务场景都会根据不同用户的历史行为产出一张个性化 ODPS 表,这里面算法会根据不同用户的特点产出不同的内容。此外,时效性也非常关键,计算出来的个性化内容如果几天后才发给用户,可能用户已经不感兴趣或者有新的关注点,如何快速同步产出的结果来及时发送给用户呢?

在数据流转的设计架构中,配置中心的任务素材内容我们存储在 mysql 和 ODPS(阿里海量数据离线处理平台【2】)中,通过离线同步和实时同步两种方式输入到匹配中心(算法中心):任务素材的配置信息存储在 mysql 中,离线通过 ODPS 同步机制,实时通过监听 binlog 机制,同步发送 MQ 消息给匹配中心;

素材千人千面的内容我们存储在 ODPS 表中,离线同步我们采用了 ODPS 同步机制,实时同步我们利用 Blink(阿里海量数据实时流计算平台【3】)来完成,具体的方式通过 Blink 监听 ODPS 表的内容变更,然后将内容同步到匹配中心对应的数据存储中(IGraph 数据库,下文会有介绍)。通过实时的数据同步,我们可以做到内容快速配置上线,这也体现了 Hermes 的敏捷。结合个性化内容的生成,我们可以给匹配中心提供充足的素材供匹配中心找寻用户最感兴趣的内容,发掘用户的兴趣点。

任务中心

任务中心主要负责触达时机的确定,用户校验,计算任务素材匹配列表,调用匹配中心来判定是否对用户进行触达,业务校验,数据埋点,消息触达,整体链路如下图:

在触达时机上,根据不同类型的消息特点,我们把触达时机分为两类:个性化触发是算法通过离线 T-1 日算出每个用户最有可能接受触达的时间(个性化时间),产生一张 ODPS 表,任务中心通过 SchedulerX(阿里分布式调度系统)调度这张个性化时间表,查找符合条件的用户列表,将用户列表封装为消息发送(MetaQ,阿里自研分布式消息队列),接收到消息的服务针对每个用户,进行上述的链路传递。

实时触发是通过端智能的用户行为采集,上报,根据用户目前所在的场景,挑选适合该场景的信息发送给用户。这其中,感知用户行为和决策下发是 Omega 系统实现的,Hermes 通过与 Omega 系统配合,获得触发时机以及对应场景,关于 Omega 系统的介绍,我们公众号之前的系列文章《一个实时精准触达系统的自我修养》会给你详细的阐述。

当整条链路触发之后,系统首先校验用户是否符合系统要求,如果符合的话系统会根据用户去查询用户命中的任务(其实是查询用户是否在某个人群中,还记得一个任务对应着一个人群吗?),根据用户命中的任务,通过配置中心找到对应的符合这个用户的所有的素材,然后将这个素材列表结合一些配置信息发送给匹配中心,匹配中心具体的功能下个段落会有仔细讲解,匹配中心返回决策”是否发送消息“给当前请求用户,如果发送,发什么素材以及发送什么内容;如果不发送,不发送的原因,便于做后期分析统计。如果发送的话,任务中心会进行业务参数校验,千人千面校验等一系列校验内容确保素材合理合法,然后记录数据埋点以及后期日志,最后通过闲鱼自研的消息下发渠道 Heracles 推送给用户,参见下图:

这里需要单独说明一下实时触发的场景,由于实时触发的场景多样,系统会根据用户行为推送给用户不同的消息内容。但系统又不能对用户造成骚扰,这就需要匹配中心需要区分这些场景,有针对性的选择最合适的内容,针对复杂的场景,需要进行场景隔离。这就需要不同的匹配中心,因此系统要对匹配中心灵活配置,这里我们通过传入匹配中心的 id 灵活选择对应的匹配中心,解耦了任务中心和匹配中心,对未来更多类型的场景,提供了可能。

匹配中心

Hermes 除了快,还很懂你,奥妙就在匹配中心。她不光帮助 Hermes 回答了“ 是发 or 还是不发,That is a question"(致敬著名英国文豪莎士比亚),还解答了发送什么内容对用户最有用,才是用户最感兴趣的,最能帮助到用户。咋做的呢?

匹配中心来自阿里算法平台 TPP,结合配置中心准备好的个性化内容信息,算法小姐姐会根据场景建模,根据用户的历史数据,实时行为进行模型训练,对素材进行预估打分,匹配召回,素材之间的 AB 实验和赛马【4】,最终决定哪个素材以及内容是最适合用户的。

当然,在此之前,还有非常重要的一步,就是消息触达不能对用户造成骚扰,所以根据用户、任务、素材、内容疲劳度来综合判断到底发还是不发,以及什么素材和内容满足疲劳度控制,在实时场景中,匹配中心相对个性化触发更为复杂,这里除了单场景的素材择优,还需要考虑到多个场景下如何进行场景择优的问题,比如用户进入 app 首页这个场景,可能会触发多个场景,每个场景都有对应的消息触达,那么匹配中心如何选择最优场景,再根据场景中的不同素材进行素材择优,这里的模型设计会更为复杂。在平台上,算法使用了阿里自研的推荐平台 TPP,内部使用到的数据存储是 IGraph,一种阿里自研的高性能图数据库。

小结一下,结合上述的具体阐述,通过配置中心,任务中心和匹配中心的联动,Hermes 可以快速发掘用户感兴趣的内容,并且在用户易于接受的时机把内容传播给用户,同学们,你们听明白了吗?有啥问题吗?有问题的话就留言吧,卡尔.萨根说过:"世上没有傻问题" (顺便点个"在看", 小哥哥晚餐就给自己加个鸡腿了)

业务效果

在业务效果的提升上:Hermes 平台上线之后效果非常显著,用户点击率提升两位数,说明用户对消息推送的时间相较于老系统更容易接受,消息内容更感兴趣;用户场景的覆盖量直接翻倍,这为用户提供了更丰富的场景,给用户带来了更有趣的内容,所以通过 push 激活的闲鱼 DAU 也超过了历史最高水平。

在运营效率的提升上:在 Hermes 还未诞生的时候,老系统配置,测试,审核往往需要三天以上的时间,而现在所有的流程全部在管理后天配置完成,实时生效,数据大盘统计,归纳整理一站式全部搞定,谁用谁知道,用了都说好!

未来计划

Hermes 作为闲鱼触达的统一收口平台,不光是 push,短信,未来也会接入 open page 等更丰富的触达形式,通过不同的触达方式,优化用户体验;在闲鱼触达的整体架构设计中,未来我们会对场景择优和内容选择上进行深度的优化,针对不同的业务目标,匹配出最适合用户的场景以及消息内容。为了用户,没有最懂你,只有更懂你。

备注说明

【1】奥格 -淘系用户生命周期全链路管理平台

【2】ODPS -阿里海量数据离线处理平台

【3】Blink - 基于 Flink 的阿里海量数据实时流计算平台

【4】赛马-素材竞争,一种自然的实验方式,通过素材自身内容进行竞争,优胜略汰

闲鱼技术团队不仅是阿里巴巴集团旗下闲置交易社区的创造者,更是移动与高并发大数据应用新技术的引导者与创新者。我们与Google Flutter/Dart小组密切合作,为社区贡献了多个高star的项目和大量PR。我们正在积极探索深度学习和视觉技术在互动、交易、社区场景的创新应用。闲鱼技术与集团中间件团队共同打造的FaaS平台每天支持数以千万级用户的高并发访问场景。

就是现在!客户端/服务端java/架构/前端/质量工程师面向社会+校园招聘,base杭州阿里巴巴西溪园区,一起做有创想空间的社区产品、做深度顶级的开源项目,一起拓展技术边界成就极致!

*投喂简历给小闲鱼→guicai.gxy@alibaba-inc.com

开源项目、峰会直击、关键洞察、深度解读

请认准闲鱼技术

闲鱼触达系统背后——我想更懂你相关推荐

  1. 一个实时精准触达系统的自我修养

    问题定义 在互联网行业,唯一不变的就是一直在变化.作为技术同学,我们经常会碰到以下几种需求: 当用户收藏的商品降价后及时通知用户,促进双方交易达成:新用户或90天内未成交的用户浏览多个商品后引导用户主 ...

  2. 小雨伞触达系统的优化方向的一些思考

    小雨伞已上线的触达系统 https://mp.weixin.qq.com/s/wItL0k8oHOqF0_LlEctrRw 在过去一年里,经过多次迭代,已经基本达到当时系统设计的目标.随着业务接入的增 ...

  3. QCon直击|闲鱼推荐大规模应用背后的工程实践

    讲师介绍 闲鱼技术部 | 吴白 万小勇(吴白),闲鱼服务端专家.毕业于南京大学计算机系,目前负责闲鱼技术推荐架构. 推荐在闲鱼的应用 不同于搜索的确定性,推荐场景面临的问题往往是不确定的.但是正是因为 ...

  4. 码农节快乐|一个系统,高效解决复杂事件采集-计算-实时触达

    PartI: 1024 今天是1024,一个特别的数字,比如某网站内容的解压密码通常都是1024,想求一个种子留言也是1024.1024是属于广大程序猿(又称码农)的节日,在这样一个节日里,各种&qu ...

  5. 二手市场三大顽疾背后:支付宝小程序能成闲鱼下一个流量跳板吗?

    "这个好便宜,不买有点亏"."完了,下个月就要吃土了"等等这些声音不断环绕在人们的耳边,而这里面有很大的因素就是,6.18.双十一.双十二等促销节日不断激发人们 ...

  6. 一个PUSH系统是怎么做到友好触达的?

    背景   在Omega实时触达系统的系列技术文章中,已经对行为采集中心.CEP规则中心.用户触达中心三个子系统进行了详细介绍.Omega实时触达系统的核心能力是基于用户行为实时推送给用户感兴趣的内容, ...

  7. 闲鱼商品详情抓取系统开发/测试完毕,可自动采集闲鱼商品详情信息

    原来开发的闲鱼工具,一直采集的是闲鱼的搜索列表页,在采集字段上浅显地使用基本没有问题,但对于浏览量.收藏.用户销售量.以及一些用于智能判断商品质量.用户是否涉嫌造假的字段数据上,并没有采集到,因为这些 ...

  8. 系列文章|闲鱼商品理解之精品库建设

    现状 闲鱼是一个基于C2C场景的闲置交易平台,每个用户既是买家也是卖家,并随着这些年的高速发展,一方面闲鱼的商品越来越丰富,在自由享受交易乐趣的同时也存在商品良莠不齐的问题,另一方面这些年闲鱼一直在深 ...

  9. 商品卖不动?闲鱼Tellus任务系统来帮你

    业务背景 闲鱼作为一款C2X的app,与淘宝.天猫等B2C的业务模式存在天然不同.个人卖家也是普通的消费者,很多个人卖家相比专业卖家,并不清楚如何卖出自己的商品,问题主要表现在以下两个方面: 商品信息 ...

最新文章

  1. eclipse编辑窗口不见了(打开左边的java、xml文件,中间不会显示代码)
  2. 深圳湾口岸明起开通公交大巴
  3. 传送门骑士修改服务器数据,传送门骑士修改经验 | 手游网游页游攻略大全
  4. Spring之使用注解实例化Bean并注入属性
  5. Code Complete-13/7/29
  6. [Linux学习]man page常用按键
  7. Epic Games表示不服苹果垄断案裁决 继续提出上诉
  8. 中缀表达式-后缀表达式M
  9. sql2018 ssas_如何使用SQL Server Analysis Services(SSAS)从头开始构建多维数据集
  10. excel多列多行堆叠成多列一行_「Excel技巧」如何利用indirect函数快速将一列转为多行多列排版...
  11. 019-Spring Boot 日志
  12. python菜鸟教程100例-Python 练习实例1
  13. Docker详解(八)——Docker镜像制作
  14. java图形用户界面设计
  15. matlab的火山图,ggplot绘制火山图
  16. 中职 计算机 教案,中职计算机基础教案.doc
  17. 期货连续合约跳空处理
  18. linux V4L2子系统——v4l2的结构体(1)之v4l2_device
  19. ToolBoxFeatureDataZoomOpts:工具箱区域缩放配置项
  20. Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

热门文章

  1. 市盈率不足20倍 34只大盘蓝筹股尽显低估值效应
  2. Java 泛型的本质——类型擦除
  3. MySQL学习笔记3---Explain字段分析
  4. BAT替换文件中指定字符串
  5. PYTHON 获取邮件发送时间
  6. 看JTS源码,感受Java优化编程
  7. 华科CPP慕课SPOC第七章 编程题3
  8. 实现AI角色的自主移动-避开障碍物Obstacle行为
  9. linux 网桥 权限,如何在 Ubuntu 上搭建网桥
  10. Linux系统中的kill -0有什么作用?