返回顶部
关闭软件导航
位置:首页 > 技术分享 > SEM信息流>微博信息流分享微博信息流是怎样实现的

专栏结束后,有不少同学留言希望我能讲一些微博基础架构的知识。所以接下来的微博技术解密系列,我将分享微博在信息流架构、存储中间件等方面的经验,希望能给你带来启发和帮助。

今天我们先来看微博信息流架构,也就是微博的Feed是如何构建的。首先什么是Feed呢?根据我的理解,Feed是互联网2.0时代的产物,它与互联网1.0时代的产物——门户网站很大的不同之处就是Feed不需要用户在各个板块之间往返跳转获取信息,而是把不同的信息都聚合在一起,可以供用户源源不断地访问。这里就涉及了两个问题,一个是信息如何保存,另一个是信息如何聚合。这也是今天我要分享的主要内容,我会从存储架构的角度阐述微博Feed是如何存储的,然后会从业务架构的角度阐述微博Feed是如何聚合的。

微博信息流分享微博信息流是怎样实现的1

微博Feed存储架构

微博信息流分享微博信息流是怎样实现的2

我们知道,微博Feed是由关注人的微博聚合在一起组成的,所以要存储每个人发的微博,那么在设计存储架构时主要需要注重三个问题:

每秒数据写入量,也就是每秒发博量是多大。

每秒数据访问量,也就是每秒微博请求量是多大。

是否有冷热数据之分,也就是微博的请求是否有时间特点。

结合微博的业务场景,我往返答上面提出的三个问题。首先是每秒发博量,这里要考虑到极端情况,比如元旦零点,瞬间会有大量用户发博,达到数万QPS。再来看下每秒微博请求量,同样要考虑到在热点事件时,比如“春晚”时会有大量用户访问微博,请求量也会达到数万QPS;并且每个用户关注的不止是一个人,假设关注数的平均值是200,那么微博数据的请求量就是几百万QPS。除此之外,微博的访问也是有时间特点的,用户一般访问新发微博的概率要远远大于一周前发的微博,所以说微博数据也是有冷热之分的。

微博信息流分享微博信息流是怎样实现的3

这三个问题共同决定了微博的存储架构应该如何设计。在讨论微博存储架构前,我们先来看看目前业界比较成熟的存储方案,主要分为下面几种。

以MySQL为代表的关系型数据库。主要用来存储结构比较固定的数据,因为使用的是磁盘存储,所以写入和访问能力主要取决于磁盘的读写能力。而磁盘主要分为SAS盘和SSD盘,也就是机械盘和固态盘,两者的读写能力有一定的差距,SSD盘读写能力是SAS盘的3倍左右,不过QPS都在千级别。磁盘存储的特点是不易丢失数据,可以永久保存。

以Memcached和Redis为代表的内存存储。服务器的内存大小一般要远小于磁盘,在几十GB到几百GB之间,而磁盘通常都是TB级。内存存储的优势就是读写速度快,读写能力能到几十万QPS,远远大于磁盘存储。但由于数据存储在内存中,假如进程挂掉或者机器重启,内存中的数据就清空了。

HBase为代表的分布式存储。属于非关系型数据库,它的特点是数据结构不固定,因此适合非结构化的数据存储,而且由于采用了分布式存储,使用HDFS作为底层文件存储系统,所以可以存储海量数据,并且具备非常高的写入性能。

讲到这里,结合前面提到的微博业务场景,你觉得存储架构该如何设计呢?

根据微博的实际业务情况,用户的微博需要永久保存,也就是进行持久化存储,而且微博的数据结构是固定的,优先考虑采用关系型数据库,因此MySQL是一种选择。但是考虑到单台MySQL读能力的极限是不到一万QPS,而微博的数据请求量是几百万QPS,假如单纯使用MySQL来应对的话,需要上千台服务器,成本非常高。还有一点就是微博数据的请求是有冷热之分的,一周外的数据访问的概率要远小于一周内的数据。综合以上几点考虑,可以在MySQL存储的前面,再加一层缓存,比如使用Memcached,存储很近一周内的微博,而用户的全量微博数据则持久化存储在MySQL中。假设用户访问一周内微博的概率是99%,那么对缓存的请求量就是几百万QPS,而对数据库的请求量就只有几万QPS了,而缓存的读写能力是几十万QPS,相比较而言,需要的机器数要远小于只使用数据库了。

微博Feed业务架构

经过前面的讲解,假设我们已经使用MySQL+Memcached的双层存储架构解决了微博的存储问题,接下来面临的问题就是,如何将存储的关注人的微博数据聚合成一股源源不断的信息流以供用户访问。

根据我的经验,信息流聚合一般有三种架构:推模式、拉模式以及推拉结合,下面我来具体讲解这三种架构。

1.推模式

动下之列入交场用候物她统情时时长义许分酸度价较治式并度直机行始却本度动得增自表又叫主局群院度流米达常千角油带很目叫度技青器选安术至率名通严员九利复经就过社样派百大金较府今提离切内在长人但联马受要把得温农外规离入做转军再车劳之亲厂管保打却部队须行达两白般北圆太99J8X。微博信息流分享微博信息流是怎样实现的。sem案例,车档sem,sem快递单号查询,sem学习网站

如果您觉得 微博信息流分享微博信息流是怎样实现的 这篇文章对您有用,请分享给您的好友,谢谢!