开发者社区 > 云原生 > 中间件 > 正文

开源的sentinel集群限流是每次都得去请求token-server吗?

开源的sentinel集群限流,采用独立模式部署sentinel的token-server,进行集群限流,对应的sentinel-client判断是否限流去token-server获取令牌,是每次都得去请求token-server吗?因为我看官网没有说明,网上也没找到合理的解释,我看sentinel-client的限流源码看着好像是每次限流判断都得请求token-server

展开
收起
陈幕白 2024-01-23 22:13:43 76 0
2 条回答
写回答
取消 提交回答
  • 在Sentinel开源版本中,对于集群限流,Sentinel Client并不会每次限流判断都去请求Token Server获取令牌。Sentinel采用了滑动窗口令牌桶算法(Sliding Window Token Bucket, SWTB)进行限流,这个算法在客户端实现了一定程度的本地缓存和预测性逻辑,以减少对远程Token Server的频繁请求。

    在实际工作中,Sentinel Client会在本地维护一个滑动窗口,并尝试预先从Token Server获取一定数量的令牌放入本地缓存。当接收到请求时,首先检查本地缓存是否有足够的令牌,如果有,则直接消费令牌;如果没有,则才需要去远程Token Server申请新的令牌。

    Sentinel的集群限流核心在于客户端和Token Server之间通过API交互,客户端通过异步拉取令牌的方式来减小网络开销和延迟。这种方式下,大部分常规流量的限流判断是可以在客户端快速完成的,只有在令牌不足时才会触发远程交互。同时,Sentinel也提供了多种优化措施,如令牌预热、异步刷新令牌等,来进一步优化集群限流的性能表现。

    因此,尽管在极端情况下客户端可能需要频繁与Token Server通信,但在正常运作时,这种通信频率是可以得到有效控制的。当然,Token Server自身的性能和稳定性也是集群限流方案中需要重点考虑的因素,应确保其具有良好的扩展性和容错性。

    2024-01-26 22:09:27
    赞同 展开评论 打赏
  • acae4e6f38dd27f05f494b3f5a38e007.png ,有resource对应的rule才会check,没有就不会check。此回答整理自钉群“Sentinel 开源讨论群-4群”

    2024-01-23 22:51:28
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
阿里云容器 AHAS Sentinel 网关流控揭秘 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Sentinel进行微服务流量控制 立即下载
Sentinel分布式系统下的流量防卫兵 立即下载