Java Web高并发抢单如何实现?

本文探讨了Java Web实现高并发抢单的策略,包括利用消息中间件排队处理请求,通过多线程和分布式服务减少等待时间,以及采用多级缓存降低资源竞争。同时强调了秒杀系统中保护共享资源的重要性,以及根据业务需求选择合适复杂度的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     首先第一步,你得让海量请求进来,第二步才是对进来的请求排队处理。第二步只是时间问题,要么像kafka那样,要么像redis那样。第一步单机一定会遇到瓶颈,无论集群还是分布式,跨机器的处理都会多出io时间,vertx是怎么 让多服务器同时处理还省去io时间的?这不科学吧?就算vertx单台服务器可以处理很高很高的并发,也不可避免要用集群,因为要保障的事高可用,而不只是高并发,跨服务器数据处理不可避免。

     你的spring MVC是处理请求的,截取到request以后,先解析,然后生成message。接下来你需要一个q,你有两个选择,spring integration去连普通的queue,比如开源的activeMQ,或者用spring amqp,像这个官网例子Spring AMQP,从q里面取,当然是反向的,你选好了怎么放,就对应的怎么取。这是简单层面的,商用化的话,你还要考虑一致性,错误处理等,我感觉你是在练习,这些先别增加复杂度了。这个message加入队列,着一个架构动作,和数据持久层并没有关系。数据持久层应该是在两部做动作,1,是加入q处理之前,你可能想永久化一下,2,是处理成message了,后台进行业务处理,那么业务动作结果肯定要存在持久层里面。


 

       秒杀这个功能,往简单的说就是一个资源争夺的典型例子。一些书里经常会用多终端共享打印机来说明这种独占资源共享的场景。解决资源抢占冲突的手段往往就两个,减少冲突方或增加资源。
秒杀需要占用的最重要资源是库存计数,其次是执行时间。抓住这个关键点就好办了,用什么框架什么技术,无非也就是保证这个计数不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值