读《大型网站技术架构核心原理与案例分析》

100 阅读3分钟

一、大型网站软件系统的特点

  • 高并发、大流量
  • 高可用
  • 海量数据
  • 用户分布广泛、网络情况复杂
  • 安全环境恶劣
  • 需求快速变更、发布频繁
  • 渐进式发展

二、网站架构模式

  1. 分层(横向分:根据数据流向)
  • 应用层
  • 服务层
  • 数据层

2.分割(纵向分:根据业务模块)

  • 具体业务拆分

3.分布式

  • 分布式应用与服务
  • 分布式静态资源
  • 分布式数据与存储
  • 分布式计算
  • 分布式配置
  • 分布式锁

4.集群

5.缓存

  • CDN
  • 反向代理
  • 本地缓存
  • 分布式缓存

6.异步

  • 消息队列

7.冗余

  • 数据备份

8.自动化

  • 开发:自动化发布、代理管理、部署
  • 运行:自动化监控、报警、失效转移、降级、分配资源

9.安全

  • 加密、手机验证码、风险控制

三、大型网站核心架构要素

  • 高性能

1、性能测试指标:响应时间、并发数、吞吐量[(TPS(每秒事务数)、QPS(每秒查询数)、HPS(每秒请求数)]、性能计数器[SystemLoad(CPU执行和等待的进程数总和)、对象与线程数、内存使用、CPU使用、磁盘与网络I/O]

2、性能测试方法:性能测试、负载测试、压力测试、稳定性测试

3、web性能优化:浏览器访问优化(减少HTTP请求、浏览器缓存、压缩、CSS在前JS在后、减少Cookie传输)、CDN加速、反向代理(cdn与反向代理的本质是缓存)

4、应用服务器优化:分布式缓存(缓存的本质是HASH表)、异步、集群、代码优化(多线程、资源复用(单例模式、对象池)、数据结构、垃圾回收)

5、存储性能优化:HDFS(分布式文件系统)、NOSQL

  • 高用性

  1. 高可用的应用:通过负载均衡进行无状态服务的失效转移、应用服务器集群的Session管理(Session复制、Session绑定、利用Cookie记录Session、Session服务器)。

2、高可用的服务:分级管理、超时设置、异步调用、服务降级、幂等性设计

3、高可用的数据:数据备份、失效转移

4、高可用网站的软件质量保证:自动化测试、预发布验证、代码管理、自动化发布、灰度发布

5、网站运行监控:用户行为收集、服务器性能监控、运行数据报告

  • 伸缩性

  1. 软件架构的伸缩性设计:不同功能进行物理分离实现伸缩、单一功能通过集群规模实现伸缩
  2. 应用服务器集群的伸缩性设计:HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡
  3. 分布式缓存集群的伸缩性设计:Memcached
  4. 数据存储服务器集群的伸缩性设计:Mysql、Nosql
  • 扩展性

  1. 分布式消息队列降低系统的耦合性:RabbitMQ、KafKa
  2. 分布式服务打造可复用的业务平台:
  3. 可扩展的数据结构:
  • 安全性

  1. 信息加密:单向散列加密、对称加密、非对称加密
  2. 信息过滤与反垃圾:文本匹配、分类算法、黑名单
  3. 电子商务风险控制:风险、风控