1、前言
最近在看大型网站架构的书籍,书中介绍了大型网站支持扩展性。大概意思就是当服务器出现性能的不足的时,如何调整服务器,用来满足更多的请求。之前对这个扩展概念不是很清楚,仔细看了一下扩展分为水平扩展和垂直扩展两种。今天总结一下服务扩展性的知识点。主要内容为(1)服务器扩展性是什么?为什么需要扩展性,在什么场景下需要考虑服务扩展性?(2)扩展性有哪些实现方式,各自有什么区别,实际工作中如何选择?
2、基本概念
以一个网站的应用场景为例进行讲解。任何一个大型的网站都是从小网站一步一步发展过来的,因此在刚开始的时候,只部署了一台Web服务器,在访问量不多的时候,网站运行的很好。随着访问量越来越多,由于单台Web服务器对外提供的服务有限,此时就容易出现部分用户无法正常访问网站,这个时候就需要考虑如何改进Web服务器的性能。如何做到对现有系统影响最小的情况下,系统功能可以持续扩展或提升性能。首先排除从代码优化角度考虑,如何从服务器扩展考虑。扩展其实就是服务器资源的添加,例如内存资源、CPU资源、磁盘资源等。添加资源后,保证Web服务器可以正常运行。扩展分为水平扩展和垂直扩展两种方式。
垂直扩展:
假设刚开始有一台Web服务器,在使用过程中,发现内存资源不足,当前内存只有16G,正好服务器还有剩余的内存槽可以使用,于是买一根内存条插上即可。
水平扩展:
Web服务器上内存槽都被用完了,没有地方可以扩展内存了,这个时候就需要重新购买一太Web服务器。这个时候就有两台Web服务器对外提供服务了,需要考虑负载均衡。