原文:http://oldboy.blog.51cto.com/2561410/615721

如何才能做到网站高并发访问?--之我荐--老男孩
#########################################################
# 如何才能做到网站高并发访问?--之我荐
#date:2011-07-18
#作者:老男孩
#QQ:31333741 MAIL:oldboy521@hotmail.com
#QQ交流群:45039636   
#blog: http://oldboy.blog.51cto.com
#psite: http://oldboy.cc(即将开放)
#pblog:http://blog.etiantian.org
##########################################################

看了抚琴煮酒兄弟的文章http://andrewyu.blog.51cto.com/1604432/612032) 由感而发,随意谈了下高并发的一些经验,因此写了本文。
      时间短,经验有限,可能有很多语句描述不清,错别字等,如果对大家有一丝帮助,我就很开心了,欢迎大家指正!

█ 高并发网站访问的几个层次
有人会问,老说把用户对业务访问往前推,到底怎么推啊?推到哪呢?
==========================================================================》
 第一层:在用户浏览器端,使用apache的mod_deflate压缩传输,在比如:expires功能
         deflate和expires功能利用的好,就会大大提升用户体验效果及减少网站带宽,
         减少后端服务器的压力。当然,方法还有很多,这里不一一细谈了。这里的apache,还可以是Nginx,lighttpd等web服务软件。

第二层:页面元素,如图片/js/css等或静态数据html,这个层面是网页缓存层,
         比如CDN(效果比公司自己部署squid要好,他们专业,价格低廉,比如快网/CC等
       (价格80元/M/月不到)而且覆盖的城市更多),
         自己架设squid是次选,除非是为前端CDN提供服务,以减轻后端存储压力,而不是
         直接提供服务给最终用户。

第三层:静态服务器层一般为图片服务器,视频服务器,静态HTML服务器。
         这一层是前面缓存层和后面动态服务器层的连接纽带,大公司发布新闻
         等直接由发布人员分发到各cache节点(sina,163等都是如此),这和一
         般公司的业务可能不一样。所以,没法直接的参考模仿,比如人人的SNS。
         我们可以使用Q队列方式实现异步的分发访问,同时把动态发布数据(数
         据库中的数据)静态化存储。即放到本层访问,或通过其他办法发布到各
         cache节点,而不是直接让所有用户去访问数据库,不知道大家发现了没有,
         qq.com门户的新闻评论多的有几十万条,如果所有用户一看新闻就加载所有
         评论,那数据库不挂才怪。他们的评论需要审核(美其名约,实际是异步的
         方式,而且,评论可能都是静态化的或类似的静态化或内存cache的方式),
         这点可能就是需要51cto.com这样站点学习的,你们打开51CTO的一篇博文,
         就会发现下面的评论一直都显示出来了,也可能是分页的。不过,应该都是
        直接读库的,一旦访问量大,数据库压力大是必然。
        这里不是说51cto网站不好,所有的网站都是从类似的程序架构开始发展起来的。

第四层:动态服务器层:php,java等,只有到这个层才可能会访问数据库。
         经过前三层的访问过滤能到这层访问就很少了,一般都是新发布的内容和新发布内容第一次浏览 如;博文
       (包括微博等),BBS帖子。

第五层:数据库cache层,比如:memcache,memcachedb,tc等等。

第六层:数据库层,一般的不是超大站点都会用mysql主从结构,如:163,sina,kaixin都是如此,做数据库读写分离,
         一主(或双主)多从的方式,访问大了,就拆业务好了,比如:
         再给企业做兼职时,发现类似的51cto的一个站点,把www服务,blog服务,bbs
         服务都放一个服务器上,然后做主从。这种情况,当业务访问量大了,可以简单的
         把www,blog,bbs服务分别各用一组服务器拆分开,这种方式运维都会的,没啥难度。
         当然访问量在大了,可以继续针对某一个服务拆分如:www库拆分,也可以对库里的表拆分。
         需要高可用可以通过drbd等工具做成高可用方式。对于写业务大的,可以做MYSQL REP主主的方式,
         对于ORACLE来说,来几组oracle dg就够了,玩RAC要需要更多的软、硬件价格及维护成本的,另外,一般的中高级DBA,玩好RAC也不是很容易的。
         如果到这里访问量还很大,那就恭喜了,起码是几千万以上的PV了
         当然,某些超大公司还可能用写MASTER及所谓的3个以上master环状同步,每个master在带几个SLAVE,甚至用nosql数据库。
         这些都是浮云,我们搞服务,不是看人家喊什么你就用什么,好多人网上发布的帖子只是测试的。或者不适合你的。
         网上提供的文档等,你能测试搞出来就不容易了,出问题能快速解决,这个就没法一下子学会了。而且,好多软件本来就没有大公司用过,即没有大经过大规模的高并发测试,一旦用于重要业务,出问题,后果是很严重的,这就是开源的一个弊端,没有人支持。

第七层:其实大多数公司用NFS就够了。我所维护或经历过的上千万PV的用NFS及普通服务器做存储的还有大把,
         多一些磁盘,如SAS 15K*6的,或者用dell6850,搞几组 NFS存储,中小网站足够了。
         当然可以做成drbd+heartbeat+nfs+a/a的方式,就象就象抚琴煮酒兄弟说的。
         最可气的是一个要来我这里报名学习的月薪2000块的同学,跟我说会mfs,hadoop。。。浮云啊,浮云。
         会什么没有用的。我一直在跟所有的VIP学生强调:什么叫做会?
         在我从事的linux培训教学工作中,常常要求学生,在5分钟内完成一个模拟生产环境标准的heartbeat服务的部署。
         对于运维,我的观点是,只有在有限的时间内部署完成任务并且标准规范,才算真正会了。当然,能够全面理解原
         理并能在上线后排查故障、维护、优化就更好了。我在列几个,老男孩在培训中认为学生学习的学会的时限标准。

特殊业务,如人人,开心网,包括门户网站的评论,微博,大多都是异步的写入方式,即无论读写,并发访问数据库都是非常少量的。

以上1-7层 都搭好了,这样漏网到 第四层 动态服务器层:的访问,就不多了。一般的中等站点,绝对不会对数据库造成太大的压力。
当然特殊的业务 还需要特殊架构,来合理利用数据库和存储。

本文是在上班时间一个字一个字敲的。要被老板骂了,赶紧收活。呵呵!

(转载)

转载于:https://www.cnblogs.com/rubyloveromantic/archive/2011/07/21/2113048.html

如何才能做到网站高并发访问?相关推荐

  1. 实现网站的高并发访问

      高并发访问的核心原则其实就一句话"把所有的用户访问请求都尽量往前推". 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的 ...

  2. php大流量网站解决,PHP 大型网站 高并发大流量解决方案

    标签:htm   指定   配置   热备   耗资源   负载均衡集群   session管理   redis   mod 网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验 ...

  3. 大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问

    目录 一.问题源起 二.HDFS优雅的解决方案 (1)分段加锁机制 + 内存双缓冲机制 (2)多线程并发吞吐量的百倍优化 (3)缓冲数据批量刷磁盘 + 网络的优化 四.总结 五.参考文章 一.问题源起 ...

  4. 大型网站高并发解决方案——集群

    文章目录 大型网站高并发解决方案--集群 前言 一.集群 1.集群的分类 2.负载均衡集群(LB) (1)负载均衡集群结构 (2)负载均衡设备分类 3.高可用集群(HA) 4.高性能运算集群(HPC) ...

  5. 一个WEB网站高并发量的解决方案

    一个WEB网站高并发量的解决方案 参考文章: (1)一个WEB网站高并发量的解决方案 (2)https://www.cnblogs.com/dotnetHui/p/7943605.html 备忘一下.

  6. 面试官:为什么单线程的Redis可以实现高并发访问

    背景 上回说到小枫在接受面试官的拷打,所幸第一个问题回答的还不错,因此面试官对于小枫的初步印象还行.我们接着来看看小枫是怎么和面试官继续过招的吧,他还能扛得住面试官几个连环炮呢? 面试官考察目的分析 ...

  7. 网站高并发优化性能调优总结

    最近在对PHP网站高并发高性能有所领悟,今天写一篇关于这方面的文章.今天用我的测试站点:http://zhimo.yuanzhumuban.cc/来讲解实例. 支模网整体开发到上线为10个月左右,后端 ...

  8. 大型网站高并发——服务器负载均衡设计

    大型网站高并发--服务器负载均衡设计 方案一:直接路由方式(LVS-DR) 硬件配置:一台负载均衡器,两台或则三台TOMCAT服务器 WEB服务器配置:Linux + tomcat+ WEB应用程序( ...

  9. [转]高并发访问下避免对象缓存失效引发Dogpile效应

    避免Redis/Memcached缓存失效引发Dogpile效应 Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应). 推荐阅读:高并 ...

最新文章

  1. update_by_query timeout
  2. DLA实现跨地域、跨实例的多AnalyticDB读写访问
  3. 再赠邓超明(帮别人名字作诗)
  4. SAP customer engagement center Fiori界面登录后的处理
  5. React开发(117):ant design 新方式
  6. 6大主流开源SQL引擎总结,遥遥领先的是谁?
  7. 李想当年是被赶出汽车之家?真相了...
  8. Spring框架----IOC的概念和作用之程序的耦合和解耦
  9. oracle 10g的进程主要分为,Oracle10g 后台进程列表
  10. 「题解」:[BZOJ4558]方
  11. 【报告分享】2021日化行业社媒营销报告.pdf(附下载链接)
  12. 十天学会单片机(4)数码管显示的原理,中断系统
  13. 小川OpenCV100例 之 识别定位二维码
  14. msdia80.dll 是干什么的?这个文件可以删除吗?
  15. SA方法分析-图书管理系统
  16. 浅谈SSD RAID Parity设计
  17. 《黑客与画家:硅谷创业之父Paul Graham文集》----读书笔记
  18. NIPS2019:旷视提出DetNAS:首个搜索物体检测Backbone的方法
  19. 优于 ViT 和 MLP-Mixer 的全局滤波器:Global Filter Networks for Image Classification [NeurIPS 2021]
  20. MIGO/CO11N 批次创建增强 自定义批次号创建规则

热门文章

  1. open() api
  2. 曾经以为20岁很遥远_曾经以为30岁很遥远,却发现18岁是很久之前的事了。
  3. 如何快速分析一个行业?
  4. 百万年薪的腾讯员工买得起深圳房子吗?
  5. 【交换机】配置RNStrack的功能原理是什么?
  6. Maven学习总结(41)——Maven依赖范围、传递、排除详解
  7. Linux学习总结(29)——CentOS 6和CentOS 7区别总结
  8. Maven学习总结(4)——Maven核心概念
  9. mysql 事务 innodb 锁表_MySQL性能优化之Innodb事务系统,值得收藏
  10. 更改计算机用户文件夹,win10系统怎么自定义C盘用户文件夹名称