如上图所示,我的项目有一个拍卖的业务,当倒计时进入最后十秒钟的时候,用户可能在同一秒时间对这件商品有成千上万或者更多的出价,这个时候,数据库操作就非常频繁,通常这种情况都是怎么处理.服务器接受用户出价的请求后,每一条都进行数据库更新操作吗?这样会不会数据处理太过频繁,性能上存在问题,,,
请求更位大侠的帮助.....谢谢!

解决方案 »

  1.   

    内存维护一个hashmap,不要更新数据库,读写方法都需要做线程同步处理 简单一点做法就是synchroized关键字
      

  2.   

    可以把价格维护在 application 里, 这样在内存里就快多了, 时间到了再写数据库, 这个应该不会浪费太多资源吧
      

  3.   

    1楼兄弟,他还有个出价的要求的所以需要记录当前的出价和时间,通过两个因素来决定其实最简单的做法就是设计一个物品类,里面记录了当前最高价格和最后时间,还有就是出价者ID,这个类的读写价格和时间的方法都synchroized最后所有物品对象放到hashmap去
      

  4.   

    另外,如果是这样的设计,那么简单的synchroized 也是不够的
    引入读写锁机制(适合读多写少的情况),另外出价还不能queue,所以是个高并发高实时的场景。
      

  5.   

    还有,AJAX定时查询不是一个好办法,只能是准实时建议采用comet技术,servlet3开始支持,服务器push消息