细说五层网站架构,了解我们的网站压力究竟在哪里? | 张戈博客

  • 时间:
  • 浏览:28
  • 来源:小贝博客 - 专注共享吾皇千睡博客资源

目前网站架构一般分成网页缓存层、负载均衡层、 WEB层和数据库层,我有的是要是 一般都会多加一层,即文件服务器层,并且没那么 人儿在后边的讨论过程中,没那么 人儿能不让 依次用这五层对网站架构来进行讨论;这里为了更具有说服力,我将用并且并发较大的生产环境来说明下,并且是我现在维护的电子商务网站(并发最大峰值2900,日PV60 0万左右)、我目前维护的电子广告网站(并发最大峰值60 0,日PV60 万左右)、并且维护的大型CDN门户广告网站(并发最大峰值60 00,日PV60 00万左右)。  

网页缓存层  

首先说下并有的是网页缓存层,比如CDN租赁(效果比公司买车人部署Squid/Varnish要好,没那么 人专业,价格低廉,比如快网/CC等(价格60 元/M/月只有)并且覆盖的城市更多),买车人架设squid/Varnish是次选。另外,统统有没那么 人喜欢尝试自建CDN,并有的是是并且比较吃力不讨好的活儿,有的是要是 能达到预期目标,这块系统架构师在架设网站初期有的是规划好,有的是要是 等到网站流量及压力巨大时才去规划。事实上,并有的是层有统统有优

秀的开源软件都能胜利,比如传统的Squid Cache,另外,后起之秀Nginx和Varnish机会性能优异,不要 的没那么 人尝试在买车人的网站使用没那么 人作为买车人的网页缓存,事实上,Nginx机会具备Squid所拥有的Web缓存加速功能,此外,Nginx对多核CPU的利用,胜过Squid不少,现在那么 来的架构师都喜欢将Nginx同去作为“负载均衡服务器”与“Web缓存服务器”来使用,没那么 人儿能不让 根据买车人网站的状况,来决定究竟使用哪种软件来作为买车人网站的网页缓存。

负载均衡层  

首先说下负载均衡层,没那么 人儿熟悉的硬件/软件技术有F5,LVS/HAProxy,还有Nginx,它们的性能有的是非常优异的,F5/LVS现在在全世界范围内的应用,并且淘宝现在升级架构,也将LVS取代了F5,HAProxy机会没那么 人儿有的是很糙熟悉,但HAproxy+Keepalived确有的是要是 生产环境下表现优异,强大的吞吐能力,稳定性比之

硬件过尤不及,并用淘宝也在大规模的推广使用HAProxy,有兴趣的没那么 人不让 不让 关注。再说下Nginx,我是将Nginx+Keepalived架构用于了各种生产环境中的,经过长时间的线上观察,发现Nginx作为负载均衡器/反向代理也很稳定,机会并发压力过大,没那么 人儿前面能不让 用F5/LVS作为最前端的负载均衡,而将Nginx作为七层代理,并且的效果有的是要是 要是 差,统统有负载均衡层的压力只有否是很糙大。

WEB层  

WEB层这块压力比较大的网站现在都上加了Nginx作为WEB应用服务器,事实上,它的抗并发能力有的是要是 超过了预期;我现在维护的一家门户网站,高峰期时某台Nginx应用服务器的并发达到了一万以上,但Nginx也很负责和稳定的提供服务,在实际的生产环境中,机会没那么 人儿考虑到后端的数据库服务时,一万并发应该也否是并且比较大的数值了。另外,Linux集群有并且优势,要是 它的高扩展性,就算没那么 人儿的网站的并发有一万以上,没那么 人儿后端的WEB服务是Apache,没那么 人儿多加几台 Apache服务器即可,在实际的线上维护时,没那么 人儿发现,高峰期间,实际上每台WEB的并发有的是要是 否是很糙大,统统有网站的压力在并有的是层没那么 人儿不让 通过技术手段加以克服。

文件服务器层 

现在没那么 人儿的生产服务器一般是使用如下并有的是来作为买车人的文件服务器层:

1)单NFS+备份NFS作为文件服务器,并且的好处是维护方便,但存在着单点故障,都要人为手动干预;

2)DRBD+Heartbeat+NFS高可用文件服务器,维护方便,要是 存在着单点故障,但随着访问量的增大,后期一样存在着压力过大的状况;

3)分布式文件系统MFS、Gluster,,MFS易用,稳定,对海量小文件很高效,并且新版的MFS正确处理了

Master Server存在着单点故障的问題图片, 国内不要 的公司在使用MFS。事实上,分布式文件系统是正确处理文件服务器压力过大的最终途径,但并有的是同去有的是隐患,网站功能不要 ,摊子越大,机器不要 ,维护起来越比较复杂。

4)机会没那么 人儿的公司是淘宝和腾记并有的是巨量级的公司,能不让 尝试开发买车人的分布式文件系统了,没那么 人儿能不让 尝试根据买车人网站的状况,来决定究竟选着哪并有的是软件来作为买车人的文件服务器。 

数据库层 

数据库层的压力,我有的是要是 网站的PV和并发上去并且,数据库这块的压力是最大的,CDN大型广告网站没那么 人儿用的是Oacle RAC方案,它保证了数据的高可用性,当然了价格也是非常昂贵的(机会使用高配置的PC服务器,Oracle一般按照CPU个数收费);那么 免费的 MySQL数据库,面对并有的是并发压力大的状况,并有的是并且没那么 人儿应该为什么在么在么办呢?首先,没那么 人儿能不让 在数据库加入memcached数据缓存,在实际线上使用时,没那么 人儿也发现memcached功能强大,性能稳定,在数据库频繁读写,压力过大的状况下,增加一台memcached数据缓存服务器的效果能超过没那么 人儿的预期。数据库的硬件方面能不让 考虑投入,磁盘阵列做成RAID10,机会资金丰沛 ,磁盘能不让 用固定硬盘来代替SAS硬盘,毕竟数据库的压力主要来自于磁盘I/O方面。合理的设计MySQL数据库的架构,事实上,在生产环境下,一主多从、读写分离是靠谱的设计方案,从MySQL的负载均衡我这里推荐没那么 人儿使用LVS,这是机会当后边的MySQL机器超过十台时,HAProxy在这方面的性能不如LVS。机会网站的业务量过大,没那么 人儿能不让 采用分库的最好的办法,比如将网站的业务量分成Web、BBS、Blog等几组,每一组均采用主从架构,并且设计语录就正确处理了单组数据库压力过大的状况。另外,没那么 人儿还应该配合公司的MySQL DBA和开发人员,在数据库参数优化、SQL语录优化、数据切分上多做功夫,正确处理数据库成为没那么 人儿网站的瓶颈。

希望没那么 人儿不让 通过以上网站的五层分解,结合买车人网站的状况,了解每一层在网站设计中的作用和重要性,找出网站瓶颈加以优化,将买车人的网站打造成高可用高可扩展性的网站。