为什么80%的码农都做不了架构师?>>>
(1)性能:
浏览器端:通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。CDN、反向代理服务器。
应用服务器端:本地缓存、分布式缓存,异步操作(消息队列),集群。
代码层面:使用多线程、改善内存管理等手段优化性能。
数据库服务器端:索引、缓存、SQL优化。NoSQL数据库通过优化数据模型、存储结构、伸缩性能。
衡量网站性能指标:响应时间、TPS、系统性能计数器等。通过监控这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。
(2)可用性:
集群,冗余,负载均衡,数据备份。
除了运行环境,网站的高可用还需要如见开发过程的质量保证。通过预发布验证、自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。
衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。
(3)伸缩性:
衡量伸缩性的标准就是:是否可以用多台服务器构建集群;是否容易向集群中 添加新的服务器;加入新的服务器后是否可以提供和原来的服务器无差别的服务;集群中可容纳的总服务器数量是否有限制。
(4)扩展性:新增业务时,不需要改动或者较少改动现有业务。不同业务应用之间耦合性较低。
主要手段:事件驱动架构和分布式服务。时间驱动架构:消息队列实现;分布式服务:抽取可复用性服务,通过分布式服务框架调用。
(5)安全性:
衡量网站安全架构的标准:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。