『今日头条』字节跳动的技术架构


字节跳动创立于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台左右 。 其中 , 用户推荐模型包括以下维度:
  • 用户订阅
  • 标签
  • 部分文章打散推送
此时 , 需要每时每刻做推荐 。
3、新用户的“冷启动”
****会通过用户使用的手机 , 操作系统 , 版本等“识别” 。 另外 , 比如用户通过社交帐号登录 , 如新浪微博 , 头条会对其好友 , 粉丝 , 微博内容及转发、评论等维度进行对用户做初步“画像” 。
分析用户的主要参数如下:
  • 关注、粉丝关系
  • 关系
  • 用户标签
除了手机硬件 , ****还会对用户安装的APP进行分析 。 例如机型和APP结合分析 , 用小米 , 用三星的和用苹果的不同 , 另外还有用户浏览器的书签 。 头条会实时捕捉用户对APP频道的动作 。 另外还包括用户订阅的频道 , 比如电影 , 段子 , 商品等 。
4、推荐系统
推荐系统 , 也称推荐引擎 。 它是****技术架构的核心部分 。 包括自动推荐与半自动推荐系统两种类型:
1) 自动推荐系统
  • 自动候选
  • 自动匹配用户 , 如用户地址定位 , 抽取用户信息
  • 自动生成推送任务
这时需要高效率 , 大并发的推送系统 , 上亿的用户都要收到 。
2)半自动推荐系统
  • 自动选择候选文章
  • 根据用户站内外动作
头条的频道 , 在技术侧划分的包括分类频道、兴趣标签频道、关键词频道、文本分析等 , 这些都分成相对独立的开发团队 。 目前已经有300+个分类器 , 仍在不断增加新的用户模型 , 原来的用户模型不用撤消 , 仍然发挥作用 。
在还没有推出***时 , 内容主要是抓取其它平台的文章 , 然后去重 , 一年几百万级 , 并不太大 。 主要是用户动作日志收集 , 兴趣收集 , 用户模型收集 。
资讯App的技术指标 , 比如屏幕滑动 , 用户是不是对一篇都看完 , 停留时间等都需要我们特别关注
5、数据存储


推荐阅读