如何第一时间发现线上故障

现在的研发工作越来越难做了,996、007,有事没事就要来公司加个班已经成为家常便饭,好像非工作时间不来公司露个脸现个身,就显得不求上进。身体累,心更累,就怕哪一天,一不小心倒在工作岗位,

这还不算够惨,哪天运气不佳,再来个客户投诉,给万恶的资本家找到由头,给你年终考核定个不及格,没有年终奖,卧槽,真是一年白干,欲哭无泪。有没有什么策略,可以规避这种问题。

线上问题大部分都是客户投诉上来的,根据问题的严重程度,影响着投诉面大小。如果有套监控系统(数据核对平台)就好了,可以第一时间发现问题,给自己预留较宽裕的缓冲时间,降低资损。也许等用户发现时,问题已经解决了。

该系统可能面临的挑战:

  • 满足各种复杂的业务场景,插件化,支持快速接入

  • 多样化的数据来源

  • 海量的数据比对

  • 自定义延迟时间,周边配套化监控系统

下面提供几个不错的案例供大家参考学习

某赞业务对账平台

将核对流程拆分4步: 数据加载–>转换解析–>业务核对–>结果封装。

每一步定义好抽象接口规范,提供默认实现, 同时也支持业务团队二次开发, 以插件化动态接入能力,同时具有规则分发能力、流程的编排能力。

  • ResourceLoader:通过加载器工厂,加载不同来源的原始数据

  • Parser  :对原始数据模型转换。利用规则引擎,提供脚本化(Groovy)的转换方式。

  • Checker  :数据核对,支持 findFirst 、findFull 多种比对策略

  • ResultHandler  :结果处理,包括持久化存储、生成报表、报警邮件、甚至修复数据等等。

通过统一的 facade,将整个对账流程进行串联。在执行不同节点时,根据配置选择不同的默认组件或者插件来执行。可以在管理后台,对每个流程节点进行编排。

整体上主要采用调度层+对账引擎(core+plugin)+基础设施的分层架构。调度层主要负责任务触发、任务拆分、调度;对账引擎则负责执行可编排的对账流程;基础设置层则提供规则引擎、流程引擎、泛化调用、监控等基础能力。

阿里BCP核对平台

BCP是一个统一的业务数据实时校验分析平台,通过接收实时消息进行相关的规则校验,抓取线上脏数据并报警, 防止异常业务数据扩散(客户投诉,后知后觉) ,保障数据稳定性。实时性可以做到秒级延迟,分钟级报警,并且可以实时在线统计,实时日志查看,mock测试,支持多种报表分析;支持延迟重试,异步检测,线上采样(按一定的比例来检测),规则脚本支持groovy/java语法。

数据核对,第一时间发现问题,并修复,提升用户体验!!!

核心流程

1、统一事件。 对多种数据源进行标准化数据转换处理,得到JsonObject标准对象

  • 不同的数据源提供不同的抽象接口,我们只需要实现扩展方法即可

  • 订阅管理。 bcp的消费组consumerID 订阅哪个topic,并绑定事件。 需要管理员审批。

2、规则过滤。 只处理自己关心的事件

3、执行器。 根据自己的业务诉求,编写核对代码。

4、结果存储。 用于报警、报表统计

对于数据变化量大的类型,只需采集其中一部分进行分析,所以系统提供了采样率设置。

关注公众号并回复  架构  领取,更多内容陆续奉上。