一 性能
性能是一个网站的重要指标,除非没得选,否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失。很多时候网站性能是网站升级架构的触发器。
1.1前端性能
1 浏览器缓存。
2 页面压缩。
3 合理布局页面。
4 减少cookies传输。
5 使用CDN将静态资源发送到离用户最近的网络服务商机房。使用户通过最短路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快响应速度,减轻负载压力。
1.2服务器端
1通过本地缓存,分布式缓存,缓存用户的热点数据,减轻数据库负载。
2 异步操作将用户请求发送给消息队列,后续处理,而当前请求及时返回响应给客户。
3 多台应用服务器组成集群,共同对外提供服务,提高整体处理能力,改善性能。
1.3代码层面
1 多线程,改善内存管理
2 减少循环嵌套,减少时间复杂度
3 在时间宝贵,空间充足的今天,可以牺牲大量的缓存,或者采用特殊的数据结构
牺牲控件,换取时间,提高用户体验
4 避免循环IO操作,减少IO的次数,循环多次的数据计算操作,尽量批量IO一次提交
1.4数据库服务端
1 创建索引
2 物化视图
3 SQL/存储过程的性能优化
4 采用特殊结构的nosql数据库
5 分库,分表
二 可用性
网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用整体可用。也不会导致数据丢失。
对于应用服务器而且,通过负载均衡,组成一个集群共同对外提供服务,任何一台宕机都可以将请求切换到其他服务器,实现高可用。前题任何一台服务器都不能保存会话信息,否则任何一台服务器宕机,会话丢失,即使将用户请求转发到其他服务器无法完成业务处理。
除了硬件,还需要软件开发过程的质量保证,预发布验证,自动化测试,灰度发布,都将减少故障引入线上环境的可能。
三 伸缩性
所谓伸缩性是指不断向集群中加入服务器的手段,来缓解不断上升的用户并发访问压力和不断增加的数据存储需求。
3.1对于应用服务器集群
只要服务器上不保存数据,所有的服务器都是对等的,使用合适的负载均衡设备,就可以向集群中不断加入服务。
3.2对于缓存服务器集群
加入缓存可能导致缓存路由失败,进而导致集群中大部分缓存数据无法访问。虽然缓存的数据可以通过数据库加载,但由于应用过度依赖缓存,进而导致应用崩溃,需要改进缓存路由算法。
3.3对于关系数据库
支持数据复制主从备份。通过路由分区等手段将部署有多个数据库的服务器组成一个集群。
四 扩展性
目的是需求不断的增加,如何设计出扩展的架构来应付需求的变化。即在网站增加新的业务产品时。是否可以对现有产品不影响,改动最少。网站扩展性主要是事件驱动架构与分布式服务架构。
4.1网站的事件驱动架构
主要是通过消息队列来实现的,消失生产者把用户请求与消息发布到消息队列,消息消费者获取消息进行消费,通过这种方式把消息生产者与消息消费者相互分离,这样就可以透明的增加消息生产与消息消费的任务。
4.2分布式服务架构
则是将业务与可复用的服务分离,新增产品时,通过调用可复用的服务实现自身业务逻辑,而对产品没有任何影响。可复用的服务升级变更的时候,也可以通过多个版本的服务实现透明升级。通过分布式服务可以对外扩展业务,提供第三方开发者进行调用。
五 安全性
衡量网站的安全性主要是针对现有和潜在的各种攻击和窃密手段,是否有可靠的应对策略。