开始
本篇主要分析braum的属性配置BraumProperties。
BraumProperties
BraumProperties的属性配置都在braum.limit.access下面。主要有
/**
* 连续访问最高阀值,超过该值则认定为恶意操作的IP
* 单位:次 默认为20
*/
private int threshold = 20;
/**
* 间隔时间,在该时间内如果访问次数大于阀值,则记录为恶意IP,否则视为正常访问
* 单位:毫秒(ms),默认为 5秒
*/
private long interval = 5000;
/**
* 限制访问的容错值,容错值范围内(0 < x < faultTolerance)过了限制时间就可正常访问,一旦大于容错值, 则进行限制访问
* 默认为-1,表示不进行直接限制
*
*/
private int faultTolerance = -1;
/**
* 当检测到恶意访问时,对恶意访问的ip进行限制的时间
* 单位:毫秒(ms),默认为 1分钟
*/
private long limitedTime = 60000;
/**
* 黑名单存在的时间,在单位时间内用户访问受限的次数累加
* 单位:毫秒(ms),默认为 1个月
*/
private long blacklistTime = 2592000000L;
/**
* 缓存类型,默认为map存储
*/
private BraumCacheType type = BraumCacheType.MAP;
这边这些参数配置主要用于实现如下逻辑:
-
如果单位时间(interval)内访问次数超过threshold,就禁止访问一定的时间limitedTime,默认为1分钟。
-
如果禁止访问的次数超过faultTolerance,就加入黑名单,黑名单禁止访问的时间更长,默认为一个月。
BraumLogoApplactionListener
这个BraumLogoApplactionListener是ApplicationListener 的实现,主要用于启动的时候打印logo。可选的方式三种:控制台输出,log输出,不输出。
GlobalBraumCacheException
继承RuntimeException实现异常,这个貌似没用到啊。
utils
utils里面主要有两个class,分别是GlobalBraumUtil、RequestUtil
GlobalBraumUtil
主要是生成key,把点和冒号间隔符转为“_”。
RequestUtil
主要用于处理resquest,实现了如下的方法:
其他
更多源码解析,关注我学源码网