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%





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


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

推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 啥是微信开发WEB前端
- web开发,一般项目经理从项目中拿多少项目奖金
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 27岁,转行java的血与泪,该何去何从
- 怎样统计工程中未使用的java类
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 我想学java和安卓软件开发?
- 学计算机专业,java那些和网站开发选台式还是笔记本好
- JAVA设计思路
