-
Java源码示例:积分管理系统中的速率限制模块
资源介绍
积分管理系统java源码
高并发之限流,到底限的什么鬼
你可能知道高并发系统需要限流这个东西,但具体是限制的什么,该如何去做,还是临摹两可。我们接下来系统性的给它归个小类,希望对你有所帮助。
google
guava中提供了一个限流实现:
RateLimiter,这个类设计的非常精巧,可以适用于我们日常业务中大多数流控的场景,但鉴于使用场景的多样性,使用时也需要相当小心。
前面已经使用两篇简单的文章进行了预热。
这次不同。本篇文章将详细的,深入的介绍限流的各种场景和属性,然后分析guava这个限流器的核心源码,并对其特性进行总结。属于稍高级的进阶篇。
限流场景
弄清楚你要限制的资源,是这个过程中最重要的一环。我大体将它分为三类。
代理层
比如SLB、nginx或者业务层gateway等,都支持限流,通常是基于连接数(或者并发数)、请求数进行限流。限流的维度通常是基于比如IP地址、资源位置、用户标志等。更进一步,还可以根据自身负载情况动态调整限流的策略(基准)。
服务调用者
服务调用方,也可以叫做本地限流,客户端可以限制某个远端服务的调用速度,超过阈值,可以直接进行阻塞或者拒绝,是限流的