本篇主要是扩展默认的报警规则,使其能更加友好的支持同时选择多种报警方式
扩展遵循两个原则
- 不影响原有的配置文件格式
- 简化规则解析复杂度
I. 配置文件的扩展
先看一下原有的配置文件
1 | { |
我们希望是能够支持多重报警方式同时选中,那么上面的配置中, threshold中只定义了一个阀值参数显然是不合适的,主要问题在于
- 单一阀值,不允许不同报警方式存在交叉
- 两个报警方式的threshold值相等时,选中的具体是哪个不可预期
所以我们的目标是将上面的参数中,新增一个指定上限的值max
1 | { |
向上面这般改动之后,相当于每个报警方式都可以定义自己的区间,因此允许多重报警方式存在区间的交叉,计数在交叉区间即表示选中这多重方式
II. 扩展的实现支持
从配置文件的变动来看,改动很小,只是新增一个参数而已,且这个参数不是必填的,那么对应的do应该为
1 | public class BasicAlarmThreshold { |
然后顺带着,优化一把我们的映射规则,将配置规则的DO对象,映射为业务对象
主要的映射规则如下
1 | /** |
在映射为业务对象的逻辑中,直接保障了AlarmThreshold
列表中的顺序为最终的需求顺序,映射规则为
1 | /** |
相应的就可以干掉原来不太好懂的Executor选择逻辑,对应的代码为
1 | // com.hust.hui.alarm.core.execut.AlarmExecuteSelector#getExecute |
III. 其他
相关博文
- 报警系统QuickAlarm总纲
- 报警系统QuickAlarm之报警执行器的设计与实现
- 报警系统QuickAlarm之报警规则的设定与加载
- 报警系统QuickAlarm之报警规则解析
- 报警系统QuickAlarm之频率统计及接口封装
- 报警系统QuickAlarm使用手册
- 报警系统QuickAlarm之默认报警规则扩展
项目: QuickAlarm
- 项目地址: Quick-Alarm
- 博客地址: 小灰灰Blog
个人博客: Z+|blog
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
声明
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正,我的微博地址: 小灰灰Blog