今日头条技术架构分析

戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

  

今日头条创立于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的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注

640?wx_fmt=png

5、数据存储

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

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

6、消息推送

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

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

  今日头条推送的主要内容包括突发与热点咨讯,有人评论回复,站外好友注册加入。

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

  •  频率个性化

  • 内容个性化

  •  地域

  •  兴趣

比如:

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

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

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

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

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

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

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

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

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

二、今日头条系统架构

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png


三、头条微服务架构

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

640?wx_fmt=jpeg

系统的分层比较典型。重点在基础设施,希望通过基础设施提高快速迭代、容灾和一系列的工作,希望各个业务团队能更快做业务上的迭代以及架构上的调整。


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

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

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

五、总结

今日头条重要的部分在于:

数据生成与采集

数据传输。Kafka做消息总线连接在线和离线系统。

数据入库。数据仓库、ETL(抽取转换加载)

数据计算。数据仓库中的数据表如何能被高效的查询很关键,因为这会直接关系到数据分析的效率。常见的查询引擎可以归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所应用。

640?wx_fmt=png

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:

  • mysql表设计要注意什么?

  • 漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?

  • 换脸软件 ZAO 刷屏:你在玩换脸,别人想要你的脸!

  • 只给测试集不给训练集,要怎么做自己的物体检测器?

  • 华为鸿蒙为什么非要碰物联网?

  • Dropout、梯度消失/爆炸、Adam优化算法,神经网络优化算法看这一篇就够了

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

贝尔梅尔娜美2019.03.15采纳率:60% 等级:39已帮助:91565人数据库系统的基本概念数据:实际上就是描述事物的符号记录。数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。而数据…

dom文档对象手册_HTML5学习之DOM编程

DOM是Document Object Model的缩写,中文名称是文档对象模型。DOM是处理HTML页面的标准编程接口,【前端精选40G资料包赠送co,每日新闻资讯ding,每天进步一点点bb,小写英文为微信】DOM可被JavaScript用来读取、改变HTML的内容和结构…

Kubernetes之路 2 - 利用LXCFS提升容器资源可见性

摘要: 这是本系列的第2篇内容,将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。本系列文章记录了企业客户在应用Kubernetes时的一些常见问题 第一篇:Java应用资源限制的迷思 第二篇:利用LXCFS提升容器资…

mysql数据库模型相应解释_数据库事务系列-MySQL跨行事务模型

说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道,但说实话那段时间并没有很深入的理解MySQL内核,做的事情基本都是围绕着MySQL做管控系统,比…

springboot项目jar冲突问题解决

问题:大概意思就是项目中有两个jar,同时是要是想slf4j的接口的,这样程序不知道使用哪个,就会报错了。也不算错,项目照样运行。但是就是报日志错误 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found …

火热的云计算,你知道这些吗?

戳蓝字“CSDN云计算”关注我们哦!作者 | Dan Muse译者 | 风车云马如今云计算已经渗透到IT的各个领域,从应用程序到基础设施无处不在。为了了解IT领导者是如何规划各自企业的云战略,Insider Pro采访了数百名技术决策者。面对炙手可热的云计算&…

Kubernetes Ingress 高可靠部署最佳实践

摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。 简介 在Kubernetes集群中,Ingress是授权入站连接到达集群服务的规则…

容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

摘要: 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark OSS on ACK,允许…

三步走——带你打造一份完美的数据科学家简历|(附件有PPT福利)

摘要: 本文介绍了关于写数据科学家简历的一些技巧,主要包含三个部分,分别为简历前的材料准备,写简历时应注意的地方以及对整个简历的整理。不管你是不是数据科学领域的工作者,本文对于即将求职或找实习的同学而言是一份…

你的目的是什么是谁指使你_电视剧《谁说我结不了婚》第25-27集剧情:魏书帮程璐搞定投资人...

电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25集剧情介绍:程璐向魏书请教感情困扰 田蕾帮徐海峰彻底打垮凯文程璐来找魏书诉苦,小哈最近不但躲着她,还撒谎骗她不在上海&…

纪·阿晶的首次AWS之行!

戳蓝字“CSDN云计算”关注我们哦!这是阿晶的第一次AWS之行,在上海,2019世界人工智能大会。一年前,同样在上海,AWS成立其亚太地区首个人工智能研究院。还记得当时振奋人心的官宣:AWS上海人工智能研究院将重点…

阿里云与WPS深度合作,开放数据处理生态

摘要: 在3月28日举行的2018云栖大会-深圳峰会上,阿里云与金山办公达成深度合作,WPS在线预览与格式转换能力落地阿里云。标志着阿里云存储开放的数据湖体系不但面向计算引擎,还面向应用开放。 在3月28日举行的2018云栖大会-深圳峰会…

interp1函数matlab_【原创】干货:用MATLAB搭建电化学单粒子模型(中)

上一期讲到Eq.1中所需要求解的参数,我们已经获取了3个,需要注意的是,上期所获得的电化学反应过电势已经转化成时间的函数,接下来只需要求正负极的固相电势随时间的变化就可以了。Eq.1 固相电势与材料的soc或体相锂离子浓度…

官宣!CSDN“2019 优秀 AI、IoT 应用案例 TOP 30+”重磅发布!

戳蓝字“CSDN云计算”关注我们哦!作者 | 王金许、伍杏玲责编 | 屠敏出品 | CSDN(ID:CSDNnews)「Talk is cheap. Show me the case.」在 AI、IoT 技术当道的时代下,空泛的概念炒作永远说服不了抱有质疑的消费者。如今随…

用html设计一个logo页面_如何设计一个Logo?——Bobu Africa旅行品牌Logo设计

负空间Logo听起来很牛逼,但是到底要怎么做?Bobu Africa是一家位于肯尼亚,主营泛非洲奢侈旅行与工艺品销售的品牌。Africa当然指的是其主要业务范围——非洲。Bobu则是猴面包树Baobabu的一种本地化称谓。树形Logo通常的设计方式大概是写实剪影…

云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

摘要: 使用过开源HBase的人都知道,运维HBase是多么复杂的事情,集群大的时候,读写压力大,配置稍微不合理一点,就可能会出现集群状态不一致的情况,糟糕一点的直接导致入库、查询某个业务表不可用,…

来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle

执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想,我们首先应…

linux 升级mysql版本 lamp_Linux 下安装 LAmp及配置

第一步:配置防火墙(默认情况下,端口80和3306是拒绝访问的,在防火墙上进行配置):vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下两句)-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许8…

阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统

摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务。 背景 视频直播间作为直播系统对外的表现形式,在整个系统中处于核心地位。通常除了视频直播窗口外&#…

mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

报错如下: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sss.month_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by问题出现…