扫码阅读
手机扫码阅读
武功秘籍之限流

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。


码农周星星
扫码关注公众号
限流概述
在高并发环境下,为保证核心服务的稳定性,分布式服务架构设计中需要增加限流模块。本文介绍了三种常用的限流方案,适用于不同的应用场景。
01 - 单机限流
场景描述
对于单实例或少数实例应用,服务可以通过在后端代码中设置固定值来采用单机限流方式,以限制指定接口每秒或每小时的请求总量。
解决方案
单机限流可以采用【自定义注解+AOP+RateLimiter】的组合方式。自定义注解可以方便地配置指定接口为限流接口,AOP可以方便地实现接口的限流统一业务逻辑处理。通过Guava的RateLimiter工具类,基于“令牌桶”算法控制时间内的令牌数量,实现单机限流。
优点和缺点
优点包括开发便捷和使用服务机器内存的高并发效率。缺点包括每次修改限流值需要重启服务,以及不支持分布式环境下的接口总量控制。
实现过程
实现单机限流的过程包括创建自定义限流注解和AOP切面类。自定义注解标记了方法,以便AOP切面类可以实现具体的限流逻辑。AOP切面类中的方法会检查令牌桶中是否有足够令牌供请求使用,若无,则抛出异常,从而实现限流。
想要了解更多内容?


码农周星星
扫码关注公众号
码农周星星的其他文章
项目经理与产品经理有什么区别?
什么是项目经理?产品经理又是做什么的?他们之间有什么区别呢?接下来码农周星星谈一谈个人的见解与大家一起沟通学习。
突然委派你去一个陌生的城市负责项目,应该怎么办?
想必各位做项目的小伙伴,经常会接受到一些委派的任务,比如说突然安排你去一个不熟悉的城市,支持本地团队,推动项目进展,负责项目管理相关内容。但是对于一些缺少项目经验的小伙伴来说,在没有领导明确目标要求的情况下,就会变更很迷茫,缺少动力和方向。
开源项目ZXX-CAS系统从零到一|第三篇:集成数据库服务
ZXX-CAS如何快速集成数据库相关组件,如何集成代码生成工具,并可快速开发基础crud功能?
系统架构设计师32小时通关笔记:四、信息系统基础知识
第四章主要介绍信息系统基础知识,从概述、总体规划和典型应用三个方面来介绍。
spring boot + Eureka如何平滑上下线服务
系统正常运行,如果要新发版程序,如何保证程序平滑上线,不影响前端的请求?使用Eureka作为注册中心时,会有哪些地方会导致新服务上下线延迟?如何优化并解决服务的正常上下线?
加入社区微信群
与行业大咖零距离交流学习


PMO实践白皮书
白皮书上线
白皮书上线