通过改变网站架构来解决网站性能瓶颈
1、网站架构的发展是在用户量不断增长的前提下不断演进的。小型网站最开始访问压力不大只需要一台服务器就可以提供所有的服务。此时的架构是最简单的,大概如下图所示。可以看到,应用程序、文件和数据库都在同一台服务器。
2、随着网站业务的发展,一台服务器逐渐不能满足需求。访问量越来越大导致服务器性能越来越差,数据越来越多导致存储空间不足,这时,需要把应用服务器和数据服务器拆分开来。此时网站架构大概如图。
3、网站的访问大致遵循一个著名的二八定律:80%的访问集中在20%的数据上。因此,当访问量逐渐增大,将经常访问的数据缓存起来,是一个很有效的提升网站性能的方法。而缓存,有分为两种,一种是服务器的本地缓存,另一种是远程分布式缓存。此时的网站架构大概如图。
4、当网站的访问量继续增大,单台应用服务器已经不能处理如此庞大的请求,这时,仅仅更换性能更优的服务器是不能从根本上解决问题的。这时候,我们经常说的服务器集群,就派上用场了。即多台应用服务器,在负载均衡调度服务器的统一调配下,共同处理网站的访问。此时的网站架构如图。
5、网站使用缓存后,大部分数据都可以直接从缓存获得,但仍有部分缓存不能命中或过期的数据和数据库的写操作是无法绕过数据库操作的。数据库会逐渐因为负载过高而成为网站性能瓶颈。这时,需要采取数据库读写分离的方法来解决数据库的负载问题。此时的网站架构如图。
6、随着网站规模不断扩大,业务规模不断扩展,用户规模也越来越庞大,不同地区的用户,对于网站的访问速度,有着明显的差别。要解决这邗锒凳审个问题,需要用到CDN(Content Delivery Network内容分发网络)和反向代理(服务器端的一中缓存,目的是为了让用户尽可能不经过其他服务直接获得想要的内容)来提高网站整体访问速度。此时网站架构如图。
7、任何单一服务器都无法满足日益增长的业务访问量,应用服务器的性能可以通过继续增加服务器的方法来扩展。数据库和文件将在不久成为网站性能的瓶颈,因此,效仿应用服务的解决办法,通过分布式文件服务器和分布式数据库服务器来解决数据的性能问题。此时网站架构如图。
8、随着网站业务日渐复杂,对数据的检索和存储又成为了让人头疼的问题。搜索引擎技术和NoSQL数据库的出现,让我们能很好的解决这个问题。加入这两项技术后的网站架构如图。
9、大型网站在处理日渐复杂的业务时,经常会把网站中的一个个模块拆分开来,让不同的团队去维护,每个业务模块有一套完整的应用服务器,模块之间通过超链接关联,使网站仍然是一个整体。这就是所谓的业务拆分。这在应对复杂的业务时,优势非常明显。此时网站架构如图。
10、由于坡庥汩赴每个业务模块都需要数据库操作,因此,在业务规模继续扩展的情况下,数据库甚至出现不能正常服务的情况。这时候,很多大型网站采用的办法时服务和应用分离,即将服务独立出来,任何应用用到任何服务时,就去调用该服务,这很好的解决了数据库的问题。此时网站架构如图。这也是目前很多大型网站都在采用的架构,基本可以解决目前所有规模的业务问题,网站架构介绍到此为止,但发展演变仍在继续。