2021年2月4日星期四

Soul限流插件之RateLimiter插件

Soul限流插件之RateLimiter插件

从Soul的RateLimiter插件的配置可以看到
file
RateLimiter是依赖于Redis的,可以看到限流也可以基于Redis的三种模式的单机(standlone),集群(cluster)和哨兵(sentinel)模式
file
在插件处理的开启的过程中即进行了Redis模式的配置
file
在选择器规则中两个主要的配置的含义
file

  • capacity(容量):是允许用户在一秒钟内执行的最大请求数。这是令牌桶可以保存的令牌数。
  • rate(速率):是你允许用户每秒执行多少请求,而丢弃任何请求。这是令牌桶的填充速率。

通过之前的学习可以知道,插件的具体执行逻辑在插件的执行方法doExecute中
file
而更为关键的执行则是RateLimiter的isAllowed方法。
file
可以看到在方法内部,将配置表单中的两个方法参数直接传递给了执行限流的lua脚本,并由lua脚本进行具体的限流操作
file
另外,最后执行的文件位置位于/META-INF/scripts/request_rate_limiter.lua,并且从加载可以看到,文件由Spring-data-redis提供组件进行加载。这也提示我们,如果要对RateLimiter做一些操作。我们可以通过lua脚本的方式来进行。
另外可以看到SoulReactiveRedisTemplate和SoulReactiveScriptExecutor已经将所有的Redis操作和脚本操作变为Reactive的异步操作,了。这无疑提升了ratelimiter插件的性能

可以总结的是。ratelimiter基于Redis和lua脚本以及Reactive构建了一个高性能的限流插件

欢迎搜索关注本人与朋友共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】,以及总结的分类面试题https://github.com/zhendiao/JavaInterview

file
file









原文转载:http://www.shaoqun.com/a/527608.html

跨境电商:https://www.ikjzd.com/

dmm.adult:https://www.ikjzd.com/w/2026

olive:https://www.ikjzd.com/w/2025


Soul限流插件之RateLimiter插件从Soul的RateLimiter插件的配置可以看到RateLimiter是依赖于Redis的,可以看到限流也可以基于Redis的三种模式的单机(standlone),集群(cluster)和哨兵(sentinel)模式在插件处理的开启的过程中即进行了Redis模式的配置在选择器规则中两个主要的配置的含义capacity(容量):是允许用户在一秒钟内执行
f2c:f2c
史泰博:史泰博
流量暴涨、转化率不涨,真的是"每年的旺季前奏"吗?:流量暴涨、转化率不涨,真的是"每年的旺季前奏"吗?
史上最前沿的测评养号系统,亚马逊测评如何降低成本,提高效率,搭建稳定的IP环境?:史上最前沿的测评养号系统,亚马逊测评如何降低成本,提高效率,搭建稳定的IP环境?
全球最卖货的电商网站全在这了!Top 10及更多……:全球最卖货的电商网站全在这了!Top 10及更多……

没有评论:

发表评论