• 生产环境财务BUG的排查与总结


      生产环境中执行一个财务业务相关的定时任务,但执行完任务进行数据核对时无法对准。

      具体的场景大概可以描述为:一批订单进行分类存储在另一张表中,每个类别的数量统计后放入一个字段中。但最终第一张表进行COUNT(*)计算的结果与第二张表中SUM(orders_by_type)的结果不同,总是差了几单。

      想到应该是从第一部分查找,到组装逻辑直到最终存放分类数据的这个过程中发生了问题。于是将关键的几个步骤打了日志,放到生产环境执行一次任务后对比了这些日志,最终确定了是在这个过程中,流程可以细分为:

      1.对这批订单打标记;

      2.对这批订单进行处理,在处理的过程中有部分订单发生了异常,即跳过了未处理;

      3.对处理完成的订单进行合并分类存放

      问题出在第2步,发生异常后没有对之前标记的订单进行还原处理,导致最终两边的数据不通。

    ----------------------------------------------------------------------------------------------------------------------------------------------

      与公司前辈讨论了一下,财务模块的数据无法核对上是开发过程中比较普遍的bug。比较妥当的做法是,将生产环境的订单数据拷贝一份,放入测试环境,而后进行调试。这样在写数据时,可以将风险降至最低。如果有条件,其实可以在开发时期就创建一批量的数据,并将该组数据保存,制作脚本不断地进行这个流程的测试与计算核对。这个过程如果是使用方也不是很明白,那最好拉着他们一起进行测试核对,毕竟钱的事情不是小事。如果是生产环境产生问题,那么就将数据存入本地DB,再进行反复调试与验证。

      另外,财务的计算逻辑和处理流程一般是比较复杂的,所以设计代码时还是应该将代码的函数单一原则尽量执行,而对于一些分类处理,可以使用好模板模式,在父类处理好通用逻辑,在子类处理好各自不同的逻辑。

  • 相关阅读:
    《痞子衡嵌入式半月刊》 第 51 期
    痞子衡嵌入式:IAR环境下无法直接下载调试i.MXRT分散链接工程的解决方案(宏文件.mac+双Flashloader)
    《痞子衡嵌入式半月刊》 第 52 期
    消息中间件RabbitMq相关概念及原理介绍【图文并茂】
    简简单单用一下 Hbase
    WxJava for Solon 咱也不知道为啥要写
    Solon 1.6.34 发布,更现代感的应用开发框架
    Water 2.5.6 发布,一站式服务治理平台
    Water 2.5.8 发布,一站式服务治理平台
    CODING 公开课火热报名中!
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/14960676.html
Copyright © 2020-2023  润新知