Skip to content

DZone - Rate Limiter Internals in Resilience4j #23

Description

@TFdream

转载 【DZone】Rate Limiter Internals in Resilience4j:https://dzone.com/articles/rate-limiter-internals-in-resilience4j

Resilience4j 的 resilience4j-ratelimiter 模块 提供了两种限流的实现:SemaphoreBasedRateLimiter 和 AtomicRateLimiter。

SemaphoreBasedRateLimiter 基于信号量实现,用户的每次请求都会申请一个信号量,并记录申请的时间,申请通过则允许请求,申请失败则限流,另外有一个内部线程会定期扫描过期的信号量并释放,很显然这是令牌桶的算法。

AtomicRateLimiter 和上面的经典实现类似,不需要额外的线程,在处理每次请求时,根据距离上次请求的时间和生成令牌的速度自动填充。关于这二者的区别可以参考这篇文章 Rate Limiter Internals in Resilience4j。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions