笔记:大型网站的核心架构要素

来源:互联网 发布:3个国家会计学院 知乎 编辑:程序博客网 时间:2024/06/05 02:46
大型网站的核心架构要素:
1、高性能;
2、高可用性;
3、伸缩性;
4、扩展性;
5、安全性;


一、高性能
1、web前端的性能优化
(1) 浏览器访问优化
① 减少http请求; 合并图片、js、css等静态资源;
② 使用浏览器缓存; 通过设置cache-control、Expires等属性;
③ 启用gzip压缩;
④ 页面资源加载顺序; 先加载css,后加载js,图片考虑使用lazyload;
⑤ 减少Cookie传输;
(2) CDN加速 (Content Distribute Network)
(3) 反向代理 


2、应用服务器性能优化
(1) 分布式缓存; JBoss Cache 、Memcached;
(2) 异步操作; 使用消息队列(如ActiveMQ),具有很好的削峰作用;
(3) 使用集群,实现负载均衡;
(4) 代码优化; 包括 多线程、资源复用(单例模式和对象池)、合理的数据结构、垃圾回收等;


3、存储性能优化
(1) 机械硬盘 vs 固态硬盘
(2) B+ 树 vs LSM树
(3) RAID vs HDFS




二、高可用 (High Availability)
1、度量指标
网站年度可用性指标 = (1-网站不可用时间/年度总时间)*100%;


2、高可用的应用
① 通过负载均衡进行无状态服务的失效转移;
② 集群的Session管理应对有状态的服务时效转移;


3、高可用的服务
① 分级管理; 核心应用和服务优先使用好的硬件;
② 超时设置;
③ 异步调用;
④ 服务优雅降级;访问高峰期拒绝或关闭非核心服务;
⑤ 幂等性设计;必须在服务层保证服务重复调用和一次调用产生的结果相同,即服务具有幂等性;


4、高可用的数据
① 数据需满足持久性、可访问性、一致性;
② 数据备份,分为异步热备、同步热备、容灾备份等;
③ 失效转移(failover); 失效检测有两种,心跳检测和应用程序访问失败报告;


5、高可用下的网站发布
① 自动化测试;
② 预发布验证(UAT);
③ 代码控制;主干开发、分支发布或分支开发、主干发布;
④ 自动化发布;
⑤ 灰度发布;又称为AB版本测试;


6、网站运行监控
① 数据收集;包括用户行为日志、服务端日志、浏览器日志、服务器性能指标等等相关数据的收集;
② 监控管理;系统报警、失效转移、自动优雅降级等;




三、伸缩性(Scalability)
指系统能够通过增加(减少)自身资源规模的方式增强(减少)自己的计算处理事务的能力。如果这种增减是成比例的,就被称作线性伸缩性。
在网站架构中,通常指利用集群的方式增加服务器数量、提高系统的整体事务吞吐能力。


1、不同功能进行物理分离;
纵向分离(业务分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性;
横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性;


2、单一功能通过集群规模实现伸缩;




四、扩展性(Extensibility)
指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之前较少依赖和耦合,对需求变更可以敏捷响应。
它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),当系统增加新功能时,不需要对现有系统的结构和代码进行修改。


1、利用分布式消息队列降低系统耦合性;
2、利用分布式服务打造可复用的业务平台;




五、安全性
1、web应用的常见攻击方式
① XSS (Cross Site Script);
② SQL注入;
③ CSRF (Cross Site Request Forgery);
④ 路径遍历(跨目录访问、读取);
⑤ 文件上传;
⑥ HTML注释;

⑦ 错误回显 (Error Code);



0 0
原创粉丝点击