【架构艺术】通过标准化事件解决变更检测能力的调度问题
在变更风险观测任务调度过程当中,如何让一个观测任务在合适的时间点调用合适的变更防控能力,确保在变更过程中及时发现和处理风险,是任务调度模块设计方面比较重要的问题之一。在先前的文章中,也简单提到了变更观测任务调度的基本设计方法。但今天这篇文章,主要关注通过标准化事件的方式,通过事件驱动解决变更检测能力的调度问题。
首先是为什么解决这个问题通过事件驱动比较合适,主要有两个原因,一是实现成本比较低,另一块是能尽可能cover更多的业务场景。首先是实现成本方面,单个任务的所有中间事件都可以放到基于redis的事件总线当中,如果redis的缓存量和吞吐量足够大的话,只需要对每个任务的事件context做逻辑隔离,就可以满足需求。在笔者的实战场景下,任务调度模块只有一两个人做持续维护,那么这种实现方式就是非常合适的。
然后是业务场景的cover。对于单个变更观测任务,或者广义讲变更观测关联的测试类、监控类以及告警降噪类任务,都可以通过一套基于事件调度的系统做控制。简单来说,单个观测能力执行配置,需要指定启动和终止的条件,而启动终止条件内在可以通过事件KV来表达。比如,对于告警监听类能力,我们期望在变更滚动到50%时启动,变更结束+管控观察时长之后停止,那么我们可以先开发一个内置的变更进度监控能力,变更进度监控能力在变更观测任务开始时启动,产出变更进度相关事件,当某一次任务推进发现变更滚动到50%之后,就可以启动这个告警监听能力。结束也是一样,有了变更进度监控,我们可以得到变更完成时间以及目前距离变更完成的停留时长,从而在合适的时机结束掉告警监听类能力。对于其它能力也是一样,通过不断产出事件,我们可以堆积出当前变更观测进度状态,通过持续轮询推进,就能够让每个能力在合适时机启停。
总的来讲,通过事件驱动和标准化策略配置,变更风险任务调度能够灵活支持各种起止条件,提升变更过程的自动化和可控性。这不仅提高了检测任务的执行效率,也为系统安全和稳定性提供了有力保障。