资损事故也可以算入广义的稳定性保障的一类,但是它也有自己的一些特点,

  • 感知难
    比如:商户配错价格、秒杀商品大量超卖、优惠券规则有漏洞、搜索推荐出错影响广告收入、会员未自动续期、积分算错、清结算少抽佣、黑产使用业务漏洞等,这些平台感知能力弱,技术指标不敏感,大部分是舆论爆发后人工反馈。
  • 修复慢
    修复慢是因为缺少可复用预案,只能临时Fix,时间上紧迫还容易引入新的风险。
  • 影响大
    涉及到钱,发现晚,修复慢,量就上去了,继而金额巨大。

所以更应该把精力投入到事前预防和尽早发现上,这样才能减少损失。

防资损工作的特点_精确计算

预防阶段,需要重点评估下面的风险,我们需要有风险地图,并做到防资损设计:

  • 幂等
  • 并发时数据正确性
  • 防数据篡改
  • 防金额计算错误
  • 检查默认值设置
  • 数据一致性
  • 兼容性问题
  • 防状态机错误
  • 环境隔离问题
  • 防返回码解析错误
  • 防变更配置错误导致资损的隐患?
  • ...

资损风险最终的都会反映到资金层面上,一般系统中资金的变化主要体现在:资金流、资金账户、资金计算和资金凭据,我们就需要做核验:

  • 资金流:通过梳理资金的流向,来确认资金转移的等式的正确性;
  • 资金账户:通过流水和记录核对资金账户数据的正确性;
  • 资金计算:通过数据对比进行正确性核算,比如:需要用BIGINT记录分金额,避免浮点存储计算不精确和DECIMAL精确计算代价高的问题;
  • 资金凭据:验证凭据的数据准确性以及彼此关联的数据正确性;

预案主要是止损的部分,需要具备资产冻结、资金拦截、场景降级或禁用这些预案,并做到定期演练。

总之,资金安全无小事,我们需要尊重墨菲定律,围绕可能发生的问题做足准备。