从单服务器架构如何走向微服务的分布式服务架构,业务程度到达哪个程度使用哪个服务架构?
参考《大型网站技术架构》,李智慧著,下面为读书笔记
1 初始阶段
应用程序、数据库、文件等都在一台服务器上
单服务器
2 应用与数据分离
应用服务器需要处理更多的业务逻辑,需要更好的CPU;数据库服务器和文件服务器,需要快速检索磁盘和数据缓存,因此需要更快的硬盘和更大的内存
应用数据分离
3 缓存服务
大部分的业务访问集中在小部分的数据上,如果把这部分数据缓存在内存中,可以减少数据库访问压力,提高整个网站的数据访问速度,改善数据库的写入性能
缓存分为:
- 应用服务器上的本地缓存(本地缓存受限于应用服务器的资源、水平扩展和分布式应用服务器的共享问题)
-
分布式缓存服务器上的远程缓存
缓存服务
4 应用集群
集群是网站解决高并发、海量数据问题的常用手段
集群是网站横向扩展的方案,可以通过不断增加服务器的方式去改善负债压力,应用服务器实现集群是网站可伸缩集群架构中设计较为简单成熟的一种
应用集群
5 数据库读写分离
将数据库实现读写分离以后,可以将数据库操作的锁并发问题带来的压力集中在一台中,不影响大部分的数据库读操作;读写分离主要目的是提高系统吞吐量
同时主数据库数据同步到另一台数据库中。
读写分离架构适用的应用:读操作不要求数据强一致,一般对时延的容忍在秒级以上,如电商应用
数据库读写分离
6 反向代理和CDN加速
CDN和反向代理的基本原理都是缓存。
CDN部署在网络提供商的机房,用户在请求网站服务时,可以从距离自己最近的网络提供商的机房中获取数据;
反向代理部署在网站的机房中,用户访问代理服务器以后,如果代理服务器拥有用户请求的资源,将直接返回给用户。
这样的好处是:
- 数据尽早尽快的返回给用户
- 减轻后端应用服务的压力
同时反向代理还可以做到内网资源的隔离,保护应用服务器后端的服务器网络安全
反向代理和CDN加速
7 分布式文件系统和分布式数据库系统
分布式文件系统和分布式数据库系统
8 业务拆分/分布式服务
随着业务越来越多,需要将每个业务拆分成不同的产品线进行管理,拆成多个应用进行独立部署,这样的好处是:
- 减少应用的逻辑复杂度,避免应用越来越臃肿
- 加快应用的部署
- 适应更小更快的业务变化和需求更替
业务拆分
分布式服务