[Step1]web server与数据库分离
不满足服务器高性能的目标 因为只存在单点,任何一点发生故障,整个网站都不能访问
web动静资源分离
浏览器的请求分为静态请求和动态请求
静态请求: html,js,css, img
动态请求: jsp,php
http服务器主要处理静态请求 (前端服务器)
应用服务器主要处理动态请求 (后端服务器)
[Step2]缓存处理
对缓存的处理可以一定程度上提高对网站的访问速度
[Step3]web server集群+读写分离
负载均衡
前端负载均衡
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址。
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。 标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
基于NAT的负载均衡技术
LVS
F5硬件负载均衡
应用服务器负载均衡
数据库负载均衡
[Step4]CDN、分布式缓存、分库分表
CDN: 内容分发网络
分布式缓存
目前流行分布式缓存方案:memcached、membase、redis等,基本上当前的NoSQL方案都可以用来做分布式缓存方案
数据库在并发量比较大的时候,会出现锁竞争,我们这时候可以采取分库分表的形式
分库
垂直分区
分表
水平分区(shard)
[Step5]多数据中心+分布式存储与计算
技术点[DFS、Key-Value DB 、 Map/Reduce
DFS分布式文件系统,如:Lustre\HDFS\GFS\TFS\FreeNas等
Key-Value DB,也作为NoSQL解决方案,如:BigTable\Tair\Hbase\HyperTable等
Map/Reduce算法(计算框架),基本上现有NoSQL数据库中都支持此算法。
提供完整解决方案:
Google(GFS|BigTable|Map/Reduce)
Apache Hadoop(HDFS|HBase|Map/Reduce)