目录
大型网站核心架构要素
软件架构需要关注的架构要素:性能、可用性、伸缩性、扩展性、安全性
1.性能
可优化性能的环节:
浏览器端:
- 浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等
- CDN,将静态内容存储在离用户最近的网络服务商机房,部署方向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。
应用服务器端:
- 使用服务器本地缓存和分布式缓存,加快请求处理,减轻数据库负载压力
- 异步操作
- 搭建应用服务器集群,提高整体处理能力,改善性能。
代码层面:多线程,内存管理
数据库服务器端:索引、缓存、SQL优化等,加入NoSQL数据库
衡量网站性能的一些指标:
- 响应时间
- TPS:事务数/秒,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
- 系统性能计数器
- ……
还有其他一些指标作为日常监控,分析系统瓶颈,预测网站容量,还需要进行压力测试,知道整个系统的极限,还可以测试超出系统负载能力后,会出现什么问题。
2.可用性
一个大型网站通常需要全天无故障运行,一旦出现故障,造成的损失都是不可估量的。比如很多年前的12306买票系统故障
大型网站可用性4个9指标 99.99%。
高可用设计:保证服务器宕机时,应用依然可用。
网站高可用的主要手段就是冗余,应用部署多台服务器,数据存储多台服务器,互相备份。
应用服务器高可用:多服务器和负载均衡设备共同提供服务。
存储服务器高可用:数据实时备份,服务器宕机,访问转移。
其他:预发布验、自动化测试、自动化发布、灰度发布等,减少故障,避免故障范围扩大。
这里有一个简单衡量高可用的标准,如果系统出现服务器宕机或不可预期问题,系统是否依然可用。
3.伸缩性
伸缩性是指不断向集群加入服务器来提高系统性能。
衡量标准:
- 是否多可以用多台服务器构建集群
- 向集群添加新服务器是否容易
- 新服务器要和原服务器提供一样的服务
- 集群容纳服务器是否限制
应用服务器集群:通过负载均衡设备往集群添加机器。
缓存服务器集群:缓存路由算法要保证加入新服务器不会使缓存数据无法访问。
数据库:数据复制,主从热备等机制。数据库很难做到大规模集群的可升缩性,可以通过路由分区等手段将多个服务器组成一个集群。NoSQL数据库产品,对伸缩性支持较好,支持海量数据。
4.扩展性
衡量网站架构扩展性好坏的主要标准:当增加新的业务产品时,是否影响现有产品,较少的或者无改动现在的产品业务。各产品之间低耦合。
网站可扩展架构的主要手段是:
事件驱动架构:通常手段利用消息队列实现,使得消息产生和消息处理分离开,解耦合。
分布式服务:业务与可复用业务分离,增加新业务产品时,可以通过分布式服务框架调用已有可复用服务来实现逻辑。
5.安全性
安全架构是为了保护网站不受恶意访问和攻击,保证数据安全。
衡量网站安全架构标准是:对现存和潜在的各种攻击与窃密手段有应对策略。
本文总结整理自《大型网站技术架构-核心原理与案例分析》-李智慧
相关链接:大型网站架构模式
来源:https://blog.csdn.net/dadajixxx/article/details/102734930