1.初始阶段的网站架构
大型网站都是由小型网站发展而来,网站架构也是一样。小型网站最开始没有多少人访问,只需要一台服务器就绰绰有余。
2.应用服务和数据服务分离
随着网站业务的发展,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要将应用和数据分离。这时需要三台服务器:应用服务器、文件服务器和数据库服务器,如下图。这三台服务器对硬件的资源要求各不相同:应用服务器需要处理大量的业务逻辑,需要更快更强大的CPU;数据库服务器需要快速检索磁盘和缓存,因此需要更快的磁盘和更大的内存;文件服务器需要存储用户上传的文件,因此需要更大的磁盘。
应用和数据分离之后,不同特性的服务器承担不同的角色,网站的并发处理能力和数据存储空间得到了很大的改善,支持网站业务进一步发展。
3.使用缓存改善网站性能
随着用户逐渐增多,网站又一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验不好,这次就需要对网站架构进一步优化。
网站访问特点同样遵循二八定律:80%业务访问集中在20%的数据上。淘宝买家浏览的商品集中在少部分成交多,评价良好的商品上;百度搜索关键词集中在少部分热门词汇上;只有经常登录的用户才会发微博、看微博,而这部分用户也是占总用户的一小部分(单证信息也是如此)。这样我们就可以把这一小部分数据放入内存中来提高访问效率。
网站用的缓存服务器可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。访问本地缓存要快一些,但是本地缓存受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争内存的情况。远程分布式缓存可以采用集群方式,部署大内存的服务器作为缓存服务器,理论上可以做到不受内存的限制。
使用缓存可以减小数据库访问压力,提高网站的数据访问速度,改善数据库的写入性能。
4.使用应用服务器集群改善网站的并发处理能力
使用了缓存之后,数据访问压力得到了缓解,但是单机的应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器就会成为整个网站的瓶颈。
使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去更换更强大的服务器(这种方式传统行业或许可以,但并不适用于互联网行业)。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问以及存储压力。使用了集群之后同时也需要增加一台负载均衡调度服务器来进行请求分发。
5.数据库读写分离
网站在使用缓存之后,使得绝大部分读操作都可以不通过数据库就可以完成,但是仍有小部分读操作(缓存没有命中、缓存过期)和全部的写操作都访问数据库,因此在网站的用户到达一定规模之后,数据库因为负载压力过高而成为网站的瓶颈。
可以使用数据库主从的方式来改善这一问题:读操作在从库执行,写操作在主库执行然后将数据同步到从库。
为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使得数据读写分离对应用透明。
原文地址:https://www.cnblogs.com/sleepy-goblin/p/10139661.html