背景

在一个大型复杂系统,新来的小伙伴刚接触值班时,对于一些不可避免的Data Correction支持工作,上手还是有不少成本,难度也较高。一方面是业务流程复杂,需要先理清场景和数据走向,梳理底层涉及的库表结构;另一方面,Data Correction可能不仅仅是单个表的update,还可能涉及多个表数据的状态一致性,多应用数据的联动一致性,倘若漏了其中一部分,则整体不闭环,可能会引发新的问题。有些复杂的场景下,不仅仅是简单库表的refresh,还涉及复杂的计算和分支判断,对下游进行调用回传等。
对于老手来说,虽然上手难度没那么高,但Data Correction支持工作也可能会有误操作或漏操作情况。
在此情况下,便催生一个想法:建设一个按场景集成Data Correction Tool的线上化User Interface界面化功能入口,并使用XBP审批流程进行规范化,多人Double Check,尽量规避潜在风险点。
方案
借助XBP流程功能,实现线上化系统运维小助手,提高值班效率,降低运营压力。
通过XBP功能,使得线上运维更加规范化、功能化,简单易用。

功能落地
运营功能规划

XBP流程规划
确认表单内容
识别每个场景所需要的字段,相同含义的字段在不同场景之间可以复用。

多场景字段复用

除了表单的文本填写,还支持EXCEL的上传。对于批量数据处理,EXCEL对于文件的加工和处理比较方便。


表单提交时将EXCEL上传云存储,生成对应的url,消费者解析url从云存储中解析到文件内容,进行批量处理。


按场景展示表单字段


通过字段显隐规则,将不同场景所需要的字段显示出来,不需要的字段隐藏不显示。
不同的处理类型,展示的必要字段不同,只展示必要的字段出来。
审批消息的监听处理



UML diagram

不同的处理类型,对应着单独的处理器。


例如,释放库存预占类型,对应着 ReleaseStockExecutor。


coding

考虑到MQ消息的重复消费,需要做并发防重和幂等性支持。

利用Redis进行相同消息的放并发校验。
根据审批单号(XBP单号)生产相对稳定的UUID,处理成功的UUID会以操作流水的方式存储到数据库中,利用UUID和处理流水数据进行幂等防重。


表单数据的填写内容校验和通知提示。

利用JSF泛化调用,支持多集群处理。

处理结果无论成功还是失败,都通过消息通知给申请人。

审批失败的监控告警。

使用案例
功能使用

审批效果



消息通知
自动执行完成后,执行成功的消息通知

自动执行失败的消息通知






