从 0 开始学微服务
胡忠想
微博技术专家
64644 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

微博技术解密(上) | 微博信息流是如何实现的?

思考题
总结
业务架构
存储架构
微博信息流架构

该思维导图由 AI 生成,仅供参考

专栏结束后,有不少同学留言希望我能讲一些微博基础架构的知识。所以接下来的微博技术解密系列,我将分享微博在信息流架构、存储中间件等方面的经验,希望能给你带来启发和帮助。
今天我们先来看微博信息流架构,也就是微博的 Feed 是如何构建的。首先什么是 Feed 呢?根据我的理解,Feed 是互联网 2.0 时代的产物,它与互联网 1.0 时代的产物——门户网站最大的不同之处就是 Feed 不需要用户在各个板块之间来回跳转获取信息,而是把不同的信息都聚合在一起,可以供用户源源不断地访问。这里就涉及了两个问题,一个是信息如何保存,另一个是信息如何聚合。这也是今天我要分享的主要内容,我会从存储架构的角度阐述微博 Feed 是如何存储的,然后会从业务架构的角度阐述微博 Feed 是如何聚合的。

微博 Feed 存储架构

我们知道,微博 Feed 是由关注人的微博聚合在一起组成的,所以要存储每个人发的微博,那么在设计存储架构时主要需要注意三个问题:
每秒数据写入量,也就是每秒发博量是多大。
每秒数据访问量,也就是每秒微博请求量是多大。
是否有冷热数据之分,也就是微博的请求是否有时间特点。
结合微博的业务场景,我来回答上面提出的三个问题。首先是每秒发博量,这里要考虑到极端情况,比如元旦零点,瞬间会有大量用户发博,达到数万 QPS。再来看下每秒微博请求量,同样要考虑到在热点事件时,比如“春晚”时会有大量用户访问微博,请求量也会达到数万 QPS;并且每个用户关注的不止是一个人,假设关注数的平均值是 200,那么微博数据的请求量就是几百万 QPS。除此之外,微博的访问也是有时间特点的,用户一般访问新发微博的概率要远远大于一周前发的微博,所以说微博数据也是有冷热之分的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

微博信息流架构解密:存储与聚合 本文深入探讨了微博信息流的存储架构设计及业务架构选型。首先介绍了Feed的存储和聚合作为构建微博信息流的基础,强调了存储架构设计在微博业务场景中的重要性。针对微博业务特点,文章提出了在MySQL存储前加入一层缓存的解决方案,以应对数据请求量、降低服务器成本,提高读写能力。此外,还对推模式、拉模式和推拉结合三种信息流聚合架构进行了详细解析,并分析了它们各自的优缺点。最终,文章总结了微博Feed采用了拉模式的业务架构,并介绍了针对关注人数上千的用户进行拉取方式优化的实践经验。 总的来说,本文通过深入浅出的方式,从业务场景出发,结合不同存储方案的特点,提出了解决方案,对于理解微博信息流的技术实现以及在大数据场景下的存储架构设计具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • 招耳
    存储在redis中,然后对微博信息进行聚合操作比较简单吧
    2019-02-15
    2
    6
  • BestWill
    微博Feed是拉模式,如何方便地做分页查询呢?
    2021-10-12
    4
  • 不记年
    采用图数据 Dgraph +redis 的方案
    2020-02-12
    4
  • lvvp
    1. memecached 维护问题 2. memecached 故障你们是如何解决的?
    2019-01-30
    3
  • 极客雷
    关注人分组拉取具体是怎么分的,存储的时候也是分组存储的吗?具体怎么存的?这个最关键的地方写的有点语焉不详
    2021-03-21
    2
  • 0xTang
    推拉结合真是很多架构都会使用到
    2020-03-29
    1
    2
  • 0xTang
    写入是tps,查询是qps
    2019-02-16
    2
    2
  • 旅途
    老师你好 推模式 一条微博为什么要存储多份 存一个外键行么
    2019-12-07
    1
    1
  • 北极的大企鹅
    比较想问的是学完框架后,是先学设计模式还是先学JVM原理,并发与线程安全,然后中间件和架构设计,数据库设计,Linux学习,跨语言学习顺序,这些都是按照什么样的顺序学习的,还有源码阅读顺序
    2019-04-11
    1
  • 码小呆
    memecached 故障如何处理,为何不使用redis来做呢,是历史原因吗,后续又做升级吗
    2023-02-06归属地:广东
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部