今日头条这么厉害,被称为宇宙条!到底用了什么牛逼技术!

article/2025/4/22 6:05:51

作者 | 钟镇刚

链接:blog.csdn.net/mucaoyx/article/details/84498468

今日头条创立于2012年3月,到目前仅几年时间。从十几个工程师开始研发,到上百人,再到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 种模式上都有所应用。

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.【12张手绘图】我搞懂了微服务架构!

7.滴滴业务中台构建实践,首次曝光

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?

点击「阅读原文」加入我们的小圈子!


http://chatgpt.dhexx.cn/article/xoBo6py5.shtml

相关文章

宇宙条一面:十道经典面试题解析

前言 大家好,我是捡田螺的小男孩。(星标置顶田螺哥,学起来!) 有位朋友面试了宇宙条,后端方向。整理了这几道面试真题以及答案,如有错误,欢迎大家留言区讨论哈。金九银十冲刺&#x…

入职宇宙条之后,我知道了这些

本文分为字节跳动的工作和生活总结,带你近距离了解字节跳动! 生活总结 吃 字节跳动公司有自己的食堂,小编在二楼办公,食堂在负一层。公司为所有员工提供免费三餐。 早餐的大概时间是9:00到10:30,所以早上到公司太早&am…

C语言特殊图案之菱形的三种方法---今日笔记

小小白第一次写CSDN的博客啦! 第一次写正式的博客,大家凑合看吧,有什么问题可以留言哦。 题目:输出一个如下菱形图 方法一 ,利用循环控制输出。 解题思路:计算出每行包括7个字符,其中有的是空…

c语言输出半个菱形

1.在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** * 分析: 看到这个图形我们就想到这是菱形的一半,但是又跟菱形的输出方法不太一样,在此无需考虑空…

C语言输出n行* (打印菱形)

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include <Windows.h> int main(void) {//首先分析&#xff1a;用户输入的是奇数还是偶数//其次分析&#xff1a;选择偶数的话选择在上部分还是下部分少打一行//上…

C语言打印输出菱形(一次成型,不分上下部分)

代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> main() {int a,b,i, j;i -3;for (i-3; fabs(i)<4;i){a fabs(i);//a会经历3,2,1&#xff0c;0,1&#xff0c;2,3对应空格数量while (a>0){printf(" ");a--;}b(7-(2* f…

打印九行菱形php,c语言打印菱形

c语言打印菱形 C语言是一门面向过程的计算机编程语言&#xff0c;在初学中我们都是以命令行的方式运行c程序&#xff0c;下面看看如何编写一个c程序&#xff0c;在命令行中输出菱形吧。 推荐课程&#xff1a;C语言教程 源代码为&#xff1a;#include void main() { int n 6; i…

c语言输出菱形图案

菱形图案 #include <stdio.h> int main() {int N;int i,j,k;while(~scanf("%d",&N)){//前N1行for(i1; i<N1; i)//1~N1行{for(j1; j<N-i1; j)//第一次i时N个空格&#xff0c;第二次i时N-1个空格......{printf(" ");//输出空格}for(k1; k<…

C语言打印菱形超详细版本,逐句解析

c语言打印菱形图案_small_planet的博客-CSDN博客_打印菱形图案c语言 首先感谢上面的大佬给我的启示&#xff0c;本文是在上面大佬的版本下进行的优化。 在屏幕上输出以下图案&#xff1a; * *** ***** ******* ********* *********** ************* **…

vuex原理以及实现

vuex官方文档 Vuex是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 每一个 Vuex 应用的核心就是 store&#xff08;仓库&#xff09;。“sto…

Vuex①(简介、原理)

文章目录 什么是VuexVue版求和案例Vuex的工作原理 什么是Vuex Vuex&#xff1a;专门在 Vue 中实现集中式状态&#xff08;数据&#xff09;管理的一个 Vue 插件&#xff0c;对 vue 应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&#xff0c;也是一种…

Vuex介绍 及 工作原理

Vuex介绍 及 工作原理 概念&#xff1a;专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff0c;对vue应用中的多个组件的 共享 状态进行集中式的管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任…

vuex原理解析并实现一个简单的vuex

vuex的作用 官方 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 个人理解 简单来说当我们使用 vue 进行项目开发的时候往往会遇到多个组件共享状态的情况…

VueX原理解析以及实现一个简单的Vuex

前言 前端以前是没有状态管理的&#xff0c;直到Fackbook提出一个叫Flux的概念&#xff0c;才有了状态管理。 以前前端是通过MVC模式管理代码&#xff0c;但后来我们使用例如Vue、React、Angular这类通过声明式开发的框架&#xff0c;发现状态很难管理&#xff0c;容易出现状…

Vuex的基本概念和工作原理

详细参见Vuex官网 &#xff1a;Vuex 是什么&#xff1f; | Vuex 什么是Vuex 官网中说道Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 什么情况使用Vu…

vuex 工作的原理

描述 vuex 是vue的状态管理工具&#xff0c;是通过全局注入store对象&#xff0c;来实现组件间的状态共享 vuex的构成 1&#xff09;state state是存储的单一状态&#xff0c;是存储的基本数据。 2&#xff09;Getters getters是store的计算属性&#xff0c;对state的加工&a…

vuex工作原理详解

前言 vuex作为vue官方出品的状态管理框架&#xff0c;以及其简单API设计、便捷的开发工具支持&#xff0c;在中大型的vue项目中得到很好的应用。作为flux架构的后起之秀&#xff0c;吸收了前辈redux的各种优点&#xff0c;完美的结合了vue的响应式数据&#xff0c;个人认为开发…

Vuex配置及Vuex原理图分析,简单明了,一遍就明白

配置Vuex npm i vuex3 或npm i vue4 因为是Vue2 使用的是Vuex3 版本 Vue3使用的是Vuex4版本 根据使用的脚手架而定 然后导入Vuex 代码如下 专门设置一个文件夹用来 放vuex 设置 三个属性 // 该文件是Vuex 核心store// 引入Vuex import Vue from vue import Vuex from vuex …

vuex工作原理与流程

vuex工作原理与流程 Vue组件&#xff08;action里面的dispatch )--> actions(commit方法&#xff09; -->mutations&#xff08;Mutate&#xff09;--> state&#xff08;getter&#xff09; -->store更新所有调用vuex的组件&#xff08;Vue Component组件&#x…

Vue知识点整理(五)- vuex(1)- Vuex简介、Vuex工作原理、搭载Vuex环境、求和案例

目录 一、vuex简介 1.1 vuex是什么 1.2 什么时候使用Vuex 二、Vuex工作原理图 2.1 官方vuex工作原理图 2.2 Vuex工作流程 三、搭建Vuex环境 3.1 安装 3.2 引用Vuex 四、案例练习 - 求和案例 4.1 Count.vue 4.2 App.vue 4.3 index.js 一、vuex简介 1.1 vuex是什么…