最近在看李智慧的《大型网站技术架构 核心原理与案例分析》,该部分内容是在学习过程中的整理,方便以后重温。

一、大型网站架构演化

1.1 大型网站系统的特点

高并发、流量大、高可用、用户多、需求迭代快。

1.2 大型网站系统的演化发展历程

大型网站的技术挑战主要来自庞大的用户、高并发的访问、和海量的数据。因此大型网络架构主要解决处理的就是类似的问题。
大型网站都是由小型网站发展而来,访问量少,可以单台服务器就搞定。随着业务发展,将应用和数据进行分离,不同特性的服务器承担不同的服务角色:应用服务器需要处理大量的业务逻辑(需要更快更强大的CPU),数据库服务器需要快速磁盘检索和数据缓存(需要更快的硬盘和更大的内存)等等。

1. 应用服务与数据服务分离
2. 使用缓存改善数据库压力

网站访问的特点遵循二八定律:80%的业务访问集中在20%的数据上。为了减少数据库的压力,可以将一部分数据缓存在内存中。
网站使用的缓存可以分为两类:
 1. 本地缓存
 本地缓存是指在应用服务器内存的缓存数据。本地缓存访问速度更快一些,但是受应用服务器的内存限制。
 2. 远程缓存
 远程缓存是指在专门的分布式缓存服务器上的缓存数据。远程分布式缓存可通过集群,部署大内存服务器作为专门的缓存服务器。

3. 使用服务器集群改善并发处理能力

增加服务器是改善系统并发处理能力的最简单的做法,通过调用负载均衡,可将来自用户的访问请求分发到应用集群的任何一台服务器上。

4. 数据库读写分离改善数据库负载压力

数据库的读写分离本质上是设置主备两个库。主库负责写数据,备库负责读取数据。通过设置两个数据库的主从关系,可以将主库的数据更新同步的备库上可以改善数据库负载问题。

5. 使用CDN和反向代理加速网站响应

使用CDN(content delivery network)和反向代理的目的是尽早返回数据给用户,一方面加快用户访问速度,一方面减轻后端服务器的负载压力。

6. 使用分布式系统和分布式数据库系统

分布式系统是将原有应用系统的共用的业务提取出来,独立部署。而应用系统只需要管理用户界面。
分布式数据库系统是网络数据库拆分的最后手段。网站最常用的数据库拆分手段是:业务拆库,将不同的业务数据库部署在不同的物理服务器上。

7. 使用NoSQL和搜索引擎

NoSQL和搜索引擎对可伸缩的分布式特性都具有更好的支持。通过一个统一数据访问模块访问各种数据,减轻应用程序管理数据源的麻烦。