书单之大型网站架构技术-思维导图(三)
Introduction
软件架构除了关注系统功能需求外,还需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素,架构设计过程中需要平衡这5个要素之间的关系以实现需要和架构目标,也可以通过考察这些架构要素来衡量一个软件架构设计的优劣,判断其是否满足期望。

第三章 大型网站核心架构要素
- 性能
- 可用性
- 伸缩性
- 扩展性
- 安全性
性能
是网站的一个重要目标,也是网站架构设计的一个重要方面;网站性能问题是网站架构升级优化的触发器。
- 客户端:本地缓存(浏览器缓存)、传输数据压缩(页面压缩)、合理页面布局、减少Cookie传输等。
- CND,最短访问路径获取数据;反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。
- 应用服务器:本地缓存(redis)和分布式缓存,热点数据,减轻数据库负载压力。
- 异步:请求进入消息队列等待后续处理,直接返回响应给用户。
- 集群:多台应用服务器构成集群,提高整体处理能力,改善性能。
- 代码:多线程、改善内存管理等优化性能。
- 数据库:索引、缓存、SQL优化、NoSQL
衡量网站性能:响应时间、TPS(QPS)、系统性能计数等
可用性
99.99%,高可用的主要手段是冗余。
- 应用服务器:负载均衡组成集群,实现故障切换
- 存储服务器:实时备份,故障时,数据访问转移
- 部署控制:预发布验证、自动化测试、自动化发布、灰度发布等
伸缩性
衡量架构伸缩性的主要标准:是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。
- 应用服务器:负载均衡
- 缓存服务器:注意:加入新的服务器会导致缓存路由失效,进而导致大部分缓存数据无法访问,改进缓存路由算法。
- 关系数据库:数据复制、主从热备,但大规模集群的可伸缩性较困难;可通过路由分区等手段将部署有多个数据库的服务器组成一个进群。
- NoSQL:先天支持优势
扩展性
网站快速发展,功能不断扩展,如何设计网站的架构使其能够快速响应需要变化,是网站可扩展架构主要的目的。
- 事件驱动架构:消息队列
- 分布式服务:业务和可服用服务分离,通过分布式服务框架调用。