性能
衡量网站性能的指标有响应时间、TPS、系统性能计数器等,这些指标也是网站监控的重要参数,通过监控这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。
浏览器端
可以通过浏览器缓存、页面压缩传输、合理布局页面、减少 Cookie 传输等手段。还可以使用 CDN ,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快响应速度应用服务器端
可以使用服务器本地缓存和分布式缓存,也可以通过异步操作方式来加快响应,在高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力代码层面
使用多线程、改善内存管理等数据库服务器端
可用使用索引、缓存、SQL 优化等手段。另外,NoSQL 数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。
对于网站而言,性能符合与其仅仅是必要条件。因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负载能力的情况下可能出现的性能问题。网站需要长时间持续运行,还必须保证系统在持续运行且访问压力不均匀的情况下保持稳定的性能特性。
可用性
系统中任何一台或者多台服务器宕机时,系统整体是否可用。
高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
应用服务器
任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用,但是前提是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理存储服务器
需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用
除了运行环境,网站的高可用还需软件开发过程的质量保证。通过预发布验证、自动化测试、自动化发布、灰度测试等手段,减少将故障引入线上环境的可能。
伸缩性
向服务器集群加入更多服务器以及下线一些服务器节约成本时,能否提供和原来的服务器无差别的服务。
应用服务器集群
只要服务器不保存数据,所有服务器都是对等的(无状态),使用合适的负载均衡设备就行缓存服务器集群
加入新服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法保证缓存数据可访问性关系数据库
虽然支持数据复制,主从热备等机制,但很难做到大规模集群可伸缩性,因此关系数据库的集群伸缩性方案必须在数据库之外实现,通过 SQL 路由模块将部署有多个数据库的服务器组成一个集群NoSQL 数据库
先天为海量数据而生,因此对伸缩性支持很好
扩展性
在网站增加新的业务产品时,是否可以实现对现有功能透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。是否低耦合。
事件驱动架构
通常用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这种方式将消息产生和消息处理分离开,可以透明地增加新的消息生产者任务和消息消费者任务。分布式服务
将业务和可复用服务分离开,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。可复用服务升级变更的时候,也可以通过提供多版本服务对应用实现透明升级,不需要强制应用同步变更。
安全性
- 信息加密
- 防御 Web 攻击
- 风险控制