# binarycat-framework
**Repository Path**: jjbit/binarycat
## Basic Information
- **Project Name**: binarycat-framework
- **Description**: 这是一个开源的框架集合项目,目前已包含的子项目有:
1.动态限流组件:是一个基于系统cpu负载,内存平均使用率,请求的超时率和错误率四个维度进行的动态限流组件;
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/binarycat/binarycat
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-01-21
- **Last Updated**: 2023-12-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# binarycat-framework
## 项目介绍
这是一个开源的框架集合项目,目前已包含的有:
1.动态限流组件
## 项目目录结构
1. binarycat-core: 所有子项目依赖的核心项目,包含基础的bean和工具类等
2. binarycat-dynamiclimit: 基于系统负载和请求响应情况的动态限流组件
### binarycat-dynamiclimit
#### 简介
binarycat-dynamiclimit是一个基于系统cpu负载,内存平均使用率,请求的超时率和错误率四个维度进行的动态限流组件;
目前主要针对于http请求进行限流,引入该组件后,当系统面临高并发访问时,此时cpu负载,内存平均使用率,请求的超时率和错误率出现出现急剧升高,当超过一定阀值后会对对应的请求url进行限流,并不断降低其qps的阀值,当限流的四个维度的参数低于对应的阀值时,此时对应的url的qps阀值会升高,即qps阀值会处于一个动态变化的健康状态;
目前可以针对不同的url进行限流,同一个url可以按照ip进行隔离限流且可以配置多个限流策略.
#### 限流架构图

#### 类图

#### 使用说明
```
maven依赖配置:
com.binarycat
binarycat-dynamiclimit
1.0.0
maven仓库配置:
binarycat-repository
https://gitee.com/binarycat/maven/raw/master/repository
```
```
spring.xml配置
```
```
java代码配置(在需要限流的方法上添加DynamicLimit注解即可,注:需要结合RequestMapping注解一起使用)
package com.test.demo.limit;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.binarycat.dynamiclimit.annotation.DynamicLimit;
import com.binarycat.dynamiclimit.bean.LimitPolicyEnum;
@Controller
@RequestMapping("/test")
public class ControllerTest {
@RequestMapping({"/test1"})
@ResponseBody
@DynamicLimit(limitPolicy = LimitPolicyEnum.CPU_LIMIT)
public String show(HttpServletRequest request) {
return "OK";
}
}
```