第一版架构
- 是LAMP架构,优点是可以很快地实现系统,第一版采用推消息模式,假如明星用户有10万粉丝,当用户发表一条微博的时候,把微博消息存成10万份,使用的是MyISAM搜索引擎,优点就是速度很快。
- MPSS,多个端口可以布置在同一个服务器上。
- 假如做一个互联网应用,应用里面有三个单元,可以有两种部署方式。第一种部署方式是把三个单元分别部署在三台服务器上,第二种部署方式是在三台服务器的每台服务器上都部署上这三个单元。推荐第二种部署方式。
- 上面的第二种部署方式解决了两个问题:第一个问题是负载均衡,第二个问题是避免单点故障。负载均衡体现在:每一个单元都有多个节点处理。避免单点故障体现在:任何一个节点发生故障对于整体都不会影响。
第一版架构遇到的问题
- 发表会出现延迟。推模式是出现延迟的首要原因。
- 第一版架构是单库单表,当用户数量激增时,需要拆分。
- 锁表的问题,更换引擎。
- 发表过慢,考虑异步模式。
第二版架构
- 考虑模块化。
- 首先做分层,最底层叫做基础层。
- 然后是服务层,把微博的基础单元设计成服务层的一个一个模块。
- 对数据做拆分。数据的拆分有很多方式,比如按照用户的UID来拆分。这里结合微博的特点:微博用户一般都是查看最近的消息,所以这里可以按照时间来拆分,比如一个月放一张表。
- 数据拆分的第二点需要考虑将内容和索引分开存放,索引和内容分开存放那么数据就会变成key-value的方式,key-value是最容