Java高并发实战 - 使用Semaphore对单接口进行限流(单接口版)

本文介绍了如何使用Java的Semaphore对单接口进行限流,以限制并发访问量,如控制房间同时在线玩家数量。文章讲解了Semaphore的核心知识点,包括tryAcquire和release方法,并强调了正确释放许可证的重要性。通过SpringBoot项目实战,展示了限流的实现过程,并使用Apache JMeter进行并发请求测试,证明了限流效果。
摘要由CSDN通过智能技术生成

一、实战说明

1.1 效果说明

  1. 本篇主要讲如何使用Semaphore对单接口进行限流,例如有如下场景
    • A系统的有a接口主要给B系统调用,现在希望对B系统进行限流,例如处理峰值在100,超过100的请求快速失败
    • 接口作为总闸入口,希望限制所有外来访问,例如某个房间只能同时100个玩家在线,只有前面的处理完后面的才能继续请求
    • 其他类型场景,也就是资源固定的情况下需要轮流使用资源的可以采用Semaphore
  2. 不适用场景
    • 由于是针对总入口进行限流,所以不能根据IP或者token等进行限流,适用场景比较固定
    • 后续的博客中会介绍如何使用其他的针对IP/Token级别的限流,例如AOP+Redis+Lua进行限流
  3. 优点主要有
    • 相比针对IP级别的限流,Semaphore实现相对简单,对上述场景能快速实现限流效果
  4. 实现和原理难度:☆☆

1.2 核心知识点

  1. 主要使用以下技术点
    • springboot
    • juc包中的Semaphore(tryAcquire、release方法)
  2. Semaphore主要说明
    • Semaphore中可以通过tryAcquireacquire获取到一个许可证(默认),通过release释放许可证
    • 两个获取许可证的主要区别就是前者是非阻塞而后者阻塞,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值