20 KiB
20 KiB
因收到Google相关通知,网站将会择期关闭。相关通知内容
19 Sentinel 集群限流的实现(下)
集群限流源码分析
集群限流,我们可以结合令牌桶算法去思考,服务端负责生产令牌,客户端向服务端申请令牌,客户端只有申请到令牌时才能将请求放行,否则拒绝请求。
集群限流也支持热点参数限流,而实现原理大致相同,所以关于热点参数的集群限流将留给大家自己去研究。
核心类介绍
sentinel-core 模块的 cluster 包下定义了实现集群限流功能的相关接口:
TokenService:定义客户端向服务端申请 token 的接口,由 FlowRuleChecker 调用。 ClusterTokenClient:集群限流客户端需要实现的接口,继承 TokenService。 ClusterTokenServer:集群限流服务端需要实现的接口。 EmbeddedClusterTokenServer:支持嵌入模式的集群限流服务端需要实现的接口,继承 TokenService、ClusterTokenServer。
TokenService 接口的定义如下:
public interface TokenService { TokenResult requestToken(Long ruleId, int acquireCount, boolean prioritized); TokenResult requestParamToken(Long ruleId, int acquireCount, Collection