目前网站架构一般分成负载均衡层、WEB层和数据库层,我其实一般还会多加一层,即文件服务器层,这样我们在后面的讨论过程中,我们可以依次对这四层进行讨论;这里为了更具有说服力,我将用三个并发较大的生产环境来说明下,一个是我现在维护的电子商务网站(并发最大值2000,日PV500万左右,此并发并不是总这么高的,只是最高峰是有2900,下面的网站类似)、我的一拍网网站(并发最大值500,日PV50万左右)、以前维护的大型CDN广告网站(并发最大值5000,日PV5000万左右)。
首先说下负载均衡层,我们熟悉的硬件/软件技术有F5/LVS、HAProxy,还有Nginx,它们的性能都是非常优异的,且不说F5的抗并发能力,LVS现在在全世界范围内的应用,而且淘宝现在升级架构,也将LVS取代了F5,HAProxy可能大家不是特别熟悉,但它确实在生产环境下表现优异,强大的吞吐能力,稳定性比之硬件过尤不及,再说下Nginx,我是将Nginx/HAProxy+Keepalived架构用于了各种生产环境中的,经过长时间的线上观察,发现Nginx/HAProxy作为负载均衡器/反向代理也很稳定,就算并发压力过大,我们前面可以用F5/LVS来顶,而将Nginx作为中层代理,这样的效果其实也不差,所以负载均衡层的压力不能算是特别大。
WEB层这块压力比较大的网站现在都换成了Nginx作为WEB应用服务器,事实上,它的抗并发能力确实超过了预期;我朋友维护的一家门户网站,高峰期时某台Nginx应用服务器的并发达到了一万以上,但Nginx也很负责和稳定的提供服务,在实际的生产环境中,如果我们考虑到后端的数据库服务时,一万并发应该也算是一个比较大的数值了;另外,Linux集群有一个优势,就是它的高扩展性,就算我们的网站的并发有一万以上,我们后端的WEB服务是Apache,我们多加几台Apache服务器即可,在实际的线上维护时,我们发现,高峰期间,实际上每台WEB的并发并不算是特别大,所以网站的压力在这一层我们也能通过技术手段加以克服。
再说下文件服务器层,由于网站的后期宣传策话,名气也越来越大,PV值也越来越高,原先的DRBD+Heartbeat+NFS(这个其实也只是单NFS,只不过我们利用DRBD来保证NFS的高可用而已)已经越来越顶不住压力了,这个时候我们想到了分布式文件系统,我测试的的是MooseFS,在内网测试了很长时间还是没敢用到生产环境下面,googel的分布式文件系统还是很成熟的,推荐大家学习;最后还是用采用以前的CDN传统的方法解决这个问题,即用了squid反向代理加速器来解决小文件过多的问题,Nginx强大的正则处理分发能力,也让后端的NFS压力变得很小;另外,我还用采用域名的分散策略例如使用pics.xxx.com/pdf.xxx.com...来区分标记为a或b的一系列文件,这些文件存储的时候,依然按照标记,存到pics或pdf的服务器上。这个策略将区分机器的任务交由dns服务器来执行,扩容时会相应轻松。这需要web项目初期就规划好这些东东,后期才转用域名策略的成本比较高甚至不可以实现,大家可以注意下,其实这一层如果网站是专业的图片服务器网站时压力还是很大的,我们需要在这个上面投入足够多的硬件资源。
最后说下数据库层的压力,我觉得网站的PV和并发上去以后,数据库这块的压力是最大的,CDN大型广告网站我们用的是oracle RAC方案,它保证了数据的高可用性,当然了价格也是非常昂贵的(如果使用高配置的PC服务器,Oracle一般按照CPU个数收费);那么免费的MySQL数据库,面对这种并发压力大的情况,又用哪些方法呢?首先,我们说下传统的MySQL主从方案,配置简单,单机MySQL优化做好事性能也不弱,如果这种架构解决不了数据库的压力情况,我们可以考虑以下几种方案:
常规复制架构--Master-slaves,是由一个Master复制到一个或多个Salve的架构模式,主要用于读压力大的应用数据库端廉价扩展解决方案,读写分离,Master主要负责写方面的压力。级联复制架构,即Master-Slaves-Slaves,这个也是为了防止Slaves的读压力过大,而配置一层二级 Slaves,很容易解决Master端因为附属slave太多而成为瓶劲的风险。
Dual Master与级联复制结合架构,即Master-Master-Slaves,最大的好处是既可以避免主Master的写操作受到Slave集群的复制带来的影响,而且保证了主Master的单点故障。
MySQL的数据库切分,我们可以通过数据切恰好技术将一个大的MySQL Server切分成多个小的MySQL Server,既解了写入性能瓶颈问题,同时也一次提升了整个数据库集群的扩展性,从而解决了数据库压力过大的问题,这个现在也是我在生产环境中比较推荐的做法之一。
事实上我也跟许多系统维护人员和MySQL DBA线下交流过,现在生产环境下用得比较多的MySQL架构有:一、MySQL一主一从(这个优化得好,百多万PV的网站完全没问题);二、DRBD+Heartbeat+MySQL(MySQL官方推荐);三、MySQL一主多从,读写分离,LVS或HAProxy作读的LB。
这段时间一直跟老男孩前辈交流千万级PV的网站架构,系统架构其实是件艺术活儿,我们应该尽量做到以下几点:一、保证高可用;二、保证高可扩展性;三、尽量把用户往外面推(老男孩语),足矣。
相关推荐
网站压力测试工具,网站压力测试工具,非常不错的
was 微软的 网站 压力 测试 工具 was 微软的 网站 压力 测试 工具 was 微软的 网站 压力 测试 工具
反伊网站压力测试
压力测试
推荐5款网站压力测试工具 服务器压测工具对网站进行压力测试的工具.zip
在测试之前,您 需要设置好测试模式和测试参数,以便系统可以模拟真实的高 流量访问。然后,您可以运行测试工具并监控测试结果,以便 及时发现服务器性能问题并进行优化。 CC压力测试系统源码的安装步骤 下载CC压力...
网站压力测试详细教程,仅为一人收集整理,愿大家分享技术网站压力测试详细教程,仅为一人收集整理,愿大家分享技术网站压力测试详细教程,仅为一人收集整理,愿大家分享技术网站压力测试详细教程,仅为一人收集整理,愿大家...
webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具webserver网站压力测试工具
网站压力测试工具可以测试不同上网方式、不同地区、访问Web不同页面、在不同并发访问密度情况下的客户端响应时间、流量和流速,实现极高的服务器测试,数据精准。网站压力测试软件适用于所有windows平台,操作简单,...
网址测试方面的一款不错的必备软件。
以前的Web版禁用了,现在有单机版了,使用简单。一款网站负载压力测试工具,可以测试服务器负载性能和网站并发性能,是网站开发者必备工具之一。
数据库压力解决方法,网站大流量,系统的应对
网站压力测试程序,用于测试网站的可以承受的并发数,用java编写,带源码
phpddos12.0 网站网络压力测试
网站负载压力测试工具,本人亲测可用,网上可以找到相关使用教程。
介绍Microsoft的Web Application Stress Tool WAS,Web应用负载测试工具
压缩包里面是我们做web开发常用的三种压力测试软件,网上一直没有集合版本,我把它们放到了一起,方便大家查找和使用,都测试过 可以直接使用,解压缩就可以使用了
十大抢手的网站压力测试工具.现有的相关资源处理
LOIC 网站压力测试软件