大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据。
1 初始阶段的网站架构
大型网站都是从小网站发展而来,也是从小型网站架构逐步演化而来。
此时应用程序、数据库、文件等所有资源都在一台服务器上。
2 应用服务和数据服务分离
随着网站的发展,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时需要将应用和数据分离。
分离后整个网站使用三台服务器:应用服务器、文件服务器和数据库服务器。
- 应用服务器需要处理大量业务逻辑,因此需要更快更强大的 CPU
- 数据库服务器需要快速的磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存
- 文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘
应用数据分离后,不同特性的服务器承担不同的服务角色,网站的并发能力和数据存储空间得到了很大改善。
3 使用缓存改善网站性能
网站访问特点和现实世界的财富分配一样遵循二八定律:80% 的业务访问集中在 20% 的数据上。既然大部分的业务访问集中在一小部分数据上,那么可以把这一小部分数据缓存在内存中,减小数据库访问压力,提高整个网站的访问速度。
网站使用的缓存可分为两种
- 本地缓存:访问速度快,但受应用服务器内存限制,缓存数量有限
- 远程分布式缓存:可使用集群方式部署,使用大内存的服务器作为专门的缓存服务器
4 使用应用服务器集群改善网站的并发处理能力
使用集群是解决网站高并发、海量数据问题的常用手段,通过增加服务器分担原来服务器的访问存储压力。
对网站架构而言,只要 能通过增加一台服务器的方式改善负载压力,就可以用同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。
通过负载均衡调度器,可将来及用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上。
5 数据库读写分离
网站使用缓存后,绝大部分的读操作可以不通过数据库就能完成,但仍有一部分读操作(缓存不命中、缓存过期)和全部的写操作都需要访问数据库。
目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能实现读写分离。
应用服务器在写数据时访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据时,就可以通过从数据库获取数据。
文章内容摘抄自《大型网站技术架构 - 核心原理与案例分析》
网友评论