前面分享了高并发系统(高并发系统设计实战经验)以及高可用系统(高可用系统设计)的解决方案,今天我们再来看另一个很重要的模块,可扩展系统,系统的可扩展性同样是架构所需要重点考虑的一个设计点。有彩蛋有彩蛋有彩蛋
顾名思义,可扩展即是通过增加相应的机器来达到抗住系统的突然流量激增的目的。所以,今天我们来看看该怎么设计一个可扩展的系统,目的是,在公司运营突然大促或者我们应用曝光量更火爆的时候,我们能够从容的端着咖啡去应对,而不是被产品逼着问服务怎么又停了。
1,增加机器真的简单吗
我们有时在项目架构评审的时候,有些同学提到的最多的就是,我们服务要多部署几台服务器吧,万一扛不住线上并发咋办。提到这个的问题证明出发点是好的,是想将服务后续能支持横向扩展。其实,我们在设计可扩展系统或者服务时不能只靠自己经验和直觉的,而是要站在我们系统的本身以及预估后续系统持续变化点。比如,我们之前有个酒店预订的系统,一直运行的很稳定,有一次的大节假日,流量突然增加到了10倍,我们的MySQL从库达到了读瓶颈,最后通过扩展从库解决查询慢的问题。
之所以提到这个小案例,是想告诉大家,作为架构师的你不要只看应用级别的扩展,要有整个全局的扩展思路。
那么,是不是通过多加机器就一定能解决流量激增的问题呢?答案是否定的,像