第二章 大型网站架构模式
- 网站架构模式
- 分层
- 横向维度切分:应用层、服务层、数据层
- 单一职责,上下层依赖调用,分层约束(禁止跨层和逆向调用)
- 分割
- 纵向维度切分:根据业务模块划分
- 高内聚,低耦合
- 分布式
- 分布式应用和服务(复用服务)
- 分布式静态资源(动静分离,如JS, CSS, Logo图片等资源)
- 分布式数据和存储(传统关系数据库和NoSQL产品)
- 分布式计算(移动计算而不是移动数据,如Hadoop及其MapReduce)
- 分布式配置(网站线上服务器配置实时更新)
- 分布式锁(分布式环境下实现并发和协同)
- 分布式文件(基于云存储)
- 集群
- 多台服务器部署相同应用构成集群(至少两台,提高可用性)
- 负载均衡设备共同对外提供服务
- 缓存
- CDN(内容分发网络)
- 网络服务商处
- 缓存静态资源和较少变化且访问量大的数据
- 未经过应用服务器
- 反向代理
- 网站前端架构的一部分
- 缓存静态资源
- 未经过应用服务器
- 本地缓存
- 应用服务器本地
- 缓存热点数据
- 应用服务器直接访问
- 分布式缓存
- 分布式缓存集群中
- 缓存量大
- 应用服务器通过网络通信访问
- 缓存的两个前提条件
- 数据访问热点不均衡
- 数据具有一定的时效性
- 缓存的好处
- 加快数据访问速度
- 减轻后端应用和数据存储的负载压力
- CDN(内容分发网络)
- 异步
- 单一服务器内部多线程共享内存队列
- 分布式系统中多个服务器集群使用分布式消息队列(内存队列的分布式部署)
- 典型的生产者消费者模式
- 好处
- 提高系统可用性
- 加快网站响应速度
- 消除并发访问高峰
- 注意
- 可能对用户体验、业务流程造成影响
- 冗余
- 数据库冷备份
- 数据库热备份(主从分离同步)
- 灾备数据中心
- 自动化
- 发布过程自动化
- 自动化代码管理(版本控制、分支创建合并)
- 自动化测试(测试、报告、反馈)
- 自动化安全检测(静态代码、运行攻击)
- 自动化部署
- 自动化监控
- 自动化报警(关键数据指标异常)
- 自动化失效转移(隔离失效服务器)
- 自动化失效恢复(重启失效服务器并同步数据保证数据一致性)
- 自动化降级(拒绝部分请求、关闭不重要的服务)
- 自动化分配资源(空闲资源分配)
- 发布过程自动化
- 安全
- 密码和手机校验码(身份认证)
- 加密(敏感数据)
- 验证码(机器人程序)
- 过滤(垃圾信息、敏感信息)
- 风险控制(重要操作)
- 分层