Feed架构介绍
最后更新于:2022-04-01 03:15:32
> 原文出处:http://weibo.com/p/1001643877261186063112
> 作者:胡忠想[@古月中心相心](http://weibo.com/n/%E5%8F%A4%E6%9C%88%E4%B8%AD%E5%BF%83%E7%9B%B8%E5%BF%83)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aee426e8.jpg)
微博作为当今中国最大的社交媒体平台,每天都有上亿人访问。而Feed作为微博最为核心的功能,每天有高达数十亿的请求,高峰期每秒的请求量上万。如何设计高可用的Feed系统,来应对如此高并发的访问,极具挑战。
下面,我们将具体探讨微博Feed系统的架构,希望通过这次讲解,大家能够掌握微博Feed系统架构的基本知识。
# 大纲
[TOC=2,2]
## 一、初探Feed-What is feed?
从广义上讲,Feed是指为满足用户以某种形式持续获得更新信息的需求而提供的格式标准的信息出口。
### **1、****PC Feed**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aee61bb9.jpg)
### **2、mobile feed**
微博体系中,Feed是指用户通过关注关系,聚合好友最新微博以供自己消费的信息服务,其中也包括分享微博。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aeea07c3.jpg)
### **分享**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aeed427f.jpg)
### **倾听**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aeef39da.jpg)
### **看新闻**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aef28f88.jpg)
### **围观**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66aef5327a.jpg)
## 二、Feed业务体系
### **1、微博**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66af488e56.jpg)
### **2、page**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66af589121.jpg)
### **3、Card**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66afb307ca.jpg)
### **4、计数器**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66afbc03af.jpg)
### **5、未读数、话题、分组、转评赞、广告和趋势**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66afcbd8b5.jpg)
## 三、Feed系统架构设计
### **1\. 如何设计一个高可用的Feed系统?**
* 如何存储用户发表的微博
* 如何聚合关注用户发表的微博
### 2\. Feed存储
**Feed特征**
* 每天发博量大:上亿条
* 发博峰值高:几万/s
* 并发访问量大:几万/s
* 访问热点集中:最近三天占99%
**存储选型**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66afd3917f.jpg)
**存储特点**
* 持久化:MySQL、Redis、HBase
* 并发读QPS:几百万/s:Memcached、Redis
* 最近三天热点数据:Memcached
**实现方案 Memcached+MySQL**
Memcached存储最近三天热点数据、MySQL存储全量数据
### 3、Feed存储-MySQL
**分库分表**
* 按访问用户维度hash来分库
* 按访问时间维度来分表
**部署形式**
* 一主多从
* 读写分离
**HA**
* 主从机制、自动切换
* backup离线灾备
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b025f692.jpg)
### 4、Feed存储-Memcached
**高可用性架构**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b028e58b.jpg)
**业务架构**
* mvd:存储用户最近15天50条。
* mvl:存储用户最近200条。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b02b3842.jpg)
### 5、Feed聚合
如何聚合关注用户的微博?
**拉模型**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b02d228b.jpg)
**优缺点**
* 优点:架构简单、一致性好、写入过程开销小
* 缺点:写少读多,网络开销大,资源读取量大
**推模型**
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b0307877.jpg)
**优缺点**
* 优点:下行网络开销小,资源成本低
* 缺点:写入成本较高,资源写瓶颈高
## 四、未来
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-14_55f66b032bf32.jpg)
**业务发展**
* 分发控制
* 智能Feed
* 实时反馈
**架构发展**
* 存储架构
* 消息架构
* 可插拔
* cell模型
## 作业
设计一个简化的Feed系统。
– 10亿用户,每天发表1亿条微博。
– 平均每秒500次feed请求,平均每个人关注10个用户。
– 平均每秒20000次feed请求,平均每个人关注200个用户。
– 针对上面两种情况,分别设计feed系统,要求给出存储选型和对应的机器数量。
**------------------新兵训练营简介**------------------
微博平台新兵训练营活动是微博平台内部组织的针对新入职同学的团队融入培训课程,目标是团队融入,包括人的融入,氛围融入,技术融入。当前已经进行4期活动,很多学员迅速成长为平台技术骨干。
微博平台是非常注重团队成员融入与成长的团队,在这里有人帮你融入,有人和你一起成长,也欢迎小伙伴们加入微博平台,欢迎私信咨询。
**------------------讲师简介**------------------
胡忠想,微博名[@古月中心相心](http://weibo.com/n/%E5%8F%A4%E6%9C%88%E4%B8%AD%E5%BF%83%E7%9B%B8%E5%BF%83),目前任职于新浪微博平台研发及大数据部,主要负责微博 Feed 策略相关工作,曾先后参与微博 Feed 存储、微博计数器、微博阅读数等重大业务产品的开发。2012年3月份毕业于北京航空航天大学计算系,同年4月份,加入新浪微博并工作至今。业余爱好户 外,曾徒步过贡嘎、雨崩,攀登过四姑娘三峰。新兵训练营第一期学员。