系统的各个重要组成部分及其关系构成了系统的架构。
系统功能
性能
响应
很多时候网站性能问题是网站架构升级优化的触发器。
- 浏览器端:浏览器缓存、页面压缩、合理布局页面、减少Cookie传输
- CDN:将网站静态内容分发至离用户最近的网络服务商机房
- 反向代理服务器:缓存热点文件
- 应用服务器端:服务器本地缓存、分布式缓存,异步操作,应用服务器集群
- 代码层面:多线程、改善内存管理
- 数据库服务器端:索引、缓存、SQL优化,NoSQL数据库
性能指标:响应时间、TPS、系统性能计数器
超负载场景下
持续运行切访问压力不均匀的场景下
可用性
网站高可用的主要手段是冗余。
多台应用服务器组成集群。前提是应用服务器上不能保存请求的会话信息。
存储服务器对数据备份。
衡量一个系统架构设计是否满足高可用对目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。
伸缩性
通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数是否有限制。
应用服务器集群:只要服务器上不保存数据,所有服务器都是对等的。通过使用合适的负载均衡设备就可以向集群不断加入服务器。
缓存服务器集群:加入新的服务器可能会导致缓存路由失效。?
关系数据库:很难做到大规模集群的可伸缩性。
NoSQL数据库:先天为海量数据而生,对伸缩性的支持通常非常好。
扩展性
快速响应需求变化。
衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响。
主要手段:
- 事件驱动架构:消息队列
- 分布式服务:将业务和可复用服务分离开,通过分布式服务框架调用。新增产品通过调用可复用对服务实现业务逻辑,对现有产品没有任何影响。可复用服务提供多版本。
安全性
保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。