10.6 大型网站系统架构演化实例 ★★★☆☆
10.6.1 第一阶段:单体架构
起初小型网站只有一台服务器,应用程序、数据库、文件等所有资源都在一台服务器上。
10.6.2 第二阶段:垂直架构
应用和数据分离后整个网站使用3台服务器:应用服务器、文件服务器和数据库服务器。
● 应用服务器需要处理大量的业务逻辑,因此需要更快更强大的处理器速度。
● 数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的磁盘和更大的内存。
● 文件服务器需要存储大量用户上传的文件,因此需要更大容量的硬盘。
10.6.3 第三阶段:使用缓存改善网站性能
使用缓存提高数据访问速度,减少数据库访问压力,缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存
● 本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。
● 远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。
10.6.4 第四阶段:使用服务集群改善网站并发处理能力
使用集群是网站解决高并发、海量数据问题的常用手段。通过增加服务器改善负载压力,实现系统的可伸缩性。
通过负载均衡调度服务器,将用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上。
10.6.5 第五阶段:数据库读写分离
使用主从数据库,主数据库写数据,从数据库读数据,实现读写分离
写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库
为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。
10.6.6 第六阶段:使用反向代理和CDN加速网站响应
CDN和反向代理的基本原理都是缓存,目的都是尽早返回数据给用户, 一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
●CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据。
● 反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给 用户。
10.6.7 第七阶段:使用分布式文件系统和分布式数据库系统
单一服务器无法满足持续增长的业务需求
10.6.8 第八阶段:使用NoSQL和搜索引擎
对数据存储和检索的需求越来越复杂,网站需要采用 一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。
10.6.9 第九阶段:业务拆分
使用分而治之的手段将整个网站业务分成不 同的产品线。
10.6.10 第十阶段:分布式服务
将相同的业务提取出来,独立部署,提供共用业务服务