com.github.sunywdev:routelimit

Parent pom providing dependency and plugin management for applications built with Maven

License

License

GroupId

GroupId

com.github.sunywdev
ArtifactId

ArtifactId

routelimit
Last Version

Last Version

1.0.1
Release Date

Release Date

Type

Type

jar
Description

Description

Parent pom providing dependency and plugin management for applications built with Maven
Project URL

Project URL

https://projects.spring.io/spring-boot/#/spring-boot-starter-parent/routelimit
Source Code Management

Source Code Management

https://github.com/Sunywdev/routelimit

Download routelimit

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.sunywdev/routelimit/ -->
<dependency>
    <groupId>com.github.sunywdev</groupId>
    <artifactId>routelimit</artifactId>
    <version>1.0.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.sunywdev/routelimit/
implementation 'com.github.sunywdev:routelimit:1.0.1'
// https://jarcasting.com/artifacts/com.github.sunywdev/routelimit/
implementation ("com.github.sunywdev:routelimit:1.0.1")
'com.github.sunywdev:routelimit:jar:1.0.1'
<dependency org="com.github.sunywdev" name="routelimit" rev="1.0.1">
  <artifact name="routelimit" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.sunywdev', module='routelimit', version='1.0.1')
)
libraryDependencies += "com.github.sunywdev" % "routelimit" % "1.0.1"
[com.github.sunywdev/routelimit "1.0.1"]

Dependencies

compile (15)

Group / Artifact Type Version
org.aspectj : aspectjweaver jar 1.9.6
org.springframework.boot : spring-boot-starter-data-redis jar 2.2.1.RELEASE
org.springframework.boot : spring-boot-starter-web jar 2.2.1.RELEASE
org.springframework.boot : spring-boot-starter jar 2.2.1.RELEASE
org.springframework.boot : spring-boot-starter-aop jar 2.2.1.RELEASE
org.projectlombok : lombok jar 1.18.10
com.google.guava : guava jar 25.1-jre
org.springframework.boot : spring-boot-starter-mail jar 2.2.1.RELEASE
com.alibaba : fastjson jar 1.2.71
com.github.lianjiatech : retrofit-spring-boot-starter jar 2.2.2
mysql : mysql-connector-java jar 5.1.38
com.alibaba : druid jar 1.1.21
org.mybatis.spring.boot : mybatis-spring-boot-starter jar 2.1.0
org.mybatis.generator : mybatis-generator-core jar 1.3.6
cn.hutool : hutool-all jar 5.5.8

Project Modules

There are no modules declared in this project.

avatar

  • 网关分布式限流实现,基于redis+lua
  • 1.基于redis令牌桶形式
  • 2.限流预警
  • 3.异步日志链路追踪

使用方式

maven依赖

<dependency>
  <groupId>com.github.sunywdev</groupId>
  <artifactId>routelimit</artifactId>
  <version>1.0.1</version>
</dependency>

针对接口配置固定限流数量

@GetMapping("/logerror")
@Log(name = "限流测试")
@RouteLimiter(acquiredQuantity = 1,burstCapacity = 2,repleniShrate = 1)
public Map<String, Object> logError() {
    Map<String, Object> respMap = new HashMap<>();
    respMap.put("code", "200");
    respMap.put("msg", "success");
    return respMap;
}

全局限流,根据请求接口地址进行流量限制

route:
  #每秒产生的令牌数量
  replenishrate: 1
  #桶内令牌容量
  burstcapacity: 10
  #每次获取令牌数量
  acquiredquantity: 1

邮件通知

mail:
    #协议地址
    host: smtp.163.com
    #发送人邮箱
    username:
    #授权号 authpsd
    password:
 #发送人邮箱
  formmailaddress:
  #服务异常通知人邮箱,多个使用 , 分隔开
  sendmailaddress:

日志记录

  • route.startlog :true(开启),默认关闭,开启时需要初始化根目录下db文件夹内log_info.sql初始化

routelimit

-Gateway distributed current limiting implementation, based on redis+lua

    1. Based on redis token bucket form
    1. Current limit warning
    1. Asynchronous log link tracking

How to use

maven dependency

<dependency>
  <groupId>com.github.sunywdev</groupId>
  <artifactId>routelimit</artifactId>
  <version>1.0.1</version>
</dependency>

Based on token bucket

@GetMapping("/logerror")
@Log(name = "Current Limit Test")
@RouteLimiter(acquiredQuantity = 1, burstCapacity = 2, repleniShrate = 1)
public Map<String, Object> logError() {
    Map<String, Object> respMap = new HashMap<>();
    respMap.put("code", "200");
    respMap.put("msg", "success");
    return respMap;
}

The number of tokens and the configuration of the token bucket

route:
  #Number of tokens generated per second
  replenishrate: 1
  #Token capacity in bucket
  burstcapacity: 10
  #Get the number of tokens each time
  acquiredquantity: 1

E-mail notification

mail:
    #Protocol address
    host: smtp.163.com
    #Sender's mailbox
    username:
    #Authorization number authpsd
    password:
 #Sender's mailbox
  formmailaddress:
  #Service exception notification person mailbox, multiple uses, separate
  sendmailaddress:

Logging

-route.startlog: true (open), closed by default, you need to initialize log_info.sql in the db folder under the root directory when it is turned on

Versions

Version
1.0.1
1.0.0