高并发处理方案

时常看到高并发的问题,但高并发其实是最不需要考虑的东西。为何,他虚无缥缈,很少有网站真的需要这些东西,而且其中很多技术,其实你已经在用了。有这个意识就够了,不需要时刻盯着这个问题。只有很少的网站真的能达到高并发。

简单做一个归纳,从低成本、高性能和高扩张性的角度来说有如下处理方案:

  • HTML静态化
  • 图片服务器分离
  • 数据库集群和库表散列
  • 缓存
  • 镜像
  • 负载均衡:一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。

下面也是一个牛人所做的总结,跟上面部分相同。

高并发时,性能瓶颈及当前常用的应对措施

数据库瓶颈:Mysql并发链接100

有数据库瓶颈时,处理方案无外乎主从集群。增加cache(memcached)。

  • 手机之家新系统介绍及架构分享 就是在cache层做优化。
  • 又拍网架构 是以增加数据库,分表分库的方法解决。
  • Sina增加了mq(消息队列)来分发数据。
  • 还有风站用了key-value的数据库。其实这可以理解成一个持久化的缓存。

apache 并发链接1500

增加服务器。负载均衡。如sina的F5。

由于进程数的限制。会把一些基本不变的代码挪出来放到单独的服务器。如css/js/图片。

国内成功的案例是tom的cdn。

又如nginx的横空出世和squid的反向代理都是基于这个原因出来的。

php的执行效率

原因有多个:

  • 本身的效率低。

    解决的成功案例是 Zend Optimizer 和 facebooke 的 hiphop。

    Taobao 是把 php 代码编译成模块解决效率问题。

  • 数据库查询效率问题。如可能有order by ,group by 等Sql数据问题。

    这个其实应该归结到数据库设计问题。

    解决的办法是建立正确的索引。增加memcache。

    对 like 表用专用的 sphinx 和 lucence 等搜索服务。

    程序员都应该会用 explain 对 sql 语句作分析。

说到底。解决高并发就是上面所列技术,程序员要做的就是把每个技术具体实现。

转载自:http://fsh430623.iteye.com/blog/715981

你可能感兴趣的:(高并发)