基于一定部署环境的高并发实施策略

  处理高并发是一个历久弥新的问题。
  实话说,本人水平有限,并没有完全的解决方案(实际项目中并没有100%解决过,犹如梦魇)。
  查各种资料来看,大部分的讨论都是基于具体问题(如纯Java代码,或只讨论oracle中的锁机制等),还没找到对这一问题的系统见解(ps:如有,请告知)。
  以下是本人的一些经验和思路, 先列个提纲,权当抛砖引玉

一、人机界面
    之前项目中有个业务操作,实施后发现总是会有不少重复执行操作的情况。原来用户点确认的时候基本上习惯于双击,甚至多次双击,通常在页面还没来得及刷新的时候重复提交。
    解决方案:1、使用网页脚本,触发提交事件后首先隐藏按钮
              2、使用令牌

二、业务程序层
    这个层面上出问题也不少,不注意会造成很多“伪高并发”的问题
    解决方案:1、尽量使单一业务程序简单化、减少打印输出(IO相对耗时间)
              2、对于不可逆、不可重复的操作,其实业务层是有不少条件可以判断出来的,程序中可以加上检查。


三、数据库访问层
     1、 主要指Hibernate等ORM框架
     2、JDBC则一般是Sql本身的问题

四、数据库层
    1、各种优化,如:数据库内存、共享内存调整等


五、网络层
   目标:提高应用的整体网络速度。
   解决方案:1、物理设备:服务器使用双网卡、提升带宽等
             2、如服务器只有单网卡,或者用户宽带接口只有联通(理论上这种情况服务商会自动转换路由以最佳方式访问服务器,实际个别地区这方面做得不好)。此时则需要在服务器上配置调整。

参考链接:http://www.iteye.com/topic/730241

猜你喜欢

转载自kurui.iteye.com/blog/1039534
今日推荐