关于java:今日头条技术架构分析

57次阅读

共计 2554 个字符,预计需要花费 7 分钟才能阅读完成。

送大家以下学习材料,文末有支付形式




今日头条创建于 2012 年 3 月,到目前仅 4 年工夫。从十几个工程师开始研发,到上百人,再到 200 余人。产品线由外延段子,到今日头条,今日特卖,今日电影等产品线。

一、产品背景

​ ​ 今日头条是为用户提供个性化资讯客户端。上面就和大家分享一下以后今日头条的数据(据外部与公开数据综合):

  • 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、数据存储

​ ​ 今日头条应用 MySQL 或 Mongo 长久化存储 +Memched(Redis),分了很多库(一个大内存库),亦尝试应用了 SSD 的产品。

​ ​ 今日头条的图片存储,间接放在数据库中,分布式保留文件,读取的时候采纳 CDN。

6、音讯推送

​ ​ 音讯推送,对于用户: 及时获取信息。对经营来讲,可能 提⾼⽤用户活跃度。比方在今日头条推送后可能晋升 20% 左右的 DAU,如果没有推送,会影响 10% 左右 DAU(2015 年数据)。

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

​ ​ 今日头条推送的次要内容包含突发与热点咨讯,有人评论回复,站外好友注册退出。

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

– 频率个性化

– 内容个性化

– 地区

– 趣味

比方:

​ ​ 依照城市:辽宁向阳产生的某个新闻事件,发给向阳本地的用户。

​ ​ 依照趣味:比方京东收买一号店,发给互联网趣味的用户。

​ ​ 推送平台的工具和抉择,须要具备如下的规范:

​ ​ ​ ​ - 通道,首先速度要快,然而要可控,牢靠,并且节俭资源

​ ​ ​ ​ - 推送的速度要快,有不同维度的策略反对,可跟踪,开发接口要敌对

​ ​ ​ ​ - 推送经营的后盾,反馈也要快,包含时效性,热度,工具操作不便

​ ​ ​ ​ - 对于经营侧,清晰是否确定举荐,包含推送的文案解决

​ ​ 因而,推送后盾应该提供日报,残缺的数据后盾,提供 A /B Test 计划反对。

​ ​ 推送零碎一部分应用自有 IDC,在发送量特地大,耗费带宽较重大。能够应用相似阿里云的服务,可无效节省成本。

二、今日头条零碎架构

三、头条微服务架构

​​ ​ 今日头条通过拆分子系统,大的利用拆成小利用,形象通用层做代码复用。


​​ ​ 零碎的分层比拟典型。重点在基础设施,心愿通过基础设施进步疾速迭代、容灾和一系列的工作,心愿各个业务团队能更快做业务上的迭代以及架构上的调整。

四、今日头条的虚拟化 PaaS 平台布局


​ ​ 通过三层实现,通过 PaaS 平台对立治理。提供通用 SaaS 服务,同时提供通用的 App 执行引擎。最底层是 IaaS 层。


​ ​ IaaS 治理所有的机器,把私有云整合起来,头条有一些热点事件会全国推广推送,对网络带宽比拟高,咱们借助私有云,须要哪一种类型计算资源,对立形象起来。基础设施联合服务化的思路,比方日志,监控等等性能,业务不须要关注细节就能够享受到基础设施提供的能力。

五、总结

​ ​ 今日头条重要的局部在于:

  • 数据生成与采集
  • 数据传输。Kafka 做音讯总线连贯在线和离线零碎。
  • 数据入库。数据仓库、ETL(抽取转换加载)
  • 数据计算。数据仓库中的数据表如何能被高效的查问很要害,因为这会间接关系到数据分析的效率。常见的查问引擎能够归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所利用。

正文完
 0