高并发处理方案

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

简单作一个概括,从低成本、高性能和高扩张性的角度来讲有以下处理方案: 
  一、HTML静态化 
  二、图片服务器分离 
  三、数据库集群和库表散列 
  四、缓存 
   五、镜像 
   六、负载均衡;一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在不少大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都很是容易。 

下面也是一个牛人所作的总结,跟上面部分相同。 
高并发时,性能瓶颈及当前经常使用的应对措施 

1.数据库瓶颈。Mysql并发连接100 
2.apache 并发连接1500 
3.程序执行效率 

1.有数据库瓶颈时,当前处理方案无外乎 主从,集群。增长cache(memcached). 
如:手机之家新系统介绍及架构分享(http://www.slideshare.net/Fenng/ss-1218991?from=ss_embed) 
就是在cache层作优化 
又拍网架构(http://www.bopor.com/?p=652) 
是以增长数据库,分表分库的方法解决。 
Sina增长了mq(消息队列)来分发数据。 
还有风站用了key-value的数据库。其实这能够理解成一个持久化的缓存。 

2.apache瓶颈。 
增长服务器。负载均衡。如sina的F5 
因为进程数的限制。会把一些基本不变的代码挪出来放到单独的服务器。如css/js/图片。 
国内成功的案例是tom的cdn 
又如nginx的横空出世和squid的反向代理都是基于这个缘由出来的。 

3.php的执行效率。缘由有多个。 
1).自己的效率低。 
解决的成功案例是Zend Optimizer 和 facebooke的hiphop 
Taobao是把php代码编译成模块解决效率问题。 

2). 数据库查询效率问题。如可能有order by ,group by 等Sql数据问题。 
这个其实应该归结到数据库设计问题。 
解决的办法是创建正确的索引。增长memcache.。 
对like表 用专用的sphinx.和lucence 等搜索服务。 
程序员都应该会用explain对sql语句做分析。 

说到底。解决高并发就是上面所列技术,程序员要作的就是把每一个技术具体实现。
相关文章
相关标签/搜索