[转载]大型网站架构演变过程
2015-07-24 21:16
260 查看
[Step1]web server与数据库分离
![](http://img.blog.csdn.net/20131113201010187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png)
web动静资源分离
![](http://img.blog.csdn.net/20131113201020406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png)
静态请求:如html, js, css, img
动态请求:如jsp, php
[Step2]缓存处理
![](http://img.blog.csdn.net/20131113201037093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(2).png)
客户端(浏览器)缓存
前端页面缓存(squid)
页面片段缓存ESI(Edge Side Includes)
本地数据缓存
[Step3]web server集群+读写分离
![](http://img.blog.csdn.net/20131113201058593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20131113201111484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(3).png)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(4).png)
负载均衡:
前端负载均衡
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址。
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
基于NAT的负载均衡技术
LVS
F5硬件负载均衡
应用服务器负载均衡
数据库负载均衡
[Step4]CDN、分布式缓存、分库分表
![](http://img.blog.csdn.net/20131113201134156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(5).png)
分布式缓存
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(6).png)
![](http://img.blog.csdn.net/20131113201147718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
目前流行分布式缓存方案:memcached、membase、redis等,基本上当前的NoSQL方案都可以用来做分布式缓存方案
分库(垂直分区)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(7).png)
![](http://img.blog.csdn.net/20131113201204937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
分表(水平分区shared)
![](http://img.blog.csdn.net/20131113201306921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(8).png)
[Step5]多数据中心+分布式存储与计算
![](http://img.blog.csdn.net/20131113201249031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(9).png)
技术点[DFS、Key-Value DB 、 Map/Reduce ]
![](http://img.blog.csdn.net/20131113201330328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(10).png)
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)
大并发服务器架构:
![](http://img.blog.csdn.net/20131113201540390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20131113201557734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam51X3NpbWJh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
垂直分区:比如用户表、业务表、基础表各有各自的读写数据库。
水平分区:比如用户表、业务表、基础表各有1000条记录,则水平分割分布在10对读写库。
服务器性能杀手:
1、数据拷贝:(缓存,不是指分布式缓存,指的是服务器内部的,如从内核拷贝到应用层的缓存)
2、环境切换:(理性使用多线程)单核(使用状态机编程效果最佳),多线程能够发挥多核服务器最佳性能
3、内存分配:(内存池)减少向操作系统申请内存的次数
4、锁竞争:(通过逻辑尽量减少锁的使用,或者锁的竞争)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png)
web动静资源分离
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png)
静态请求:如html, js, css, img
动态请求:如jsp, php
[Step2]缓存处理
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(2).png)
客户端(浏览器)缓存
前端页面缓存(squid)
页面片段缓存ESI(Edge Side Includes)
本地数据缓存
[Step3]web server集群+读写分离
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(3).png)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(4).png)
负载均衡:
前端负载均衡
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址。
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
基于NAT的负载均衡技术
LVS
F5硬件负载均衡
应用服务器负载均衡
数据库负载均衡
[Step4]CDN、分布式缓存、分库分表
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(5).png)
分布式缓存
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(6).png)
目前流行分布式缓存方案:memcached、membase、redis等,基本上当前的NoSQL方案都可以用来做分布式缓存方案
分库(垂直分区)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(7).png)
分表(水平分区shared)
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(8).png)
[Step5]多数据中心+分布式存储与计算
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(9).png)
技术点[DFS、Key-Value DB 、 Map/Reduce ]
![](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(10).png)
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)
大并发服务器架构:
垂直分区:比如用户表、业务表、基础表各有各自的读写数据库。
水平分区:比如用户表、业务表、基础表各有1000条记录,则水平分割分布在10对读写库。
服务器性能杀手:
1、数据拷贝:(缓存,不是指分布式缓存,指的是服务器内部的,如从内核拷贝到应用层的缓存)
2、环境切换:(理性使用多线程)单核(使用状态机编程效果最佳),多线程能够发挥多核服务器最佳性能
3、内存分配:(内存池)减少向操作系统申请内存的次数
4、锁竞争:(通过逻辑尽量减少锁的使用,或者锁的竞争)
相关文章推荐
- [转载]大型网站架构演变和知识体系
- [转载]从100PV到1亿级PV网站架构演变
- NVIDIA下代Pascal GPU架构提升深度学习速度
- 架构方法论
- 给网站添加一个config.js,js无法声明常量,封装js变量取值器
- [前端架构]性能优化
- MMORPG服务器架构
- Exchange2010配置-实现邮箱服务器高可用
- 【工作笔记0003】网站真假分页个人观点
- 专搜电子书网站
- C/S架构和B/S架构比较
- Windows Server 2012 DHCP安装及高可用
- 一个网站基本完工后测试的几个步骤
- JS(javascript) 将网站加入收藏夹
- 嵌入在网站上Flash播放机(2)
- 开源网站网罗
- KVM虚拟化——架构及安装
- 【wordpress】wordpress学习网站
- 系统架构设计应考虑的因素
- .net mvc 下实现移动架构display mode