今日头条这么牛逼,用了什么技术?

今日头条这么牛逼,用了什么技术?

一、产品背景

5亿注册用户

2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎为成倍增长。

日活4800万用户

2014年为1000万日活,2015年为3000万日活。

日均5亿PV

5亿文章浏览,视频为1亿。页面请求量超过30亿次。

用户停留时长超过65分钟以上

今日头条这么牛逼,用了什么技术?

二、技术与架构演进

1、文章抓取与分析

我们日常产生原创新闻在1万篇左右,包括各大新闻网站和地方站,另外还有一些小说,博客等文章。这些对于工程师来讲,写个Crawler并非困难的事。

接下来我们会对文章进行文本分析,比如分类,标签、主题抽取,按文章或新闻所在地区,热度,权重等计算。

2、用户建模

- Scribe

- Flume

- Kafka

我们对用户的兴趣进行挖掘,会对用户的每个动作进行学习。主要使用:

- Hadoop

- Storm

产生的用户模型数据和大部分架构一样,保存在MySQL/MongoDB(读写分离)以及Memcache/Redis中。

随着用户量的不断扩展大,用户模型处理的机器集群数量较大。2015年前为7000台左右。其中,用户推荐模型包括以下维度:

1 用户订阅

2 标签

3 部分文章打散推送

此时,需要每时每刻做推荐。

3、新用户的“冷启动”

分析用户的主要参数如下:

- 关注、粉丝关系

- 关系

- 用户标签

这里推荐一下我的JAVA架构学习交流群:614478470 ,想要学习Java高架构、分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频都有整理,送给每一位JAVA小伙伴,有想学习JAVA架构的,或是转行,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

4、推荐系统

1 自动推荐系统

- 自动候选

- 自动匹配用户,如用户地址定位,抽取用户信息

- 自动生成推送任务

这时需要高效率,大并发的推送系统,上亿的用户都要收到。

2 半自动推荐系统

- 自动选择候选文章

- 根据用户站内外动作

头条的频道,在技术侧划分的包括分类频道、兴趣标签频道、关键词频道、文本分析等,这些都分成相对独立的开发团队。目前已经有300+个分类器,仍在不断增加新的用户模型,原来的用户模型不用撤消,仍然发挥作用。

资讯App的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注。

5、数据存储

6、消息推送

推送后要关注的ROI:点击率,点击量。能够监测到App卸载和推送禁用数量。

在头条,推送也是个性化:

- 频率个性化

- 内容个性化

- 地域

- 兴趣

比如:

按照城市:辽宁朝阳发生的某个新闻事件,发给朝阳本地的用户。

按照兴趣:比如京东收购一号店,发给互联网兴趣的用户。

推送平台的工具和选择,需要具备如下的标准:

- 通道,首先速度要快,但是要可控,可靠,并且节省资源

- 推送的速度要快,有不同维度的策略支持,可跟踪,开发接口要友好

- 推送运营的后台,反馈也要快,包括时效性,热度,工具操作方便

- 对于运营侧,清晰是否确定推荐,包括推送的文案处理

因此,推送后台应该提供日报,完整的数据后台,提供A/B Test方案支持。

推送系统一部分使用自有IDC,在发送量特别大,消耗带宽较严重。可以使用类似阿里云的服务,可有效节省成本。

7、延展思考

现在很多客户端都会需要推荐技术,比如电商、旅游类的商品推荐,也可以有娱乐头条、健康头条、体育头条等类似的应用,这些产品在技术侧的实现,包括用户,模型,数据都是相通的。

今日头条这么牛逼,用了什么技术?

相关推荐