mirror of https://github.com/ZhongFuCheng3y/austin
parent
9420e13919
commit
e8deae88f2
@ -1,4 +1,4 @@
|
|||||||
package com.java3y.austin.handler.domain;
|
package com.java3y.austin.handler.deduplication;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.java3y.austin.common.domain.TaskInfo;
|
import com.java3y.austin.common.domain.TaskInfo;
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.java3y.austin.handler.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限流枚举
|
||||||
|
*
|
||||||
|
* @author 3y
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum RateLimitStrategy {
|
||||||
|
|
||||||
|
|
||||||
|
REQUEST_RATE_LIMIT(10, "根据真实请求数限流"),
|
||||||
|
SEND_USER_NUM_RATE_LIMIT(20, "根据发送用户数请求数限流"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private Integer code;
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.java3y.austin.handler.flowcontrol;
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.RateLimiter;
|
||||||
|
import com.java3y.austin.handler.enums.RateLimitStrategy;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 3y
|
||||||
|
* @date 2022/4/18
|
||||||
|
* <p>
|
||||||
|
* 流量控制所需要的参数
|
||||||
|
*/
|
||||||
|
@Builder
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class FlowControlParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限流器
|
||||||
|
* 子类初始化的时候指定
|
||||||
|
*/
|
||||||
|
protected RateLimiter rateLimiter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限流器初始限流大小
|
||||||
|
* 子类初始化的时候指定
|
||||||
|
*/
|
||||||
|
protected Double rateInitValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 限流的策略
|
||||||
|
* 子类初始化的时候指定
|
||||||
|
*/
|
||||||
|
protected RateLimitStrategy rateLimitStrategy;
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.java3y.austin.handler.flowcontrol;
|
||||||
|
|
||||||
|
import com.java3y.austin.common.domain.TaskInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 3y
|
||||||
|
* 流量控制服务
|
||||||
|
*/
|
||||||
|
public interface FlowControlService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据渠道进行流量控制
|
||||||
|
*
|
||||||
|
* @param taskInfo
|
||||||
|
* @param flowControlParam
|
||||||
|
*/
|
||||||
|
void flowControl(TaskInfo taskInfo, FlowControlParam flowControlParam);
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue