建议收藏 大型网站技术架构-入门梳理

前言

  • 本文是对《大型网站架构设计》(李智慧 著)一书的梳理,类似文字版的“思维导图”
  • 全文主要围绕“性能,可用性,伸缩性,扩展性,安全”这五个要素
  • 性能,可用性,伸缩性这几个要素基本都涉及到应用服务器,缓存服务器,存储服务器这几个方面
概述
  • 三个纬度:演化、模式、要素
  • 五个要素: 性能,可用性,伸缩性,扩展性,安全
演化历程大型网站架构演化历程:
  1. 初始阶段的网站架构:一台服务器,上面同时拥有应用程序,数据库,文件,等所有资源 。例如 LAMP 架构
  2. 应用和数据服务分离:三台服务器(硬件资源各不相同),分别是应用服务器,文件服务器和数据库服务器
  3. 使用缓存改善网站性能:分为两种,缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器的远程缓存
  4. 使用应用服务器集群改善网站并发处理能力:通过负载均衡调度服务器来将访问请求分发到应用服务器集群中的任何一台机器
  5. 数据库读写分离:数据库采用主从热备,应用服务器在写数据时访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库 。应用服务器使用专门的数据访问模块从而对应用透明
  6. 使用反向代理和 CDN 加速网站响应:这两者基本原理都是缓存 。反向代理部署在网站的中心机房,CDN 部署在网络提供商的机房
  7. 使用分布式文件系统和分布式数据库系统:数据库拆分的最后手段,更常用的是业务分库
  8. 使用 NoSQL 和搜索引擎:对可伸缩的分布式有更好的支持
  9. 业务拆分:将整个网站业务拆分成不同的应用,每个应用独立部署维护,应用之间通过超链接建立联系/消息队列进行数据分发/访问同一数据存储系统
  10. 分布式服务:公共业务提取出来独立部署
架构演化-分布式服务
演化的价值观
  • 大型网站架构的核心价值是随网站所需灵活应对
  • 驱动大型网站技术发展的主要力量是网站的业务发展
误区
  • 一味追随大公司的解决方案
  • 为了技术而技术
  • 企图用技术解决所有问题
架构模式模式的关键在于模式的可重复性
  • 分层:横向切分
  • 分割:纵向切分
  • 分布式:分层和分割的主要目的是为了切分后的模块便于分布式部署 。常用方案:分布式应用和服务分布式静态资源分布式数据和存储分布式计算分布式配置,分布式锁,分布式文件,等等
  • 集群:多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务
  • 缓存:将数据放距离计算最近的位置加快处理速度,改善性能第一手段,可以加快访问速度,减小后端负载压力 。使用缓存 两个前提条件 :1.数据访问热点不均衡;2.数据某时段内有效,不会很快过期CDN反向代理本地缓存分布式缓存
  • 异步:旨在系统解耦 。异步架构是典型的消费者生产者模式,特性如下:提高系统可用性加快网站访问速度消除并发访问高峰
  • 冗余:实现高可用 。数据库的冷备份和热备份
  • 自动化:包括发布过程自动化,自动化代码管理,自动化测试,自动化安全检测,自动化部署,自动化监控,自动化报警,自动化失效转移,自动化失效恢复,自动化降级,自动化分配资源
  • 安全:密码,手机校验码,加密,验证码,过滤,风险控制
核心要素架构是“最高层次的规划,难以改变的规定” 。主要关注五个要素:
  • 性能
  • 可用性(Availability)
  • 伸缩性(Scalability)
  • 扩展性(Extensibility)
  • 安全性
架构下面依次对这五个要素进行归纳
高性能【建议收藏 大型网站技术架构-入门梳理】性能的测试指标主要有:
  • 响应时间:指应用执行一个操作需要的时间
  • 并发数:指系统能够同时处理请求的数目
  • 吞吐量:指单位时间内系统处理的请求数量
  • 性能计数器:描述服务器或者操作系统性能的一些数据指标
性能测试方法:
  • 性能测试
  • 负载测试
  • 压力测试
  • 稳定性测试
性能测试曲线
性能优化,根据网站分层架构,可以分为三大类: