新浪微博的架构
Last updated
Last updated
系统分为三个层次:
最下层是基础服务层,提供数据库、缓存、存储、搜索等数据服务,以及其他一些基础技术服务
中间层是平台服务和应用服务层
最上层是API和新浪微博的业务层,各种客户端(包括Web网站)和第三方应用,通过调用API集成到新浪微博的系统中,共同组成一个生态系统。
这些被分层和分割后的业务模块与基础技术模块分布式部署,每个模块都部署在一组独立的服务器集群上,通过远程调用的方式进行依赖访问。
在新浪微博的早期架构中,微博发布使用同步推模式,用户发表微博后系统会立即将这条微博插入到数据库所有粉丝的订阅列表中,当用户量比较大时,特别是明星用户发布微博时,会引起大量的数据库写操作,超出数据库负载,系统性能急剧下降,用户响应延迟加剧。
后来新浪微博改用异步推拉结合的模式,用户发表微博后系统将微博写入消息队列后立即返回,用户响应迅速,消息队列消费者任务将微博推送给所有当前在线粉丝的订阅列表中,非在线用户登录后再根据关注列表拉取微博订阅列表。
由于微博频繁刷新,新浪微博使用多级缓存策略:
热门微博和明星用户的微博缓存在所有的微博服务器上
在线用户的微博和近期微博缓存在分布式缓存集群中
对于微博操作中最常见的“刷微博”操作,几乎全部都是缓存访问操作,可以获得很好的系统性能。
为了提高系统的整体可用性和性能,新浪微博启用了多个数据中心。
这些数据中心既是地区用户访问中心,用户可以就近访问最近的数据中心以加快访问速度,改善系统性能;
同时也是数据冗余复制的灾备中心,所有的用户和微博数据通过远程消息系统在不同的数据中心之间同步,提高系统可用性。