2022年新浪微博介绍 .pdf
《2022年新浪微博介绍 .pdf》由会员分享,可在线阅读,更多相关《2022年新浪微博介绍 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、您查询的关键词是:微博发展历程。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。(百度和网页http:/ 设为主页加入收藏帮助| 留言交流| 首页| 主题阅读| tags | 精彩目录| 精品文苑| 会员浏览我的图书馆休闲怡情| 艺术音画美女笑话小游戏壁纸风景健康养生| 健身食疗治病中医减肥经穴亚健康生活情感| 哲理情感家居母婴美食美容百宝箱文教社会| 读书人文历史社会教育职场电脑杨卫华:新浪微博的架构发展历程(转载)秀才 2009 收录于 2011-02-04 阅读数:公众公开原文来源我也要收藏新浪科技讯11 月 16 日下午消息,由新浪微博(http:/)(http: /)
2、主办的中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴。作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展。图为微博平台首席架构师杨卫华演讲。以下为演讲实录:大家下午好, 在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。最晚的一次, 是 12 点多收到一个邮件说想了解一下微博底层是怎么构架的。 很多技术人员对微博的构架非常感兴趣,就是一个明星他有300 万粉丝, 这个技术怎么来实现?今天在这里跟大家分享一下微博的底层机构,让大家对微博的底层技术有更好的了解。另外不管是做客户端、 1.
3、0、2.0、论坛、博客都要考虑架构的问题,架构实际上是有一些共性的。今天我通过讲解微博里面的一些架构,分析一下架构里面哪些共性大家可以参考。首先给大家介绍一下微博架构发展的历程。新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。第一版就是是非常快的,我们可以非常快的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 实现我们的模块。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的
4、问题。我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10 万份,这样就是很简单了, 第一版的架构实际上就是这两行字。 第一颁的技术细节,典型的 LAMP 架构,是使用 Myisam 搜索引擎,它的优点就是速度非常快。另外一个是MPSS,就是多个端口可以布置在服务器上。为什么使用MPSS?假如说我们做一个互联网应用,这个应用里面有三个单元,我们可以由三种部署方式。我们可以把三个单元部署在三台服务器上,另外一种部署模式就是这三个单元部署在每个服务器上都有。这个解决了两个问题,一个是负载均衡,因为每一个单元都有多个结点处
5、理,另外一个是可以防止单点故障。如果我们按照模式一来做的话, 任何一个结点有故障就会影响我们系统服务,如果模式二的话,任何一个结点发生故障我们的整体都不会受到影响的。我们微博第一版上线之后,用户非常喜欢这个产品,用户数增长非常迅速。我们技术上碰到几个问题。第一个问题是发表会出现延迟现象,尤其是明星用户他的粉丝多。另外系统处理明星用户发表时候的延迟,可能会影响到其他的用户,因为其他的用户同一时间发表的话,也会受到这个系统的影响。我们就考虑这个系统怎么改进。首先是推模式,这肯定是延迟的首要原因,我们要把这个问题解决掉。其次我们的用户越来越多,这个数据库表从一百万到一亿,数据规模不一样处理方式是有差
6、别的。我们第一版单库单表的模式,当用户数量增多的时候,它不能满足就需要进行拆分。第二个是锁表的问题,我们考虑的是更改引擎。另外一个是发表过慢,我们考虑的是异步模式。第二版我们进行了模块化,我们首先做了一个层,做了拆分, 最右边的发表做了异步模式。第二个服务层,我们把微博基础的单元设计成服务层一个一个模块,最大是对推模式进行了改进。 首先看一下投递模式的优化,首先我们要思考推模式,如果我们做一下改进把用户分成有效和无效的用户。我们一个用户比如说有一百个粉丝,我发一条微博的时候不需要推给一百个粉丝,因为可能有50 个粉丝不会马上来看,这样同步推送给他们,相当于做无用功。我们把用户分成有效和无效之后
7、,我们把他们做一下区分,比如说当天登陆过的人我们分成有效用户的话,只需要发送给当天登陆过的粉丝,这样压力马上就减轻了,另外投递的延迟也减小了。我们再看数据的拆分,数据拆分有很多方式,很多互联网产品最常用的方法,比如说如可以按照用户的UID 来拆分。 但是微博用户的一个特点就是说大家访问的都是最近的服务器,所以我们考虑微博的数据我们按照时间拆分,比如说一个月发一张表,这样就解决了我们不同时间的惟度可以有不同的拆分方式。第二个考虑就是要把内容和索引分开存放。假如说一条微博发表的地址是索引数据,内容是内容数据。假如说我们分开的话,内容就简单的变成了一种key- value 的方式, key-valu
8、e 是最容易扩展的一种数据。比如说一个用户发表了一千条微博,这一千条微博我们接口前端要分页放,比如说用户需要访问第五页,那我们需要迅速定位到这个记录。假如说我们把这个索引拆分成一个月一张表,我们记录上很难判断第五页在哪张表里,我们需要索引所有的表。如果这个地方不能拆分,那我们系统上就会有一个非常大的瓶颈。最后我们想了一个方法,就是说索引上做了一个二次索引,改变我们还是按照时间拆分,但是我们把每个月记录的偏移记下来,就是一个月这个用户发表了多少条, ID 是哪里,就是按照这些数据迅速把记录找出来。异步处理,发表是一个非常繁重的操作,它要入库、统计索引、进入后台,如果我们要名师资料总结 - - -
9、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 把所有的索引都做完用户需要前端等待很长的时间,如果有一个环节失败的话,用户得到的提示是发表失败,但是入库已经成功。所以我们做了一个异步操作,就是发表成功我们就提示成功,然后我们在后台慢慢的消息队列慢慢的做完。另外新浪发表了一个很重要的产品叫做 MemcacheQ,我们去年做了一个对大规模部署非常有利的指令,就是statsqueue,适合大规模运维。第二版我们做了这些改进之后,微博的用户和访问量并没有停止,
10、还有很多新的问题出现。比如说系统问题,单点故障导致的雪崩,第二个是访问速度问题因为国内网络环境复杂,会有用户反映说在不同地区访问图片、js 这些速度会有问题。另外一个是数据压力以及峰值, MySql 复制延迟、慢查询,另外就是热门事件,比如说世界杯,可能会导致用户每秒发表的内容达到几百条。我们考虑如何改进,首先系统方面循序任意模块失败。另外静态内容,第一步我们用CDN 来加速,另外数据的压力以及峰值,我们需要将数据、功能、部署尽可能的拆分,然后提前进行容量规划。另一方面我们还有平台化的需求,去年11 月我们就说要做开放平台,开放平台的需求是有差异的, Web 系统它有用户行为才有请求,但是AP
11、I 系统特别是客户端的应用,只要用户一开机就会有请求,直到他关闭电脑这种请求一直会不间断的过来,另外用户行为很难预测。系统规模在持续的增大,另外也有平台化的需求,我们新架构应该怎么做才能满足这些需要?我们看一下同行,比如说Google 怎么样考虑这个问题的? Google 首席科学家讲过一句话, 就是一个大的复杂的系统,应该要分解成很多小的服务。比如说我们在G执行一个搜索查询的话,实际上这个操作会调动内部一百多个服务。因此,我们第三版的考虑就是先有服务才有接口最后才有应用,我们才能把这个系统做大。cache 与存储现在我们看一下第三版,首先我们把底层的东西分成基础服务,基础服务里面比如说分布式
12、的存储,还有分层,我们做了一些去中心化、自动化的操作。在基础服务之上有平台服务,我们把微博常用的应用做成各种小的服务。然后我们还有应用服务,这个是专门考虑平台各种应用的需求。最上面我们有API,API 就是新浪微博各种第三方应用都在上面跑。四平台服务和应用服务是分开的,这样实现了模块隔离,即使应用服务访问量过大的话,平台服务不会首先影响。另外我们把微博的引擎进行了改进,实现了一个分层关系。用户的关注关系, 我们改成一个多惟度的索引结构,性能极大的提高。第四个层面就是计数器的改进,新版我们改成了基于偏移的思路,就是一个用户他原来读的一个ID 比如说是10000,系统最系的ID 是 10002 的
13、话,我们和清楚他有两条未读。原来的版本是采用绝对技术的,这个用户有几条未读都是用一个存储结构的话,就容易产生一致性的问题,采用这种偏移的技术基本上不会出错。另外基础服务DB 冷热分离多维度拆分,在微博里面我们是按照时间拆分的,但是一个大型的系统里面有很多业务需要有不同的考虑。比如说私信这个就不能按照时间来拆分,这个按照UID 来拆分可能更简单。然后我们突出存储还做了一个去中心化,就是用户上传图片的速度会极大的提高,另外察看其他用户的图片速度也会极大的提高。另外是动态内容支持多IDC 同时更新,这个是在国内比较新颖的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
14、- - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 下面给大家介绍一下新浪微博怎么样打造一个高性能架构。到目前为止有五千万用户使用新浪微博, 最高发表3000 条以上每秒, 然后一个明星用户发表的话, 会被几百万用户同时读到。 这些问题的本质是我们架构需要考虑高访问量、海量数据的情况下三个问题。易于扩展、低延迟、高可用和异地分布。我们每天有数十亿次外部网页以及API 接口的需求,我们知道微博的特点是用户请求是无法cache 的。因此面对这个需求我们怎么样扩展?几点思路。第一我们的模块设计上要去状态,我们任意一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年新浪微博介绍 2022 新浪 介绍
限制150内