《大型网站技术构架》–李智慧,摘要。
序言
传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求。
概述
大型网站架构演化发展历程
- 初始阶段的网站架构
- 应用服务与数据服务分离
- 使用缓存改善网站性能
- 使用应用服务器集群改善网站的并发能力
- 数据库读写分离
- 使用反向代理和CDN加速网站响应
CDN和反向代理的原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网络时,可以从距离自己最近的网络提供商机房获取数据;而反向代理则部署在网络的中心机房,当用户的请求到达机房后,首先访问的是反向代理服务器,如果反向代理服务器缓存着用户请求的资源,就将其直接返回给用户。
- 使用分布式文件系统和分布式数据库系统
- 使用NoSQL和收缩引擎
- 业务拆分
- 分布式服务
大型网站架构已经解决了海量数据的管理和高并发事物的处理,进而向着云计算平台发展,把它作为一种服务卖给中小型网。
创新的业务发展模式对网站架构逐步提出更高的要求,才使得创新的网站架构得以发展成熟。是业务成就了技术,是事业成就了人,而不是相反。所以网站架构师应该对成就自己技术成绩的网站事业心存感恩,并努力提高技术回馈业务,才能在快速发展的互联网领域保持持续进步。
大型网站架构模式
- 分层
- 分割
- 分布式
- 集群
- 缓存
- 异步
- 冗余自动化
- 安全
大型网站核心架构要素
- 性能
- 可用性
- 伸缩性
- 扩展性
- 安全性
架构
瞬时效应:网站的高性能架构
Web前端性能优化
- 浏览器访问优化
减少http请求:合并CSS、合并JavaScript、合并图片
减少Cookie传送:静态资源使用独立域名访问,避免静态资源发送无用Cookie
使用浏览器缓存;启动压缩;CSS和Javascript非别放在页面页定、低;
- CDN加速
- 反向代理
应用服务器性能优化
- 分布式缓存
缓存基本原理、合理利用缓存
分布式缓存架构:以JBoss Cache为代表的需要更新同步的分布式缓存;以Memcached为代表的不互相通信的分布式缓存。
- 异步操作
- 使用集群
- 代码优化:多线程、资源复用、数据结构、垃圾回收
存储性能优化
- 机械硬板 VS 固态硬盘
- B+树 VS LSM树
- RAID VS HDFS
永无止境:网站的伸缩性架构
应用服务器集群的伸缩性设计
- HTTP重定向负载均衡:利用中心网站HTTP负载均匀服务器
- DNS域名负载均衡:利用DNS处理域名解析的同时进行负载均衡处理
- 反向代理负载均衡
- IP负载均衡:在网络层通过修改请求目的IP地址
- 数据链路层负载均衡:修改mac地址,这种数据传输方式通常称作三角传输模式
- 负载均衡算法:Round Robin、Random等
分布式缓存集群的伸缩设计
- Memcached
- 分布式缓存的一致性hash算法
数据存储服务器集群的伸缩性设计
- 关系数据库集群的伸缩性设计:Cobar服务器集群
- NoSQL数据库的伸缩性设计:Apache HBase