Java Web高并发抢单怎样实现( 二 )


那具体是用redis还是mysql你可以再具体想一下,反正大致思路是这样!

■网友
首先我纠正一个地方。像打车抢单这种并发程度称不上高并发。这种场景下,通常是数十个并发去争抢一个订单资源,关键要解决的是互斥,抽象为一个分布式乐观锁就可以了。你已经有redis了,使用redis的原子操作做乐观锁,抢到锁的可以拿单,几十并发的场景下并无太大开销,延迟足够低,性能表现也还可以,当然这样redis上的压力可能比较大,这可以通过做分片来分担压力。至于其他答案有提做队列的,那个方案其实更适用于并发减库存的场景,这里非要用当然也可以,但是有点杀鸡用牛刀。而且队列式抢单也需要把业务流程改为抢单,确认的两阶段流程,相对更重。吐槽下其他答案。设计的重点应该是合理抽象,然后选择最简单的方案,跟语言有毛关系?
■网友
泻药
这就是一个简单的并发冲突的处理问题
用vert.x可以瞬间解决这个问题
谁让你用spring?which压根不解决并发冲突,spring设计其实很糟糕的
你这几个里面,比较合理的是通过redis来解决,但是也多了一层io
效率会比较差

■网友
@圆胖肿 的回答说vertx的性能是spring的25倍 第14轮测试结果我除了一下是20倍。然后根据这个值特意用了一个上午时间看了分析报告以及github上的部分源代码。对于应用场景选择不同的产品不同的技术。所以也就有了这么多编程语言,开发框架!像@圆胖肿这样的二五0,大家不要被误导了
分析报告有很多轮次重点看了第14轮时间为20170510,测试包括ORM,数据迭代,排序,展示这些。
Framework Best performance(higher is better)
servlet 560,548 100%
代码自看,不看都明天啥样子 doget,dopost,jsp,servlet,jdbc这些
vertx-web 466,677 83.3%
与vertx雷同
vertx 461,123 82.2%
Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

总结:原始开发,servlet + jdbc + jsp风格 ,ORM没有体现,MVC没有体现,使用IoT式网络开发
spring 22,228 4.0%
框架为 springboot+spring-data-jpa
Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现

【Java Web高并发抢单怎样实现】 Java Web高并发抢单怎样实现

Java Web高并发抢单怎样实现


推荐阅读