消息点击率翻倍,原来这就是闲鱼背后的神器

640?wx_fmt=jpeg

阿里妹导读:IFTTT是一个被称为 “网络自动化神器” 的创新型互联网服务理念,它既实用,概念又简单,可以通过标准化协议满足用户的强需求,让各种互联网产品为用户服务,2010年刚推出,就拥有了极高的热度。闲鱼 IFTTT 是基于闲鱼的业务场景与 IFTTT 理念结合后产生的,上线以来,它提供了买卖双方实时双向互动能力,平均每天处理关系数据数亿条,点击率翻倍,给团队注入了新能量。今天就由闲鱼技术的工程师剑辛,为大家揭晓这个系统。


面临问题


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


  • 用户产生关系的层次不够丰富;现有系统只维护了一部分用户关系,包括收藏、点赞等,用户关系的层次还不够丰富。


  • 用户之间关系是单向且不够实时;在现有的玩法中,买家可以通过多种行为与卖家产生联系,但卖家不能主动与买家发生关系和互动;而且平台计算的关系都是离线的,对用户的吸引力不足。


上面提到的场景经过抽象归纳之后都是同一个范式:当某个条件被满足之后,就会触发相对应的动作。这个范式是 IFTTT 的基本理念,而闲鱼 IFTTT 就是对这些问题的解决方案。


IFTTT概念


IFTTT是一个被称为 “网络自动化神器” 的创新型互联网服务理念,它很实用而且概念很简单。IFTTT全称是 *If this then that *,意思是如果满足“this”条件,则触发执行“that”动作。IFTTT由三部分构成,分别为Trigger、Action和Recipe。


640?wx_fmt=png


可以看出 IFTTT 本身概念并不复杂,它的真正魔力在于“由简单组成的复杂”,也就是由众多简单的 IFTTT 流程相互衔接成跨越整个互联网、跨越多平台、跨越多设备的状态机。


闲鱼 IFTTT 是基于闲鱼的业务场景与 IFTTT 理念结合后产生的,提供 IFTTT 标准协议封装,对业务无侵入可扩展的服务编排系统。


640?wx_fmt=png


鱼 IFTTT 的两个特性对应上述两个问题,分别是:


  • 多维用户关系感知


多维指的是覆盖面,闲鱼 IFTTT 通过更多维度的挖掘,抽象并维护了更丰富的用户关系。基于用户关系数据,我们可以产出用户画像,并通过更有效的方式触达用户。


  • 实时用户双向互动

闲鱼 IFTTT 底层具有对用户关系大数据的高效存储和处理能力,以支持上层业务中用户关系实时处理;闲鱼 IFTTT 不仅支持买家到卖家关系,而且通过设计天生支持卖家到买家关系。


闲鱼 IFTTT 把之前平台与用户的互动、买家到卖家的联系,切换称闲鱼用户之间天然的关系互动,对用户骚扰更少且激活拉回的效果更好,我们基于这个场景设计闲鱼 IFTTT 的技术方案。


技术方案


640?wx_fmt=png


先按照 IFTTT 规范对业务进行建模,分为Channel、Trigger和Action层,其中 Channel 层是数据底层,将 Trigger 和 Action 关联后组成标准Recipe。


  • Channel Channel层在闲鱼 IFTTT 的作用是保存和管理用户关系数据,Channel层定义了用户关系的元数据结构,包括关系类型、源账户和目标账户。Channel层是闲鱼 IFTTT 的基石,Trigger和Action均基于用户关系数据进一步抽象业务逻辑。


  • Trigger Trigger是业务上自定义的触发事件,与业务息息相关,可能是关注的人上新、浏览宝贝降价或者是参加的百币夺宝活动开奖等。当 Trigger 触发后,闲鱼 IFTTT 会根据 Trigger 类型和配置的关系类型计算用户名单,并调用Action层进行处理。


  • Action Action层处理对象是Trigger触发后计算的用户名单,可以给名单里的用户发Push,发权益或者其他定制逻辑。Action本身是标准化、可插拔的组件,业务上可以利用 Action 组件对用户名单做AB测试,快速实验不同 Action 策略。


接下来我们说一下闲鱼 IFTTT 详细技术方案,方案如下:


640?wx_fmt=png


整体技术方案按照业务建模的结构图细化,补充依赖的技术组件。整体流程不再细述,针对流程中重点模块详细说明。


场景快速接入


设计场景快速接入的目的是让业务对接入闲鱼 IFTTT 无感知,因为在最开始的设计中,场景接入是准备通过在业务逻辑里增加AOP切面,将业务数据和场景上报。但因为这种方式对业务本身有一定侵入,增加业务执行的RT而且不够灵活,最终被否决。


而现在的场景快速接入方案解决了这些问题,通过SLS接入所有应用的海量网络请求日志,记录请求的URL、参数和响应;将 SLS 作为 Blink 流计算任务的数据源;根据 diamond 动态下发的规则实时筛选网络请求URL和参数,把数据按照指定格式组装后上报给 Channel 层。


场景快速接入方案将业务逻辑与场景接入解耦,支持快速接入,灵活变更且延迟低,是针对大数据场景接入的高性能解决方案。


计算用户名单


计算用户名单模块采用责任链模式设计,因为在不同 Trigger 场景中,业务对用户名单的计算和筛选逻辑都是不同的。通过责任链模式,将主流程与业务筛选逻辑解耦,并支持各业务灵活定制筛选逻辑,互不干扰。


PushAction


Action层是闲鱼 IFTTT 中最重要的一环,会直接触达到用户,Action的逻辑会直接影响用户对平台的直观感受和活跃率。消息 Push 是 Action 中最常见的逻辑,更要防止用户被骚扰,PushAction逻辑如下:


  • 敏感人群过滤;

  • 疲劳度校验;

  • 对发送人群进行AB实验;

  • 组装消息;

  • 将Action各节点日志同步到SLS,方便检索和排查问题;

  • 统计消息发送数据及点击数据,为业务后续决策提供依据;


其中,疲劳度是防止用户被骚扰的关键,我们针对疲劳度进行了分层设计,分为三层,第一层为用户级别疲劳度,控制一个用户在一个周期内收到消息数量;第二层是业务维度,控制用户在一个周期内收到某个业务的消息数量;第三层是目标级别,控制用户在一个周期内收到同一个发送者消息数量。


在业务维度层面,支持灵活控制多个业务联合疲劳度,保证用户不会被消息过度骚扰。



640?wx_fmt=png


用户关系存储


用户关系数据是闲鱼 IFTTT 的基石,它的特点是存储量级大,达到TB级别;而且对存储和查询的性能要求高,TPS和QPS的峰值都在一万以上。经过调研,我们发现集团内部开发的 Lindorm 可以满足需求。


Lindorm是阿里内部基于 Hbase 自研的高性能KV存储数据库,对Hbase的性能和稳定性均有一定优化。闲鱼 IFTTT 采用 Lindorm 作为用户关系数据存储,经性能测试验证数据读取 QPS 达到7万,数据存储TPS在10万以上。Lindorm本身性能优异,为闲鱼IFTTT高性能奠定基础。


效果


闲鱼IFTTT自上线以来,已支持关注上新、浏览宝贝降价和租房小区上新等多个业务场景,提供买卖双方实时双向互动能力,平均每天处理关系数据数亿条,处理Trigger量达到上千万,处理 Action 量达到亿级别,消息点击率较离线push提高1倍以上。


闲鱼 IFTTT 目前支持的是用户互动场景,后续我们将结合闲鱼自身业务特点,对 IFTTT 进行更高维度抽象,封装标准 Recipe 接口,将闲鱼IFTTT打造成提供流程编排、管理能力的服务平台。


在我看来,IFTTT从2010年推出以来,在国外有很大的热度,在互联网和物联网领域都有专门的公司和团队在研发,IFTTT的概念虽然简单,却通过标准化协议满足用户的强需求——让各种互联网产品为用户服务。这其实也给我们互联网从业者一些思考:在新机遇面前,究竟是快速投入比较重要还是抽象标准协议解决一类问题更加有效?


名词注解


  • SLS:https://cn.aliyun.com/product/sls

  • Diamond:阿里内部研发的持久配置管理中间件;

  • Blink:https://data.aliyun.com/product/sc?spm=5176.10695662.1131226.1.bf495006EWuVAB

  • MetaQ:阿里内部研发的分布式、队列模型的消息中间件;

  • Lindorm:阿里内部基于HBase研发的新一代分布式NoSQL数据库,阿里云类似产品:https://www.aliyun.com/product/ots?spm=a2c4g.11174283.cwnn_jpze.59.2f5a15c3NH30me;

  • Tair:阿里内部研发的高性能、分布式、可扩展、高可靠的Key-Value结构存储系统;


阿里云开发者峰会分享了开源大数据、IT 基础设施云化、数据库、云原生、物联网等领域的技术干货。点击↓↓下方按钮,下载演讲 PPT。


640?wx_fmt=png


640?wx_fmt=gif

你可能还喜欢

点击下方图片即可阅读



640?wx_fmt=jpeg

平头哥广发英雄帖,公开首款CPU“玄铁”仿真代码


640?wx_fmt=jpeg

阿里云亮出四张“王牌”,平头哥首次交货!


640?wx_fmt=jpeg

将 IPv6 照进现实,我们需要做些什么?



640?wx_fmt=jpeg


关注「阿里技术」

把握前沿技术脉搏

阅读更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
采集闲鱼游泳卡转让信息,可自己在url中自定义要采集的二手商品信息以及筛选商品价格,采集完成并发送邮件通知 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值