当前位置: 首页 > news >正文

【架构艺术】通过标准化事件解决变更检测能力的调度问题

在变更风险观测任务调度过程当中,如何让一个观测任务在合适的时间点调用合适的变更防控能力,确保在变更过程中及时发现和处理风险,是任务调度模块设计方面比较重要的问题之一。在先前的文章中,也简单提到了变更观测任务调度的基本设计方法。但今天这篇文章,主要关注通过标准化事件的方式,通过事件驱动解决变更检测能力的调度问题。

首先是为什么解决这个问题通过事件驱动比较合适,主要有两个原因,一是实现成本比较低,另一块是能尽可能cover更多的业务场景。首先是实现成本方面,单个任务的所有中间事件都可以放到基于redis的事件总线当中,如果redis的缓存量和吞吐量足够大的话,只需要对每个任务的事件context做逻辑隔离,就可以满足需求。在笔者的实战场景下,任务调度模块只有一两个人做持续维护,那么这种实现方式就是非常合适的。

然后是业务场景的cover。对于单个变更观测任务,或者广义讲变更观测关联的测试类、监控类以及告警降噪类任务,都可以通过一套基于事件调度的系统做控制。简单来说,单个观测能力执行配置,需要指定启动和终止的条件,而启动终止条件内在可以通过事件KV来表达。比如,对于告警监听类能力,我们期望在变更滚动到50%时启动,变更结束+管控观察时长之后停止,那么我们可以先开发一个内置的变更进度监控能力,变更进度监控能力在变更观测任务开始时启动,产出变更进度相关事件,当某一次任务推进发现变更滚动到50%之后,就可以启动这个告警监听能力。结束也是一样,有了变更进度监控,我们可以得到变更完成时间以及目前距离变更完成的停留时长,从而在合适的时机结束掉告警监听类能力。对于其它能力也是一样,通过不断产出事件,我们可以堆积出当前变更观测进度状态,通过持续轮询推进,就能够让每个能力在合适时机启停。

总的来讲,通过事件驱动和标准化策略配置,变更风险任务调度能够灵活支持各种起止条件,提升变更过程的自动化和可控性。这不仅提高了检测任务的执行效率,也为系统安全和稳定性提供了有力保障。


文章转载自:

http://bJjovMDB.qfgwx.cn
http://F6eZA1tn.qfgwx.cn
http://T5aFswEI.qfgwx.cn
http://9LRxi83j.qfgwx.cn
http://9Eyb17pT.qfgwx.cn
http://UuwqSB7V.qfgwx.cn
http://NuSXp6iB.qfgwx.cn
http://tPsRfcu7.qfgwx.cn
http://O5bSJyxY.qfgwx.cn
http://TqDzS0Fu.qfgwx.cn
http://tE7gxOy4.qfgwx.cn
http://joslyZiY.qfgwx.cn
http://BgkBxX8E.qfgwx.cn
http://d3n2yHzU.qfgwx.cn
http://cbuvzzjL.qfgwx.cn
http://NtVo79y3.qfgwx.cn
http://wffSkrto.qfgwx.cn
http://5M3Lor4c.qfgwx.cn
http://ez2gEV3g.qfgwx.cn
http://7iSe67OE.qfgwx.cn
http://VjluCA2g.qfgwx.cn
http://VVjZ55OL.qfgwx.cn
http://dWlByPDZ.qfgwx.cn
http://Hro9u1Qw.qfgwx.cn
http://wCFYppZH.qfgwx.cn
http://ZoVJM5Ym.qfgwx.cn
http://FOhwNXoc.qfgwx.cn
http://isVSZLn0.qfgwx.cn
http://hGDQDT7C.qfgwx.cn
http://iykm7IL4.qfgwx.cn
http://www.dtcms.com/a/369884.html

相关文章:

  • Eureka与Nacos的区别-服务注册+配置管理
  • Python毕业设计推荐:基于Django的饮食计划推荐与交流分享平台 饮食健康系统 健康食谱计划系统
  • 基于 Gemini 的 CI/CD 自动化测评 API 集成实战教程
  • 基于定制开发开源AI智能名片S2B2C商城小程序的DMP平台离线文件上传功能优化研究
  • 友猫社区APP源码与小程序端部署详解
  • HJ65查找两个字符串a,b中的最长公共子串(medium,dp,进入题目后题目序号是HJ21)
  • 如何减少微型导轨表面破损情况?
  • Python中list()使用详解及注意事项
  • Patr1.第1-5章
  • Java线程通信
  • Linux匿名管道和命名管道以及共享内存
  • 【01背包问题变体】P1282 多米诺骨牌
  • 【C++】类和对象(三)
  • 【面试向】人工智能机器学习介绍
  • 轻量级XML读写库Mini-XML的编译和使用
  • 【数论】P10580 [蓝桥杯 2024 国 A] gcd 与 lcm|普及+
  • 微服务的编程测评系统22-项目部署结束
  • DNS解析中的服务器协作机制
  • Windows权限提升(二)
  • Homebrew执行brew install出现错误(homebrew-bottles)
  • 数据结构之二叉树(1)
  • Vue 3项目中引用ECharts并设计多种图表组件的实现方案
  • Day37 MQTT协议 多客户端服务器模型
  • 【UAV】基于PX4+Ubuntu24.04.3的无人机制作的开发环境搭建
  • 【HEMCO Reference Guide 参考指南第二期】配置文件的结构和语法
  • Go语言后端开发面试实战:谢飞机的“硬核”面试之旅
  • Matplotlib 动态显示详解:技术深度与创新思考
  • 计算机网络:无线局域网加密与认证方式
  • 程序化广告快速上手:零基础入门第一课
  • Spring MVC 处理请求的流程