仓储测试数据清理方案——说起来简单,其实很难

it2026-02-08  0

目录

一、仓储测试数据问题

二、不好的清理方案

三、清理方案选择

四、整体清理方案

1、整体需求考虑:

2、整体清理过程

3、清理方案的关键实现点

4、风险控制

5、清理效果


一、仓储测试数据问题

未完结、出库、发运容器过多,直接阻塞后续正常实操(后续交接实操报timeout)

初步统计了一下量:4月~9月以来,未完结数据约7W左右

原因:自动化产生、测试数据使用不规范、系统异常、脏数据等

二、不好的清理方案

1、 干扰了日常的业务测试、自动化测试

2、 引发业务系统问题(类似自动化测试,引发线上问题,乃至故障,想必都听说过)

3、 直接对DB进行操作

三、清理方案选择

上策:不影响日常联调、测试; 级联的业务脏数据一并清理了;不会给业务系统带来风险

中策:保证不影响日常联调、测试,允许级联的业务脏数据存在

下策:直接对DB操作

四、整体清理方案

1、整体需求考虑:

1、 满足业务限制: 只能查询30天内的数据;

2、每日有数据增量,需要定时清理;

3、大批量的存量数据,同时需要考虑安全清理;

4、有人工按需清理需求

2、整体清理过程

1) 每个未完结容器,经历第一层清理。

2) 第一层清理无法清理掉的, 进入第二层清理

3)整个清理过程将异步完成

3、清理方案的关键实现点

为了不给系统带来性能风险, 批量数据清理采用串行清理 + 线程sleep方式2为了尽可能清理掉级联数据,设计了2个清理层 清理过程,兼容掉不可预期的处理异常,即一个数据清理异常时,不影响其他数据清理

考虑了清理失败/异常时:

1)catch到系统异常(如报超时),原地重试3次

2)catch到第一层清理异常,直接转入第二层清理

3)catch到第二层清理异常,直接转入sleep

4)转入下一个数据清理流程

由于整个清理过程时间较长(以数据量而定,可能小时级别),采用 异步 + 消息通知方式清理执行时, 既配置了定时执行 ,又提供工具,可以手工执行

4、风险控制


5、清理效果

 

最新回复(0)