首页 > 代码库 > 服务的扩展性

服务的扩展性

1、前言

  最近在看大型网站架构的书籍,书中介绍了大型网站支持扩展性。大概意思就是当服务器出现性能的不足的时,如何调整服务器,用来满足更多的请求。之前对这个扩展概念不是很清楚,仔细看了一下扩展分为水平扩展和垂直扩展两种。今天总结一下服务扩展性的知识点。主要内容为(1)服务器扩展性是什么?为什么需要扩展性,在什么场景下需要考虑服务扩展性?(2)扩展性有哪些实现方式,各自有什么区别,实际工作中如何选择?

2、基本概念

  以一个网站的应用场景为例进行讲解。任何一个大型的网站都是从小网站一步一步发展过来的,因此在刚开始的时候,只部署了一台Web服务器,在访问量不多的时候,网站运行的很好。随着访问量越来越多,由于单台Web服务器对外提供的服务有限,此时就容易出现部分用户无法正常访问网站,这个时候就需要考虑如何改进Web服务器的性能。如何做到对现有系统影响最小的情况下,系统功能可以持续扩展或提升性能。首先排除从代码优化角度考虑,如何从服务器扩展考虑。扩展其实就是服务器资源的添加,例如内存资源、CPU资源、磁盘资源等。添加资源后,保证Web服务器可以正常运行。扩展分为水平扩展和垂直扩展两种方式。

  垂直扩展:

    假设刚开始有一台Web服务器,在使用过程中,发现内存资源不足,当前内存只有16G,正好服务器还有剩余的内存槽可以使用,于是买一根内存条插上即可。

  水平扩展:

    Web服务器上内存槽都被用完了,没有地方可以扩展内存了,这个时候就需要重新购买一太Web服务器。这个时候就有两台Web服务器对外提供服务了,需要考虑负载均衡。

服务的扩展性