实时业务校验平台作为阿里集团老牌的业务审计系统,覆盖了集团绝大部分的业务对账场景,在线上问题及时发现以及减少集团资损上发挥着巨大作用,保障了各个系统的业务稳定性。本文主要介绍实时业务校验平台(以下简称BCP: Business Check Platform)在智能化方面的创新和实践。
关键词:数值一致性、状态一致性、多值属性、算法加速
一、需求背景
随着业务规模的扩张,阿里集团内部的系统变得越来越复杂,在这种复杂的分布式系统架构下,难免会出现远程调用失败,消息发送失败,并发bug等等问题,这些问题最终会导致系统间的数据不一致,导致用户体验受损,用户利益受损,对平台来说就是产生资损。意识好的或者是出过问题的系统,可能会去配置一些校验任务,比如每隔1小时,去跑一次离线计算任务,判断这段时间内是不是有数据故障出现,但是这种方式时效性较差,然后每个系统团队的对账方式都比较零散随意,我们没有一套体系化解决数据问题的方案,线上问题又一直存在不断有新的问题产生,处理比较被动,数据质量这块一直是个空白的领域。
BCP就是在这种背景下产生,用来帮助业务系统实时校验线上的每一笔数据,填补数据质量领域的空白。BCP主要实现以下4个目标:
- 高实时性的发现线上业务脏数据或者错误逻辑,第一时间发现并及时通知技术保障,而不是等客户反馈。
- 方便的接入各种业务规则,通过脚本规则编写的方式,让各应用快速接入平台。
- 整合订正工具,形成规范的脏数据订正流程。
- 业务上线的实时监控,新上线业务可以很方便的进行校验。
为了更高效率的让应用快速接入业务对账平台,同时减少对应用带来的性能损耗和代码侵入,BCP通过事件模式,把业务数据变化触发的消息(如DB变更日志数据,消息中间件消息)转换成响应业务的事件,放入到事件执行队列进行规则的检查,事件监听框架采用了通用的架构设计,实现了消息的对接,而DB日志又可以转接到消息上,实现数据库变更的实时监听。
图1事件模式
图2 BCP系统架构图
BCP的运行依赖规则,规则是对业务逻辑(规律)的抽象,通过执行规则检查数据,发现问题。所以核心问题是如何定义规则,传统的对账模式一般需要业务方在理解透业务的情况下进行资损点预判与梳理,然后配置手工规则脚本,对数据进行实时校验及时发现异常。
随着业务规模的扩张,业务变更变得愈发频繁,我们需要不断的增加新的校验规则以适应新业务的对账需求,这里面需要业务开发、业务测试以及技术支持共同来梳理,消耗非常多的人力,这种方法已经越来越不适应各种复杂业务场景的需要,而且很多情况下即使是提前进行预防梳理,仍然不能覆盖住所有可能的资损场景。极端一点的情况是,我们很多的资损点都是通过“踩坑\u0026quot;踩出来的,即发生了资损问题之后再去编写对账逻辑亡羊补牢,所以传统的对账模式暴露出了如下几个问题:
过于依赖专家知识和经验,对于每个新场景都需要人工生产规则,效率低通用性差。
无法及时适应大规模数据的变化,特别是当数据、规律发生变化时。
漏报,极端情况甚至是在系统出了故障“踩坑”后才触发某些规则的发现。
图3 传统的配置规则方式
目前BCP接收了集团内大部分的业务数据,如何将这些数据产生更大的价值,是我们一直在思考的问题,智能化就是其中的一个方向。
我们希望通过智能化的方式让机器自动去发现业务数据之间的规律与异常数据,帮助业务方进行资损点梳理与监控,让资损防控的工作变得更加简单和高效,解决上面提到的若干问题。