高并发大型网站架构设计
来源:互联网 发布:淘宝上司法拍卖的房子 编辑:程序博客网 时间:2024/05/01 01:07
负载均衡系统
反向代理系统
Web服务器系统
分布式存储系统
底层服务系统
数据库集群系统
为什么要做高并发系统设计?
事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,能达到上万已经很不错了。目前的门户网站动辄几千万的访问量,所以,高并发的系统架构在所难免。
整体架构
真实中的网站架构也许并不如此也可以实现高性能。但是高性能的网站莫不过如此。如下图所示。
第一 负载均衡系统
负载均衡系统分为硬件和软件两种。
硬件负载均衡效率高,但是价格贵,比如F5等。
软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs。
第二 反向代理系统
目前普遍使用Squid或者nginx,或者Lighttpd,Varish。
这四者又各自有很大的差异。
Squid:主要用来做反向代理,使用内存+硬盘
Nginx:可以反向代理+负载均衡+WWW解析
Lighttpd:反向代理能力一般,处理FastCGI比较好,消耗内存很小
Varish:主要做内存的反向代理,性能最优
第三 Web服务器系统
由Apache负责解析PHP内容,也可以用Nginx,或者Lighttpd,相对来说Apache比较稳定。
第四 分布式存储系统
存储量很大,经常会达到单台服务器无法提供的规模,比如相册、视频等应用。因此需要专业的大规模存储系统。
第五 底层服务系统
根据各自需要由C/C++开发设计供上层CGI调用。
第六 数据库系统
1)使用MySQL数据库,考虑到Web应用的数据库读多写少的特点,我们主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库。
2)使用同步机制实现快速将主库(写库)的数据库复制到从库(读库)。一个主库对应多个从库,主库数据实时同步到从库。
3)写数据库有多台,每台都可以提供多个应用共同使用,这样可以解决写库的性能瓶颈问题和单点故障问题。- 高并发大型网站架构设计
- 高并发大型网站架构设计
- 高并发大型网站架构设计
- 高并发大型网站架构设计
- 高并发大型网站架构设计
- 大型高并发、高负载网站的系统架构设计
- 高并发高流量的大型网站架构设计(一)
- 高并发高流量的大型网站架构设计
- 高并发高流量的大型网站架构设计(一)
- 高并发高流量的大型网站架构设计(二)
- 高并发高流量的大型网站架构设计(一)
- 高并发高流量的大型网站架构设计(二)
- 高并发高流量的大型网站架构设计
- 大型网站的架构设计问题----大型高并发高负载网站的系统架构
- 大型网站的架构设计问题----大型高并发高负载网站的系统架构
- 大型网站的架构设计问题----大型高并发高负载网站的系统架构
- 大型网站的架构设计问题----大型高并发高负载网站的系统架构
- 大型网站的架构设计问题----大型高并发高负载网站的系统架构
- 理解虚基类、虚函数与纯虚函数的概念
- 把阿里ACE的SVN代码仓库转换成Git管理
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
- Object-C中的Block理解
- 高并发大型网站架构设计
- cocoaPods快捷安装配置方法
- Cocoa Runtime学习笔记
- 程序设计中利用“按位异或”运算交换两个变量的值原理
- With a Java ExecutorService, how do I complete actively executing tasks but halt the processing of w
- 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
- 设计模式之适配器模式(Adapter)
- const的常见用法
- 【日志组件】日至前端