learn-tech/专栏/深入理解Sentinel(完)/19Sentinel集群限流的实现(下).md
2024-10-16 09:22:22 +08:00

20 KiB
Raw Blame History

                        因收到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