如题:我有一张订单表是动态的,我在程序中如何设计并发抢单功能,就是如何防止某个订单被多个人抢到?
请大家畅所欲言(其实对高手弹不上),言无不尽,在此感谢,另希望此贴不要沉

解决方案 »

  1.   

    抢购请求进行消息排队(jms/LMAX),一次处理一个,数据库都不用加锁
      

  2.   

    LMAX的持久化是不是有点难度?
      

  3.   

    LMAX只是自己的消息队列,消息都在内存中,而且优化到cache对齐,纯为高性能,不做持久化
      

  4.   

    就因为他是jvm级别的,如果考虑高可用的时候,是不是持久化就成了问题?
      

  5.   

    这个帖子中,LMAX Disruptor只是将请求排队,消息处理http://lmax-exchange.github.io/disruptor/files/Disruptor-1.0.pdf中的3p-1c模式
      

  6.   

    Disruptor 设计是为了ns级的低延迟,消息的有效期很短,基本不做消息的持久化需要持久化可以在 Disruptor 的事件处理中持久化 ,或者复制到另外一个队列来并行持久化就像抢购的请求,只在很短的时间内有效
      

  7.   


    mq 和redis实现队列都很成熟了,我是觉得防止并发抢单的话,针对某个值进行唯一约束就行了,只是把哪个字段设置唯一值,这个需要确认
      

  8.   

    redis是个不错的选择