Skip to content

DZone - Rate Limiter Internals in Resilience4j #23

@TFdream

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

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