es bulk入库数据丢失 分析思路

bulk入库数据丢失

【问题现象】

用户反馈数据,会生成报文,每天丢20%的报文,ES中存储的是2种日志,通过抽了2个业务日志做比对,反馈说有一些流水的号没有打出来,怀疑有丢失数据的情况

【分析过程】

建议业务单独入库疑似丢掉的数据,但是数据已经丢失,没法复现。

后续了解到业务是通过bulk批量方式入库的,但是bulk方式入库会有个现象:批量入库后会返回整体的成功信息,如果此批次里面有错误数据的话是不会报错的,同时也不会入库错误数据,带来的现象就是数据丢失。

随即本地模拟了bulk方式入库,如下入库3条数据,在其中构造出一条错误数据,可以看到整体是反馈成功的。

bulk入库数据丢失

后续通过查询索引只能查询出2条数据,如下:

bulk入库数据丢失

【处理建议】

1. 从入库数据源头提前了解到数据信息,防止错误数据入库。

2. 可以对代码二次开发进行每条入库数据解析,能及时观察到错误数据。

3. 单独入库每条数据,会对性能有较大影响。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注