今日头条技术架构分析,看这篇就对了!
回复 1024 有特别礼包
作者:钟镇刚
来源:blog.csdn.net/mucaoyx/article/details/84498468
上一篇:记住看小电影前一定要检查网址是不是 HTTPS 的,不然…
今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):
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、新用户的“冷启动”
今日头条会通过用户使用的手机,操作系统,版本等“识别”。另外,比如用户通过社交帐号登录,如新浪微博,头条会对其好友,粉丝,微博内容及转发、评论等维度进行对用户做初步“画像”。
分析用户的主要参数如下:
- 关注、粉丝关系
- 关系
- 用户标签
除了手机硬件,今日头条还会对用户安装的APP进行分析。例如机型和APP结合分析,用小米,用三星的和用苹果的不同,另外还有用户浏览器的书签。头条会实时捕捉用户对APP频道的动作。另外还包括用户订阅的频道,比如电影,段子,商品等。
4、推荐系统
推荐系统,也称推荐引擎。它是今日头条技术架构的核心部分。包括自动推荐与半自动推荐系统两种类型:
1 自动推荐系统
- 自动候选
- 自动匹配用户,如用户地址定位,抽取用户信息
- 自动生成推送任务
这时需要高效率,大并发的推送系统,上亿的用户都要收到。
2 半自动推荐系统
- 自动选择候选文章
- 根据用户站内外动作
头条的频道,在技术侧划分的包括分类频道、兴趣标签频道、关键词频道、文本分析等,这些都分成相对独立的开发团队。目前已经有300+个分类器,仍在不断增加新的用户模型,原来的用户模型不用撤消,仍然发挥作用。
在还没有推出头条号时,内容主要是抓取其它平台的文章,然后去重,一年几百万级,并不太大。主要是用户动作日志收集,兴趣收集,用户模型收集。
资讯App的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注
5、数据存储
6、消息推送
系统的分层比较典型。重点在基础设施,希望通过基础设施提高快速迭代、容灾和一系列的工作,希望各个业务团队能更快做业务上的迭代以及架构上的调整。
通过三层实现,通过 PaaS 平台统一管理。提供通用 SaaS 服务,同时提供通用的 App 执行引擎。最底层是 IaaS 层。
今日头条重要的部分在于:
数据生成与采集
数据传输。Kafka做消息总线连接在线和离线系统。
数据入库。数据仓库、ETL(抽取转换加载)
数据计算。数据仓库中的数据表如何能被高效的查询很关键,因为这会直接关系到数据分析的效率。常见的查询引擎可以归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所应用。
「顶级架构师」建立了读者架构师交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。
扫描添加好友邀你进架构师群,加我时注明【姓名+公司+职位】
版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
猜你还想看
19张图带你梳理SpringCloud体系中的重要技术点!
Mybatis-plus常用API全套教程,看完没有不懂的
MyBatis架构与原理深入解析
Redis单线程已经很快了,为什么6.0要引入多线程?带来什么优势?