一、服务进化之路
单服务器阶段
应用程序、数据库、文件都在一台服务器上。
应用服务与数据服务分离
应用程序、数据库、文件分别部署在不同的服务器上。
引入缓存缓解数据库访问压力
使用应用服务器集群提高并发处理能力
数据库读写分离
缓解数据库访问压力
使用反向代理和CDN加速网站响应
使用分布式文件系统和分布式数据库系统
使用NoSQL和搜索引擎
业务拆分
分布式服务
二、名词解释
分层
将系统进行横向分割,例如:分为数据层、服务层、应用层。
分割
对系统进行纵向分割,按照功能切分。
分布式
分层于分割其目的之一就是便于分布式部署,将不同的模块部署到不同的机器上,通过远程调用协同工作。
集群
多台机器部署相同的模块,再利用负载均衡来对外提供服务。
缓存
概念:将数据放在距离计算最近的位置以加快处理速度。
– CDN:在距离用户最近的网络服务商处部署资源。因为用户的请求都>是首先到最近的网络服务商处。–反向代理:在网站的前端部署静态资源,用户请求过来直接在前端获取静态资源,不需要继续转发给应用服务器。
–本地缓存:应用服务器本地缓存着热点数据,无需访问数据库。
–分布式缓存:本地缓存往往无法提供足够空间,因此需要独立的分布式模块。
(缓存的条件:数据访问热点不均匀、数据有合适的有效期)
异步
生产者于消费者模式,各业务之间的调用不是同步的,而是将一个业务操作分为多个阶段,每个阶段之间通过共享数据的方式异步执行进行协调。
优点:
– 提高系统可用性。消费者故障,生产者还是可以向消息队列中生产数据。
– 大家加响应速度。生产者处理完,不需要等待消费者及时响应。
– 消除并发访问高峰。可以将猛增的请求数据放入消息队列中,等待消费者以此处理。
冗余
实现服务高可用,防灾。
自动化
自动化发布:自动化代码管理、自动化测试、自动化安全检测、自动化部署。
运行中:自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级(拒绝部分请求将负载降低到一个安全水平)、自动化资源分配。
安全
密码、手机检验码、验证码、过滤敏感信息。