一、大型网站软件系统的特点
- 高并发、大流量
- 高可用
- 海量数据
- 用户分布广泛、网络情况复杂
- 安全环境恶劣
- 需求快速变更、发布频繁
- 渐进式发展
二、网站架构模式
- 分层(横向分:根据数据流向)
- 应用层
- 服务层
- 数据层
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
-
高用性
- 高可用的应用:通过负载均衡进行无状态服务的失效转移、应用服务器集群的Session管理(Session复制、Session绑定、利用Cookie记录Session、Session服务器)。
2、高可用的服务:分级管理、超时设置、异步调用、服务降级、幂等性设计
3、高可用的数据:数据备份、失效转移
4、高可用网站的软件质量保证:自动化测试、预发布验证、代码管理、自动化发布、灰度发布
5、网站运行监控:用户行为收集、服务器性能监控、运行数据报告
-
伸缩性
- 软件架构的伸缩性设计:不同功能进行物理分离实现伸缩、单一功能通过集群规模实现伸缩
- 应用服务器集群的伸缩性设计:HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡
- 分布式缓存集群的伸缩性设计:Memcached
- 数据存储服务器集群的伸缩性设计:Mysql、Nosql
-
扩展性
- 分布式消息队列降低系统的耦合性:RabbitMQ、KafKa
- 分布式服务打造可复用的业务平台:
- 可扩展的数据结构:
-
安全性
- 信息加密:单向散列加密、对称加密、非对称加密
- 信息过滤与反垃圾:文本匹配、分类算法、黑名单
- 电子商务风险控制:风险、风控