flink双流join结果数据重复问题排查

1.背景

     Kafka的两个topic,topic1 为用户下单明细记录(包含订单基本信息),topic2为下单渠道记录(包含下单来源和渠道内容设备相关的信息) ,要求实时统计每分钟内所有订单下的渠道来源分布详情。具体做法是1.双流关联得到每个订单的渠道信息明细interval join  2.根据渠道维度汇总聚合数据。但是在实时流数据输出的结果和离线订单有gap,发现双流关联后中间结果数据有重复订单数据。如下双流关联后实时输出到clickhouse,且数据重复是稳定复现的大概每个月800多条,在订单总占比在0.0001左右。

flink双流join结果数据重复问题排查_第1张图片

任务关键join代码

flink双流join结果数据重复问题排查_第2张图片

2.问题结论

    检查两条流消息本身没有数据重复,结果数据理论上也是不应该有重复出现,并且任务的逻辑也没有问题。且任务的qps高峰100个记录,不会产生背压等情况。

 1.任务消息发生抖动。

 2.输出到clikhouse没有做exectly once。

flink双流join结果数据重复问题排查_第3张图片

任务健康运行30天+。

3.排查过程

3.1 任务抖动

    找到一个订单重复的case,离线任务中分别查询明细情况。下单明细和下单渠道都是无重复的,进一步找到两条记录的产生时间,在任务运行火焰图中查找运行情况,发现在两条记录产生过程中,输入数据没有明显抖动,但是输出有一个很明显的跃迁抖动。

flink双流join结果数据重复问题排查_第4张图片

flink双流join结果数据重复问题排查_第5张图片

flink双流join结果数据重复问题排查_第6张图片

flink双流join结果数据重复问题排查_第7张图片

消费堆积

flink双流join结果数据重复问题排查_第8张图片

4.后续思考

   1.数据抽取过程中可能发生任何问题,这种问题的解决方案是采用数据回放的方式解决。

   2.ck的写入后续需要加入exectly once机制。

你可能感兴趣的:(flink,flink,大数据)