如何应对服务器压力?服务器横向扩展(加机器)策略详谈

广告位招租
扫码页面底部二维码联系

在生产环境中,一个网站或服务端应用出现响原创内容,盗版必究。转载请注明出处:www.tangshuang.net应迟缓的时候,就应该考虑是否由于用户量太著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】多,导致服务器难以处理的情况,并应该考虑转载请注明出处:www.tangshuang.net原创内容,盗版必究。花钱来解决这个问题。当然,这里首先会想到转载请注明出处:www.tangshuang.net【未经授权禁止转载】廉价的解决方式,比如通过调整服务器配置,未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。优化代码性能等,但这些方式技术成本和时间【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。成本大,有的时候优化效果也并不理想。而最转载请注明出处:www.tangshuang.net【版权所有,侵权必究】简单粗暴,也是最有效的方式,就是我们俗称著作权归作者所有,禁止商业用途转载。【作者:唐霜】的“加机器”。本文就来谈一谈服务器横向扩【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。展。

【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】ngnet】著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshu著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。ang.net本文版权归作者所有,未经授权不得转载。

1.单台服务器的扩展

原创内容,盗版必究。未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。

一般而言,一台服务器上面,最起码要运行三原创内容,盗版必究。【本文受版权保护】个环境:服务器环境、程序语言执行环境、数本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。据库环境。对于我们用PHP进行开发的网站【本文首发于唐霜的博客】【版权所有,侵权必究】,一般会考虑Apache+NGINX+M转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】ySQL+Redis+PHP来跑整个系统【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。,其中,nginx处理静态资源响应,ap【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.netache处理php进程,mysql负责数【版权所有,侵权必究】【版权所有,侵权必究】据存储,redis负责经常需要进行调用的原创内容,盗版必究。【作者:唐霜】临时性数据。但是,在这个环境中,我们往往【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】忽视一个非常重要的因素,那就是服务器本身本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net的硬件配置。首先是CPU和内存,这是我们【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net比较容易想到的,CPU决定了服务器的运算【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】速率,内存决定了一个程序系统能够在一定时【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。间内存放的变量和数据结构吞吐。程序对内存【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。的操作,速度会比对硬盘的读写快很多,直到原创内容,盗版必究。【原创不易,请尊重版权】内存中的空间被释放回收。而如果内存不足,原创内容,盗版必究。【原创内容,转载请注明出处】则会导致程序无法完成高效的内存数据读写,【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。拖慢网站或应用速度。除了CPU和内存,另【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】一个被忽视的因素就是硬盘。传统的机械硬盘未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】在读写时,依赖硬盘的转速,而无论如何,只本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】要硬盘要转,就会花费时间。

本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。

因此,单台服务器的扩展主要是增多、扩大C【原创不易,请尊重版权】转载请注明出处:www.tangshuang.netPU,增加内存,增加硬盘,或更换固态硬盘本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。。于此同时,增加宽带来提高网络容量。这是未经授权,禁止复制转载。【本文首发于唐霜的博客】横向扩展中最容易做到的,一般向服务商提供【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】申请,或直接购买就可以完成。

未经授权,禁止复制转载。转载请注明出处:www.tangshua【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.netng.net原创内容,盗版必究。转载请注明出处:www.tangshua【版权所有,侵权必究】【原创内容,转载请注明出处】ng.net

2.数据库和程序进程分离

原创内容,盗版必究。【访问 www.tangshuang.n本文版权归作者所有,未经授权不得转载。【作者:唐霜】et 获取更多精彩内容】

PHP+MySQL的网站,其实比较大的局【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】限在于MySQL的连接和执行效率。几乎所【转载请注明来源】转载请注明出处:www.tangshuang.net有的公司都要求PHP程序员掌握MySQL【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。的优化方法,但是无论如何优化,始终会有一【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。个瓶颈,这个瓶颈是由服务器硬件IO带来的【未经授权禁止转载】转载请注明出处:www.tangshuang.net。因此,在很多访问量比较大,或数据处理压【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。力比较大的项目中,都会采用数据库服务器和本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。程序服务器分离的方法。

本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.n【作者:唐霜】【版权所有,侵权必究】et 获取更多精彩内容】【作者:唐霜】

数据库服务器和程序执行服务器的性能配置根【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。据实际情况而定,有的时候,数据库的压力更著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】大,因此数据库服务器配置更加高。这种扩展转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net方式实现起来也比较简单,例如在阿里云购买【原创不易,请尊重版权】【原创内容,转载请注明出处】服务器,新增一台与原来服务器在同一个网段原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。的服务器,新服务器不安装apache和n本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。ginx,只安装mysql,停用原来服务【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】器中的mysql,迁移数据后,通过局域网原创内容,盗版必究。【转载请注明来源】IP,将程序的数据库连接到这台新的服务器未经授权,禁止复制转载。【版权所有,侵权必究】上。

【原创内容,转载请注明出处】【本文首发于唐霜的博客】【原创内容,转载请注明出处】

database-website-slip

【版权所有,侵权必究】【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】ngnet】

目前市面上有不同服务商的云数据库服务,但【原创内容,转载请注明出处】【本文受版权保护】从价格而言,云数据库的价格远高于一台普通本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】云服务器的价格,对于中小型项目而言,采用【原创不易,请尊重版权】【原创内容,转载请注明出处】两台服务器的成本低于购买云数据库服务来代【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。替数据库服务器的费用。

【版权所有,侵权必究】转载请注明出处:www.tangshua转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】ng.net

3. 静态资源与程序脚本的分离

本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【作者:唐霜】

服务器的静态资源不仅占用服务器的存储空间【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net,同时还占用服务器的IO,当同一个静态资著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。源,例如图片、视频、css文件、js文件转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net、其他格式的文件等等被反复请求时,服务器【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】需要反复请求读文件。机械硬盘的转速最高有转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】一个极限,当静态文件的请求将动态文件的请未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net求挤出队列的时候,网站程序的反应会变得很【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net慢。因此,当有必要的时候,将静态资源与程本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net序脚本进行分离,并使用CDN来对静态资源转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】进行节点缓存,不仅可以降低对服务器资源的本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。消耗,也可以加快响应速度。

本文版权归作者所有,未经授权不得转载。【作者:唐霜】【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。

database-website-static-slip

【作者:唐霜】本文作者:唐霜,转载请注明出处。【本文受版权保护】【版权所有】唐霜 www.tangshu原创内容,盗版必究。【作者:唐霜】ang.net

上图中出现了三台服务器,其中nginx服原创内容,盗版必究。【原创内容,转载请注明出处】务器,不仅承担了静态资源服务器,而且还承【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】担端口代理的角色。因为用户访问网站的入口本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net只有一个,所以不可能同一次访问到达两台服【作者:唐霜】本文版权归作者所有,未经授权不得转载。务器;而且,也需要有一个程序来识别,用户【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】的这个请求到底是要请求静态资源,还是请求原创内容,盗版必究。【原创不易,请尊重版权】程序。这种扩展方式被广泛用在中小型项目中【原创不易,请尊重版权】未经授权,禁止复制转载。,用以减轻服务器的巨大压力。

未经授权,禁止复制转载。【版权所有】唐霜 www.tangshu【本文受版权保护】【版权所有,侵权必究】ang.net【本文受版权保护】

4.均衡负载:多台服务器执行程序,将大量【原创内容,转载请注明出处】原创内容,盗版必究。请求分摊给多台服务器

【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。

无论如何,一台服务器的进程是有限的,我们【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。不可能无限制的把一台服务器的CUP加到6本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】4个,把内存加到1T,则是不可能的。因此【转载请注明来源】本文作者:唐霜,转载请注明出处。,出现了均衡负载技术,通过将多台服务器组未经授权,禁止复制转载。【原创内容,转载请注明出处】合成一组可以完成相同任务的服务器,当用户原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】发出请求时,根据每台服务器的运行状态,让【原创不易,请尊重版权】未经授权,禁止复制转载。那些相对而言有富余的服务器来执行这个用户未经授权,禁止复制转载。原创内容,盗版必究。的请求。

【本文受版权保护】【原创不易,请尊重版权】转载请注明出处:www.tangshua本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】ng.net本文作者:唐霜,转载请注明出处。

database-website-control-static-slip

【原创不易,请尊重版权】【本文受版权保护】【版权所有】唐霜 www.tangshu【本文首发于唐霜的博客】【未经授权禁止转载】ang.net

上图中,出现了多台Apache服务器,这【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。些服务器的配置不一定相同,但是他们的环境【未经授权禁止转载】【原创不易,请尊重版权】一定是一样,每一台上面都存放着相同的程序著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】代码,能够保证同一个请求,无论到达哪一台未经授权,禁止复制转载。未经授权,禁止复制转载。服务器进行执行,都能得到相同的结果。而上【作者:唐霜】【关注微信公众号:wwwtangshuangnet】图中多出了一个“控制器”,一般而言,有两【未经授权禁止转载】本文作者:唐霜,转载请注明出处。种方式来进行控制,一种是DNS,也就是域【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】名解析的时候,根据访问压力情况,解析到不【原创不易,请尊重版权】【作者:唐霜】同的服务器上面去;另一种则是域名统一解析【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。到一台固定的服务器,由这台服务器来决定这【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。个请求应该由哪一台服务器来进行处理。

原创内容,盗版必究。未经授权,禁止复制转载。未经授权,禁止复制转载。

虽然从上图中,我们能够简单的理解这种扩展【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】模式,但是实际生产中,会遇到非常严重的问本文版权归作者所有,未经授权不得转载。【本文受版权保护】题。例如,session怎么来处理?服务著作权归作者所有,禁止商业用途转载。【转载请注明来源】器的读写怎么来解决同步性问题?数据库的写【本文受版权保护】未经授权,禁止复制转载。入和更新顺序怎么来解决等等。由于程序被不【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。同的服务器执行,这就导致不同服务器之间执【本文首发于唐霜的博客】【作者:唐霜】行附带行为结果产生不同,例如日志,同一个转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。用户的日志可能散落在不同的服务器上,怎么未经授权,禁止复制转载。【原创不易,请尊重版权】样确保在进行日志调用的时候,能够将这些日转载请注明出处:www.tangshuang.net【未经授权禁止转载】志统一处理呢?这里面都还有很多问题去解决本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net

【作者:唐霜】原创内容,盗版必究。【未经授权禁止转载】原创内容,盗版必究。

5.主从数据库

原创内容,盗版必究。【本文首发于唐霜的博客】【转载请注明来源】

从上面的图形进化来看,数据库服务器的均衡本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net负载也是必要的。但是和程序执行服务器的均著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。衡负载不同,不是在每台服务器上面丢相同的本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。一套程序就可以满足数据库问题的。和程序的著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】均衡负载有着极大的不同,由于数据库是随时【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】随地都要用的,它的读写是即时的,不可能像未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。程序一样,在每一台服务器上放上相同的代码【未经授权禁止转载】原创内容,盗版必究。就可以解决问题,如果处理不好,很有可能导未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net致用户请求的时候,一会儿有数据,一会儿没【版权所有】唐霜 www.tangshuang.net【作者:唐霜】数据。主从数据库的概念很早就有,简单的理未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net解就是将数据库的读写操作分离,读操作由从本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】数据库完成,写操作由主数据库完成,写完之本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net后,立即将数据同步到从数据库。

【原创内容,转载请注明出处】【版权所有,侵权必究】

database-master-sli-website-static-slip

原创内容,盗版必究。【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。ngnet】本文作者:唐霜,转载请注明出处。

为了解决数据库的均衡负载问题,主从数据库原创内容,盗版必究。原创内容,盗版必究。技术也进行了多次升级,但是就目前而言,仍本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】然没有从理论上达到完美解决这种问题。由于【转载请注明来源】【原创内容,转载请注明出处】查询动作没有造成文件的变化,因此实际上和本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】程序代码的均衡负载一样,从数据库也可以由著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】多个服务器来协同完成,只不过在执行写入更【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。新操作之后,主数据库要同步到所有的从数据著作权归作者所有,禁止商业用途转载。【转载请注明来源】库。

未经授权,禁止复制转载。【未经授权禁止转载】【访问 www.tangshuang.n本文版权归作者所有,未经授权不得转载。【作者:唐霜】et 获取更多精彩内容】【原创不易,请尊重版权】

database-master-sli2-website-static-slip

【版权所有,侵权必究】【版权所有,侵权必究】

因此,在这种情况下,采用云数据库,则是一【本文首发于唐霜的博客】【本文受版权保护】种比较明智的选择。

【转载请注明来源】本文作者:唐霜,转载请注明出处。【未经授权禁止转载】

为了解决这种复杂的服务器横向扩展问题,新【未经授权禁止转载】【原创内容,转载请注明出处】浪云SAE、阿里云ACE、百度云BAE,【原创不易,请尊重版权】原创内容,盗版必究。以及未来腾讯云也要推出的云引擎,这些云计【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。算服务以统一的策略,为我们提供了架构问题本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。,也就是说,在这些云引擎中去运行我们的程【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。序,就不用再过多的考虑均衡负载问题。云引【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。擎的架构远不止这种均衡负载这么简单,如果未经授权,禁止复制转载。【未经授权禁止转载】你去深入研究新浪云的架构,就会为这种牛X【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net的设计惊叹。云引擎+云数据库+CDN,就【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。像一把利剑为我们的项目解决了服务器的基础原创内容,盗版必究。本文作者:唐霜,转载请注明出处。问题,这也是这个时代云计算服务商的伟大之【未经授权禁止转载】【原创内容,转载请注明出处】处。

【转载请注明来源】【未经授权禁止转载】【转载请注明来源】

2015-11-04 10762

为价值买单,打赏一杯咖啡

本文价值107.62RMB