java接口并发衡量_java 后端设计高并发接口总结

本文探讨了在Java后端设计中如何处理高并发接口,包括选择并发队列(如ArrayBlockingQueue、ConcurrentLinkedQueue、LinkedBlockingQueue)、合理设计请求接口以提高响应速度,并通过悲观锁、FIFO队列和乐观锁思路解决高并发下的数据安全性,以防止超发问题。乐观锁在减少锁冲突的同时,增加了CPU计算开销,但整体上是一种有效的解决方案。
摘要由CSDN通过智能技术生成

如何设置高并发接口

一、并发队列的选择

二、请求接口的合理设计

三、高并发下的数据安全

3.1 超发的原因

3.2 悲观锁思路

3.3 FIFO队列思路

3.4 乐观锁思路

一、并发队列的选择

Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、ConcurrentLinkedQueue 和 LinkedBlockingQueue 。

ArrayBlockingQueue是初始容量固定的阻塞队列,我们可以用来作为数据库模块成功竞拍的队列,比如有10个商品,那么我们就设定一个10大小的数组队列。

ConcurrentLinkedQueue使用的是CAS原语无锁队列实现,是一个异步队列,入队的速度很快,出队进行了加锁,性能稍慢。

LinkedBlockingQueue也是阻塞的队列,入队和出队都用了加锁,当队空的时候线程会暂时阻塞。

在请求预处理阶段,由于我们的系统入队需求要远大于出队需求,一般不会出现队空的情况,所以我们可以选择

ConcurrentLinkedQueue来作为我们的请求队列实现

二、请求接口的合理设计

一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。

通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”,在最短的时间里返回用户的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值