对于企业来说网站是企业重要的门户,然而不同企业对于网站服务器托管的方式会随着企业的需求而变化。
一般来说,大型网站都是从小型网站发展而来,初始阶段的网站架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上。
但随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用 3 台服务器,分别是应用服务器、文件服务器和数据库服务器。这 3 台服务器对硬件资源的要求越来越高,它们需要更强大的CPU、更快的磁盘和更大的内存去支撑这些服务器运行。
随着用户的持续增加,网站又会一次面临挑战:数据库压力太大导致整站访问效率再此下降,用户体验受到影响。一个网站,往往大部分的业务访问集中在 20% 的数据上。就拿微博来说,微博请求量最多的肯定是那些***粉丝的大 V 的微博,而几乎没有人去关注那些小号的首页。我们可以利用这个特点,把这一小部分数据先提前缓存在内存中,而不是每次都去数据库读取,这样就可以减少数据库的访问压力,从而提高整个网站的访问速度。网站使用的缓存一般分为缓存到应用服务器或者缓存在专门的分布式缓存服务器。缓存到应用服务器的访问速度快很多,但是受自身内存限制,往往不太适用。远程分布式缓存使用一个集群专门负责缓存服务,当内存不够还可以轻松得动态扩容。
使用应用服务器集群改善网站的并发处理能力使用缓存后,数据访问压力得到了缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器就成了整个网站的效率瓶颈。当一台服务器的处理能力和存储空间不足时,不要尝试去更换更强大的服务器,对大型网站而言,多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种。