高并发高负载系统架构_第1页
高并发高负载系统架构_第2页
高并发高负载系统架构_第3页
高并发高负载系统架构_第4页
高并发高负载系统架构_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高并发高负载系统架构二OO九年十一月目录1、为什么要进行高并发和高负载的研究2、高并发和高负载的约束条件3、解决之道——硬件篇4、解决之道——部署篇5、解决之道——环境篇6、解决之道——SiteEngine篇7、解决之道——测试篇8、结尾为什么要进行高并发和高负载的研究1、产品开展的需要2、公司开展的需要3、当前形式决定的高并发和高负载的约束条件1、硬件2、部署3、操作系统4、Web效劳器5、PHP6、MySQL7、测试解决之道——硬件篇处理能力的提升:部署多颗CPU,选择多核心、具备更高运算频率、更大高速缓存的CPU;处理能力的提升最直接的反响在于Web请求的处理效率和PHP程序的执行效率。内存带宽与容量:更大的内存带宽和容量;内存带宽与容量的提升最直接的反响在于应对数据库大量的数据交换。磁盘搜索与I/O能力:选择更高的转速、更大的硬盘缓存、组件磁盘阵列〔RAID〕;磁盘搜索与I/O能力的提升最直接反响在于数据库大量的查询和读写以及文件的读写。网络带宽的提升可考虑的因素包括:更大带宽、多线路接入、独享带宽;效劳器在大负载的情况下,对网络带宽的占用是十分可观的。策略:硬件设施是应对大负载的根底,硬件设施的投入可根据实际压力和预算量力而行。解决之道——部署篇1、效劳器别离2、数据库集群和库表散列3、镜像4、负载均衡

分类: 1)、DNS轮循 2〕代理效劳器负载均衡 3〕地址转换网关负载均衡 4〕NAT负载均衡 5〕反向代理负载均衡 6〕混合型负载均衡策略:根据硬件投入和业务需求,选择合理的部署方案。解决之道——部署篇——方案一适用范围:静态内容为主体的网站和应用系统;对系统平安要求较高的网站和应用系统。MainServer:主效劳器承载程序的主体运行压力,处理网站或应用系统中的动态请求;将静态页面推送至多个发布效劳器;将附件文件推送至文件效劳器;平安要求较高,以静态为主的网站,可将效劳器置于内网屏蔽外网的访问。DBServer:数据库效劳器承载数据库读写压力;只与主效劳器进行数据量交换,屏蔽外网访问。File/VideoServer:文件/视频效劳器承载系统中占用系统资源和带宽资源较大的数据流;作为大附件的存储和读写仓库;作为视频效劳器将具备视频自动处理能力。发布效劳器组:只负责静态页面的发布,承载绝大多数的Web请求;通过Nginx进行负载均衡部署。解决之道——部署篇——方案二适用范围:以动态交互内容为主体的网站或应用系统;负载压力较大,且预算比较充足的网站或应用系统;Web效劳器组:Web效劳无主从关系,属平行冗余设计;通过前端负载均衡设备或Nginx反向代理实现负载均衡;划分专用文件效劳器/视频效劳器有效别离轻/重总线;每台Web效劳器可通过DEC可实现连接所有数据库,同时划分主从。数据库效劳器组:相对均衡的承载数据库读写压力;通过数据库物理文件的映射实现多数据库的数据同步。共享磁盘/磁盘阵列将用于数据物理文件的统一读写用于大型附件的存储仓库通过自身物理磁盘的均衡和冗余,确保整体系统的IO效率和数据平安;方案特性:通过前端负载均衡,合理分配Web压力;通过文件/视频效劳器与常规Web效劳器的别离,合理分配轻重数据流;通过数据库效劳器组,合理分配数据库IO压力;每台Web效劳器通常只连接一台数据库效劳器,通过DEC的心跳检测,可在极短时间内自动切换至冗余数据库效劳器;磁盘阵列的引入,大幅提升系统IO效率的同时,极大增强了数据平安性。解决之道——环境篇1、操作系统2、Web效劳器3、Mysql4、PHP5、代理效劳器〔缓存效劳器〕解决之道——环境篇——操作系统操作系统的选择,关注点在于是否适应于搭建SiteEngine所需要的环境程序?系统本身占用的资源比;系统平安性;系统是否易于操作?策略:我们选择FreeBSD,而且是最小化安装以后的FreeBSD。解决之道——环境篇——Web效劳器Web效劳器很大一局部资源占用来自于处理Web请求,通常情况下这也就是Apache产生的压力,Apache是世界使用排名第一的Web效劳器软件。它可以运行在几乎所有广泛使用的计算机平台上。在高并发连接的情况下,Nginx是Apache效劳器不错的替代品。Nginx(“enginex”)是俄罗斯人编写的一款高性能的HTTP和反向代理效劳器。在国内,已经有新浪、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用Nginx效劳器。Nginx的优势:高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。内存消耗少:在3万并发连接下,开启的10个Nginx进程才消耗150M内存〔15M*10=150M〕。内置的健康检查功能:如果NginxProxy后端的某台Web效劳器宕机了,不会影响前端访问。

策略:相对于老牌的Apache,我们选择Ligd和Nginx这些具有更小的资源占用率和更高的负载能力的web效劳器。解决之道——环境篇——MysqlMySQL本身具备了很强的负载能力,MySQL优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解。大家都知道数据库工作就是大量的、短时的查询和读写,除了程序开发时需要注意建立索引、提高查询效率等软件开发技巧之外,从硬件设施的角度影响MySQL执行效率最主要来自于磁盘搜索、磁盘IO水平、CPU周期、内存带宽。根据效劳器上的硬件和软件条件进行MySQl优化。MySQL优化的核心在于系统资源的分配,这不等于无限制的给MySQL分配更多的资源。在MySQL配置文件中我们介绍几个最值得关注的参数:改变索引缓冲区长度(key_buffer)改变表长(read_buffer_size)设定翻开表的数目的最大值(table_cache)对缓长查询设定一个时间限制(long_query_time)如果条件允许,一般MySQL效劳器最好安装在Linux操作系统中,而不是安装在FreeBSD中。

策略:MySQL优化需要根据业务系统的数据库读写特性和效劳器硬件配置,制定不同的优化方案,并且可以根据需要部署MySQL的主从结构。解决之道——环境篇——PHP1、加载尽可能少的模块;2、如果是在windows平台下,尽可能使用IIS或者Nginx来替代我们平常用的Apache;3、安装加速器〔都是通过缓存php代码预编译的结果和数据库结果来提高php代码的执行速度〕

eAcceleratoreAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对效劳器的开销几乎完全消除。ApcAlternativePHPCache〔APC〕是PHP的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化PHP的中间代码。memcachememcache是由DangaInteractive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。主要机制是通过在内存里维护一个统一的巨大的hash表,Memcache能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等Xcache国人开发的缓存器,策略:为PHP安装加速器。解决之道——环境篇——代理效劳器SquidCache〔简称为Squid〕是一个流行的自由软件〔GNU通用公共许可证〕的代理效劳器和Web缓存效劳器。Squid有广泛的用途,从作为网页效劳器的前置cache效劳器缓存相关请求来提高Web效劳器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络平安,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

策略:安装Squid反向代理效劳器,能够大幅度提高效劳器效率。解决之道——环境篇——总结推荐的效劳器环境配置:操作系统: FreeBSD

web效劳器: Nginx程序语言: PHP+ZendOptimizer+eAccelerator数据库: MySQL解决之道——SiteEngine篇SiteEngine历史上为了解决高并发高负载做了那些工作:1、静态化;2、缓存;3、内存表;4、定长表;5、尽可能少用join还有IN。解决之道——SiteEngine篇SiteEngine在实施高并发高负载中出现的问题:SiteEngine在前期的开展中,一直是面向通用型的中小网站来设计的。从底层上就有不适应高并发高负载的机制存在。具体表现在:1、原有缓存功能,特别是类别的缓存无用武之地;2、无用的sql查询和sql查询的效率问题;3、多语言设计导致很多查询都变得复杂,导致效率低下;4、Mysql中的查询方法太多;5、前台的动态交互太少。解决之道——SiteEngine篇为了让SiteEngine更好的适应高并发高负载的环境。主要从以下几个方面进行改进:1、参加Memcache缓存技术;2、开发一套精简版高效率的SiteEngine开发框架,专门应对系统开发;3、MySQL数据库考虑转为innodb数据引擎;4、前台更大量的参加Ajax元素;5、改变类别模式或者改变类别算法,取消类别缓存机制;6、成立专门的研发部门,将工程开发和软件研发分开;7、加强测试和团队合作。解决之道——测试篇1、测试方法2、测试用例3、压力测试压力测试是一种根本的质量保证行为,它是每个重要软件测试工作的一局部。压力测试的根本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。压力测试工具:webbench,ApacheBench等3、漏洞测试在我们的系统中漏洞主要包括:sql注入漏洞,xss跨站脚本攻击等。平安方面还包括系统软件,如操作系统漏洞,mysql、a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论