拆书-人人架构师-分布式服务
Introduct
本章讲解了互联网场景下大型网站架构的演变过程、服务化的一些必备知识,以及如何使用流行的RPC和服务治理框架Dubbo帮助企业落地服务化架构。
架构演变
网站由小到大的过程,几乎都经历了单机架构、集群架构、分布式架构。伴随着业务系统架构一同演变的还有各种外围系统和存储系统,比如关系型数据库的主从架构、分库分表改造、从本地缓存过度到分布式缓存等。
- 第一阶段
对于访问规模相对较小的情况下(目前没有具体量化数据),演化过程如下

- 网站初期,应用程序、数据库、文件等资源都部署在同一台服务器。此阶段一般为试行阶段,用户少,请求量小,可以节省资源。 架构一般采用LNMP实现:Linux服务器操作系统,使用php开发,使用nginx作为web服务器,数据库采用mysql关系型数据库。
- 随着业务发展,越来越多的用户访问会导致系统性能越来越差,越来越多的数据导致存储空间不足。这时可以将应用和数据分离:应用服务器、文件服务器、数据库服务器。 这三台服务器对硬件资源否要求不同,应用服务器:处理大量业务逻辑,需要强大的cpu;数据库服务器:快速的磁盘检索和数据缓存,需要更快的硬盘和更大的内存;文件服务器:存储大量用户上传的文件,需要更大的硬盘。 风险:单点故障 此时系统已经有一定的流量,如果出现应用服务器或者数据库宕机,将导致服务不可用和数据的丢失,这对于刚起步的网站来说是致命的。 措施:冗余 服务器备份:冗余一台应用服务作为备份服务器,使用keepalive进行主备服务器健康监测和服务切换。 数据库备份:每周全量备份,每天的增量备份。
- 减小数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能
- 本地缓存:缓存热点数据,减少数据库访问。
- DB读写分离,改善数据库的负载压力。
- 应用服务器集群改善并发处理能力。通过将用户的请求按照一定的策略分发到集群中的一个服务器,从而提供更强大的并发处理能力。Nginx服务器可支持负载均衡的能力。
- CDN和反向代理的基本原理也是缓存:加速用户访问速度,减轻后端服务器的负载压力。
- 第二阶段
引入分布式和集群,会使得网站难度和复杂度提升很高,当网站规模、业务、存储达到一定程度后,演化过程如下:
