CloudCurrentLimit 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
CloudCurrentLimit 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
CloudCurrentLimit 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPL
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包
开源组织
地区 国产
投 递 者 素剑步青尘
适用人群 未知
收录时间 2023-01-11

软件简介

CloudCurrentLimit 基于 redis 的 Lua 脚本实现对高并发下的限流控制,可极大降低系统的接入成本,对高并发系统进行限流达到保护系统的目的。

开箱即用

引入maven,配置文件,注解一打,1分钟集成好限流,真正的做到了开箱即用。

使用场景:

无需独立启动第三方服务,以jar包方式和项目一起启动,不存在第三方服务挂掉的风险,对整个集群限流

如果我们的系统有高并发限流场景,自己临时写可能会有bug,引入现在市面上的限流工具,要么需要单独启动服务,要么配置繁琐,有没有低成本高效接入的限流组件呢?

显而易见CloudCurrentLimit正是很好符合该需求的选择,只需要简单的配置即可达到限流效果.

springboot集成版本支持 2.2.2.RELEASE<=Version<3.x

实现了集群状态下的限流,限流对整个集群生效

 1.引入maven依赖

<dependency>
    <groupId>net.oschina.likaixuan</groupId>
    <artifactId>cloud-limit-spring-boot-starter</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

2. application.yml中开启限流配置

spring:
  redis:
    host: localhost
    database: 0
    lettuce:
      pool:
        max-active: 10
        max-idle: 10
        max-wait: -1ms
      shutdown-timeout: 100ms
    password:
    port: 6379
cloud:
  limit:
    scan-package: com/example/demoplus/controller  #项目中的controller包
    type: TOKEN #目前算法只支持令牌桶算法,写死TOKEN就行

3.Controller 类上打上注解

@CloudLimitAnnottion(
limitCount = 2, #每秒限流请求次数,默认50
limitMsg = "你被限流了" #支持配置自定义限流提示语句,可不配置,不配置默认提示限流【触发限流了】
)

举个栗子

输入图片说明

4.该步骤一般项目中都有自己的全局捕获异常,只需要捕获RuntimeException即可,当然也可以捕获限流的异常类CloudLimitException

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(value = CloudLimitException.class)
    public R handler(CloudLimitException e){
        return R.error(e.getMessage());
    }
}

如果项目启动有限流相关日志输出,则说明限流生效,如下图

输入图片说明

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
25 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部