高并发电子商务(WEB)项目方案

最近在思考,如何开发一个高并发的web应用。主要是个人总结的经验和方法论,欢迎大家扔石头砸我并积极的讨论。

1.性能分析
分析高并发的瓶颈在哪里,根据笔者的经验瓶颈主要出现在CPU和数据库上。其次是网卡和网络的负载。在cpu负载100%的情况下,会拒绝受理请求。数据库的瓶颈在写入的情况下居多。

2.架构
1)作业调度
目前笔者了解的方案是quartz的集群方案,采用数据库作为锁来控制定时任务执行的唯一性,避免集群里定时任务被执行2次。

2)session
在web项目中,做集群比较难的地方就是session复制。所以我们一般情况下禁用session,采用cookie来取代。

3)web服务器优化
一般静态资源和请求的分发,我们通常采用apache和nginx来处理。目前尤其推荐ngnix。他的性能比apache高级个数量级。后端的jsp/servlet容器,一般会改变他的运行模式。比如tomcat有bio,nio,apr三种模式。最理想的情况下,是采用apr模式才增加吞吐量。

4)缓存
单机缓存ecache
分布式缓存memcache

5)数据库
a 分表:表名区分(tab1,tab2,tab3),逻辑分区(根据算法)
b 读写分离
c 不能有外键
d 语句优化,例子如下:
m*n
select * from flight,city where flight.startcityid=city.cityid and city.name='beijing';

m + n
select * from flight where startcityid = (select cityid from city where cityname='beijing');

e 索引
f 数据库系统参数设置
g 表中字段适当冗余

6)操作系统优化
调整linux内核参数,定制操作系统以适应特殊的高并发需求。

7)建立分布式应用或者云体系

3.集群优化
从web,service,数据库,缓存4个角度做各种集群。

猜你喜欢

转载自phl.iteye.com/blog/1137461