今日头条技术架构分析

沙海 2021年6月12日02:09:36Java评论19字数 3302阅读11分0秒阅读模式
摘要

智能摘要

智能摘要文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条创立于2012年3月,从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。欢迎加入我的知识星球,一起探讨架构,交流源码。MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。文章源自JAVA秀-https://www.javaxiu.com/31381.html

原文约 5621 | 图片 12 | 建议阅读 12 分钟 | 评价反馈文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析

点击关注 ? 芋道源码 文章源自JAVA秀-https://www.javaxiu.com/31381.html

收录于话题文章源自JAVA秀-https://www.javaxiu.com/31381.html

#芋道源码文章源自JAVA秀-https://www.javaxiu.com/31381.html

120个文章源自JAVA秀-https://www.javaxiu.com/31381.html

点击上方“芋道源码”,选择“设为星标文章源自JAVA秀-https://www.javaxiu.com/31381.html

管她前浪,还是后浪?文章源自JAVA秀-https://www.javaxiu.com/31381.html

能浪的浪,才是好浪!文章源自JAVA秀-https://www.javaxiu.com/31381.html

每天 8:55 更新文章,每天掉亿点点头发...文章源自JAVA秀-https://www.javaxiu.com/31381.html

文章源自JAVA秀-https://www.javaxiu.com/31381.html

源码精品专栏文章源自JAVA秀-https://www.javaxiu.com/31381.html

 文章源自JAVA秀-https://www.javaxiu.com/31381.html

文章源自JAVA秀-https://www.javaxiu.com/31381.html

来源:blog.csdn.net/mucaoyx/article/details/84498468文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条创立于2012年3月,从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。文章源自JAVA秀-https://www.javaxiu.com/31381.html

一、产品背景

今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 5亿注册用户文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎为成倍增长。文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 日活4800万用户文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 2014年为1000万日活,2015年为3000万日活。文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 日均5亿PV文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 5亿文章浏览,视频为1亿。页面请求量超过30亿次。文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 用户停留时长超过65分钟以上文章源自JAVA秀-https://www.javaxiu.com/31381.html

1、文章抓取与分析

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

接下来,今日头条会用人工方式对敏感文章进行审核过滤。此外,今日头条头条号目前也有为数不少的原创文章加入到了内容遴选队列中。文章源自JAVA秀-https://www.javaxiu.com/31381.html

接下来我们会对文章进行文本分析,比如分类,标签、主题抽取,按文章或新闻所在地区,热度,权重等计算。文章源自JAVA秀-https://www.javaxiu.com/31381.html

2、用户建模

当用户开始使用今日头条后,对用户动作的日志进行实时分析。使用的工具如下:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • Scribe文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • Flume文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • Kafka文章源自JAVA秀-https://www.javaxiu.com/31381.html

我们对用户的兴趣进行挖掘,会对用户的每个动作进行学习。主要使用:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • Hadoop文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • Storm文章源自JAVA秀-https://www.javaxiu.com/31381.html

产生的用户模型数据和大部分架构一样,保存在MySQL/MongoDB(读写分离)以及Memcache/Redis中。文章源自JAVA秀-https://www.javaxiu.com/31381.html

随着用户量的不断扩展大,用户模型处理的机器集群数量较大。2015年前为7000台左右。其中,用户推荐模型包括以下维度:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 1 用户订阅文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 2 标签文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 3 部分文章打散推送文章源自JAVA秀-https://www.javaxiu.com/31381.html

此时,需要每时每刻做推荐。文章源自JAVA秀-https://www.javaxiu.com/31381.html

3、新用户的“冷启动”

今日头条会通过用户使用的手机,操作系统,版本等“识别”。另外,比如用户通过社交帐号登录,如新浪微博,头条会对其好友,粉丝,微博内容及转发、评论等维度进行对用户做初步“画像”。文章源自JAVA秀-https://www.javaxiu.com/31381.html

分析用户的主要参数如下:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 关注、粉丝关系文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 关系文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 用户标签文章源自JAVA秀-https://www.javaxiu.com/31381.html

除了手机硬件,今日头条还会对用户安装的APP进行分析。例如机型和APP结合分析,用小米,用三星的和用苹果的不同,另外还有用户浏览器的书签。头条会实时捕捉用户对APP频道的动作。另外还包括用户订阅的频道,比如电影,段子,商品等。文章源自JAVA秀-https://www.javaxiu.com/31381.html

4、推荐系统

推荐系统,也称推荐引擎。它是今日头条技术架构的核心部分。包括自动推荐与半自动推荐系统两种类型:文章源自JAVA秀-https://www.javaxiu.com/31381.html

1) 自动推荐系统文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 自动候选文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 自动匹配用户,如用户地址定位,抽取用户信息文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 自动生成推送任务文章源自JAVA秀-https://www.javaxiu.com/31381.html

这时需要高效率,大并发的推送系统,上亿的用户都要收到。文章源自JAVA秀-https://www.javaxiu.com/31381.html

2)半自动推荐系统文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 自动选择候选文章文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 根据用户站内外动作文章源自JAVA秀-https://www.javaxiu.com/31381.html

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

在还没有推出头条号时,内容主要是抓取其它平台的文章,然后去重,一年几百万级,并不太大。主要是用户动作日志收集,兴趣收集,用户模型收集。文章源自JAVA秀-https://www.javaxiu.com/31381.html

资讯App的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

5、数据存储

今日头条使用MySQL或Mongo持久化存储+Memched(Redis),分了很多库(一个大内存库),亦尝试使用了SSD的产品。文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条的图片存储,直接放在数据库中,分布式保存文件,读取的时候采用CDN。文章源自JAVA秀-https://www.javaxiu.com/31381.html

6、消息推送

消息推送,对于用户: 及时获取信息。对运营来讲,能够 提⾼⽤用户活跃度。比如在今日头条推送后能够提升20%左右的DAU,如果没有推送,会影响10%左右 DAU(2015年数据)。文章源自JAVA秀-https://www.javaxiu.com/31381.html

推送后要关注的ROI:点击率,点击量。能够监测到App卸载和推送禁用数量。文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条推送的主要内容包括突发与热点咨讯,有人评论回复,站外好友注册加入。文章源自JAVA秀-https://www.javaxiu.com/31381.html

在头条,推送也是个性化:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 频率个性化文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 内容个性化文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 地域文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 兴趣文章源自JAVA秀-https://www.javaxiu.com/31381.html

比如:文章源自JAVA秀-https://www.javaxiu.com/31381.html

按照城市:辽宁朝阳发生的某个新闻事件,发给朝阳本地的用户。文章源自JAVA秀-https://www.javaxiu.com/31381.html

按照兴趣:比如京东收购一号店,发给互联网兴趣的用户。文章源自JAVA秀-https://www.javaxiu.com/31381.html

推送平台的工具和选择,需要具备如下的标准:文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 通道,首先速度要快,但是要可控,可靠,并且节省资源文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 推送的速度要快,有不同维度的策略支持,可跟踪,开发接口要友好文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 推送运营的后台,反馈也要快,包括时效性,热度,工具操作方便文章源自JAVA秀-https://www.javaxiu.com/31381.html

  • 对于运营侧,清晰是否确定推荐,包括推送的文案处理文章源自JAVA秀-https://www.javaxiu.com/31381.html

因此,推送后台应该提供日报,完整的数据后台,提供A/B Test方案支持。文章源自JAVA秀-https://www.javaxiu.com/31381.html

推送系统一部分使用自有IDC,在发送量特别大,消耗带宽较严重。可以使用类似阿里云的服务,可有效节省成本。文章源自JAVA秀-https://www.javaxiu.com/31381.html

二、今日头条系统架构

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

三、头条微服务架构

今日头条通过拆分子系统,大的应用拆成小应用,抽象通用层做代码复用。文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

系统的分层比较典型。重点在基础设施,希望通过基础设施提高快速迭代、容灾和一系列的工作,希望各个业务团队能更快做业务上的迭代以及架构上的调整。文章源自JAVA秀-https://www.javaxiu.com/31381.html

四、今日头条的虚拟化PaaS平台规划

通过三层实现,通过 PaaS 平台统一管理。提供通用 SaaS 服务,同时提供通用的 App 执行引擎。最底层是 IaaS 层。文章源自JAVA秀-https://www.javaxiu.com/31381.html

IaaS 管理所有的机器,把公有云整合起来,头条有一些热点事件会全国推广推送,对网络带宽比较高,我们借助公有云,需要哪一种类型计算资源,统一抽象起来。基础设施结合服务化的思路,比如日志,监控等等功能,业务不需要关注细节就可以享受到基础设施提供的能力。文章源自JAVA秀-https://www.javaxiu.com/31381.html

五、总结

今日头条重要的部分在于:文章源自JAVA秀-https://www.javaxiu.com/31381.html

数据生成与采集文章源自JAVA秀-https://www.javaxiu.com/31381.html

数据传输。Kafka做消息总线连接在线和离线系统。文章源自JAVA秀-https://www.javaxiu.com/31381.html

数据入库。数据仓库、ETL(抽取转换加载)文章源自JAVA秀-https://www.javaxiu.com/31381.html

数据计算。数据仓库中的数据表如何能被高效的查询很关键,因为这会直接关系到数据分析的效率。常见的查询引擎可以归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所应用。文章源自JAVA秀-https://www.javaxiu.com/31381.html

- END -文章源自JAVA秀-https://www.javaxiu.com/31381.html

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

已在知识星球更新源码解析如下:文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

今日头条技术架构分析文章源自JAVA秀-https://www.javaxiu.com/31381.html

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。文章源自JAVA秀-https://www.javaxiu.com/31381.html

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。文章源自JAVA秀-https://www.javaxiu.com/31381.html

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。文章源自JAVA秀-https://www.javaxiu.com/31381.html

文章源自JAVA秀-https://www.javaxiu.com/31381.html

文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)
文章源自JAVA秀-https://www.javaxiu.com/31381.html

阅读原文文章源自JAVA秀-https://www.javaxiu.com/31381.html

继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
  • 版权声明:本站是JAVA秀团队的技术分享社区,我们会经常分享资源和教程。
  • 转载请注明:今日头条技术架构分析 - JAVA秀 ☜(ˆ▽ˆ)
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定