PHP高并发高负载系统架构例子

1.为什么要进行高并发与高负载的研究

2、高并发和高负载的约束条件

3、解决之道——硬件篇

4、解决之道——部署篇

5、解决之道——环境篇

6、解决之道——SiteEngine篇

7、解决之道——测试篇

1、为什么要进行高并发和高负载的研究

1.1、产品发展的需要

1.2、公司发展的需要

1.3、当前形式决定的

2、高并发和高负载的约束条件

2.1、硬件

2.2、部署

2.3、操作系统

2.4、Web 服务器

2.5、PHP

2.6、MySQL

2.7、测试

3、解决之道——硬件篇

处理能力的提升:部署多颗CPU,选择多核心、具备更高运算频率、更大高速缓存的CPU;

处理能力的提升最直接的反应在于Web请求的处理效率和PHP程序的执行效率。

内存带宽与容量:更大的内存带宽和容量;

内存带宽与容量的提升最直接的反应在于应对数据库大量的数据交换。

磁盘搜索与I/O能力:选择更高的转速、更大的硬盘缓存、组件磁盘阵列(RAID);

磁盘搜索与I/O能力的提升最直接反应在于数据库大量的查询和读写以及文件的读写。

网络带宽的提升可考虑的因素包括: 更大带宽、多线路接入、独享带宽;

服务器在大负载的情况下,对网络带宽的占用是十分可观的。

策略:硬件设施是应对大负载的基础,硬件设施的投入可根据实际压力和预算量力而行。

4、解决之道——部署篇

4.1、服务器分离

4.2、数据库集群和库表散列

4.3、镜像

4.4、负载均衡

分类:

 1)、DNS轮循

2)代理服务器负载均衡 

3)地址转换网关负载均衡 

4)NAT负载均衡 

5)反向代理负载均衡 

6)混合型负载均衡

策略:根据硬件投入和业务需求,选择合理的部署方案。

部署方案1:

适用范围:静态内容为主体的网站和应用系统;对系统安全要求较高的网站和应用系统。

Main Server:主服务器

承载程序的主体运行压力,处理网站或应用系统中的动态请求;

将静态页面推送至多个发布服务器;

将附件文件推送至文件服务器;

安全要求较高,以静态为主的网站,可将服务器置于内网屏蔽外网的访问。

DB Server:数据库服务器

承载数据库读写压力;

只与主服务器进行数据量交换,屏蔽外网访问。

File/Video Server:文件/视频服务器

承载系统中占用系统资源和带宽资源较大的数据流;

作为大附件的存储和读写仓库;

作为视频服务器将具备视频自动处理能力。

发布服务器组:

只负责静态页面的发布,承载绝大多数的Web请求;

通过Nginx进行负载均衡部署。

部署方案2:

适用范围:以动态交互内容为主体的网站或应用系统;负载压力较大,且预算比较充足的网站或应用系统;

Web服务器组:

Web服务无主从关系,属平行冗余设计;

通过前端负载均衡设备或Nginx反向代理实现负载均衡;

划分专用文件服务器/视频服务器有效分离轻/重总线;

每台Web服务器可通过DEC可实现连接所有数据库,同时划分主从。

数据库服务器组:

相对均衡的承载数据库读写压力;

通过数据库物理文件的映射实现多数据库的数据同步。

共享磁盘/磁盘阵列

将用于数据物理文件的统一读写

用于大型附件的存储仓库

通过自身物理磁盘的均衡和冗余,确保整体系统的IO效率和数据安全;

方案特性:

通过前端负载均衡,合理分配Web压力;

通过文件/视频服务器与常规Web服务器的分离,合理分配轻重数据流;

通过数据库服务器组,合理分配数据库IO压力;

每台Web服务器通常只连接一台数据库服务器,通过DEC的心跳检测,可在极短时间内自动切换至冗余数据库服务器;

磁盘阵列的引入,大幅提升系统IO效率的同时,极大增强了数据安全性。

5、解决之道——环境篇

5.1、操作系统

操作系统的选择,关注点在于

•是否适应于搭建SiteEngine所需要的环境程序?
•系统本身占用的资源比;
•系统安全性;
•系统是否易于操作?
策略:我们选择FreeBSD,而且是最小化安装以后的FreeBSD。

5.2、Web服务器

Web服务器很大一部分资源占用来自于处理Web请求,通常情况下这也就是Apache产生的压力,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx (“engine x”) 是俄罗斯人编写的一款高性能的 HTTP 和反向代理服务器。在国内,已经有新浪、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用 Nginx 服务器。

Nginx的优势:

高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。

内存消耗少:在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。

内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

策略:相对于老牌的Apache,我们选择Lighttpd和Nginx这些具有更小的资源占用率和更高的负载能力的web服务器。

5.3、Mysql

MySQL本身具备了很强的负载能力,MySQL优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解。大家都知道数据库工作就是大量的、短时的查询和读写,除了程序开发时需要注意建立索引、提高查询效率等软件开发技巧之外,从硬件设施的角度影响MySQL执行效率最主要来自于磁盘搜索、磁盘IO水平、CPU周期、内存带宽。

  根据服务器上的硬件和软件条件进行MySQl优化。MySQL优化的核心在于系统资源的分配,这不等于无限制的给MySQL分配更多的资源。在MySQL配置文件中我们介绍几个最值得关注的参数:

改变索引缓冲区长度(key_buffer)

改变表长(read_buffer_size)

设定打开表的数目的最大值(table_cache)

对缓长查询设定一个时间限制(long_query_time)

如果条件允许 ,一般MySQL服务器最好安装在Linux操作系统中,而不是安装在FreeBSD中。

策略: MySQL优化需要根据业务系统的数据库读写特性和服务器硬件配置,制定不同的优化方案,并且可以根据需要部署MySQL的主从结构。

5.4、PHP

1、加载尽可能少的模块;

2、如果是在windows平台下,尽可能使用IIS或者Nginx来替代我们平常用的Apache;

3、安装加速器(都是通过缓存php代码预编译的结果和数据库结果来提高php代码的执行速度)

eAccelerator

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。

Apc

Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

memcache

memcache是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。主要机制是通过在内存里维护一个统一的巨大的hash表,Memcache能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等

Xcache

国人开发的缓存器,

策略: 为PHP安装加速器。

5.5、代理服务器(缓存服务器)

Squid Cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

策略:安装Squid 反向代理服务器,能够大幅度提高服务器效率。

6、解决之道——SiteEngine篇

7、解决之道——测试篇

7.1、测试方法

7.2、测试用例

7.3、压力测试

压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

压力测试工具:webbench,ApacheBench等

7.4、漏洞测试

在我们的系统中漏洞主要包括:sql注入漏洞,xss跨站脚本攻击等。安全方面还包括系统软件,如操作系统漏洞,mysql、apache等的漏洞,一般可以通过升级来解决。

漏洞测试工具:Acunetix Web Vulnerability Scanner

时间: 2024-07-28 14:42:27

PHP高并发高负载系统架构例子的相关文章

【干货合集】大流量与高并发:数据库、架构与实践技巧

峰会专题:https://yq.aliyun.com/activity/112 报名入口:http://yq.aliyun.com/webinar/join/49?spm=5176.8155509.437644.12.F2Xi5N 从2009年第一届双十一购物节到2015年双十一全天912.17亿元的交易额,"双十一"当天订单创建峰值增长了350倍(每秒14万笔),支付峰值 (每秒8.59万笔)增长了430倍.为了保证越来越多购物者的用户体验,在IT基础设施上,阿里一次又一次地遭遇并超

《高并发Oracle数据库系统的架构与设计》一2.3 索引设计优化

2.3 索引设计优化 现在,我们知道了B树索引的结构特点,也了解到其对查询和排序优化的意义,但是这并不代表我们就能建好用好索引了.在实际工作中,是不是还是会遇到走了索引反而查询变慢的情况呢?虽然说不是所有的情况下索引扫描都是优于全表扫描的,但是对于一套设计成熟的系统来说,索引扫描往往是值得坚持的,应该定期进行全库SQL语句执行计划的审查,抓出全表扫描的SQL进行优化. 说一千道一万,我们创建索引就是为了使用索引,尽可能地使查询操作能够走索引.但是,很遗憾,不是我们说走索引就能走索引,还是需要取决

基于MongoDB的高并发高可用政府云平台架构实践

3月12日下午在阿里巴巴西溪园区,举行了MongoDB杭州用户交流会.微软MSDN特邀讲师徐雷分享<基于MongoDB的政府云平台高并发高可用HA架构实践 >,从自身实践出发,讲述了政府云平台分层.技术栈选型.物理架构.API架构及DB数据库架构的设计思路和方法.   以下内容根据现场分享和演讲PPT整理而成.   学习MongoDB的重要性 目前,几乎所有国内外的互联网大公司都在用MongoDB,学习企业需要的技术很重要.   MongoDB优点   相比较关系型数据库而言,MongDB有两

《高并发Oracle数据库系统的架构与设计》一1.1 初见高并发

1.1 初见高并发 高并发这个概念并不新鲜,可以说有数据库的地方都有可能面临高并发的问题.在数据库里,高并发问题主要集中在两个方面:读的高并发.写的高并发,两者看起来都不是很复杂,然而实际情况往往是读和写会交织在一起,并同时呈现出高并发的问题.这个时候,相信很多读者都会提出一个观点:做读写分离嘛.是的,这是一个不错的主意,但只是一个治标不治本的主意.业务系统的耦合度很高,是不可能实现业务层级的读写分离的.在架构设计的过程中,不能驻足于技术层面,还是需要渗透到业务层面去的.不论是业务驱动技术,还是

《高并发Oracle数据库系统的架构与设计》一2.5 索引维护

2.5 索引维护 索引对于性能保障的重要性是不言而喻的,一个优质的索引是性能的润滑剂,相反,劣质的索引将是性能的"绞肉机".通过2.4节的介绍,我们了解到一个设计优良的索引,在经过日常业务应用,特别是OLTP的高并发"摧残"之后,将变得满目疮痍,原本优质的索引也可能转变为劣质的. 这就需要DBA的介入,找到劣质的索引,并恢复其优质的本相.索引的后期维护可能是DBA们日常维护工作中非常重要的一部分,同时也可能是最费时费力的一部分.有人可能会简单地概括一下:"

谈谈大型高并发高负载网站的系统架构

http://blog.csdn.net/fenglibing/archive/2010/04/10/5469788.aspx   转自:http://www.educity.cn/rk/sa/200906031701101214.htm     我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大

说说大型高并发高负载网站的系统架构

我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下. 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经

说说大型高并发高负载网站的系统架构_网站应用

我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下. 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经

bilibili高并发实时弹幕系统的实战之路

随着直播的发展,直播弹幕也逐渐火爆起来.高并发实时弹幕是一种互动的体验.在架构设计上,高稳定.高可用.低延迟是一款直播弹幕系统必备的三要素.   高稳定性,为了保证互动的实时性,所以要求连接状态稳定. 高可用性,相当于提供一种备用方案,比如,互动时如果一台机器挂了,此时必须保证可以和另外一台机器连接,这样就从侧面解决了用户连接不中断的问题. 对于低延迟,弹幕的延迟周期控制在 1 秒以内,响应是比较快的,所以可以满足互动的需求.     B 站直播弹幕服务架构(下面简称 GOIM )的出现就是为了