1.背景
Kafka的两个topic,topic1 为用户下单明细记录(包含订单基本信息),topic2为下单渠道记录(包含下单来源和渠道内容设备相关的信息) ,要求实时统计每分钟内所有订单下的渠道来源分布详情。具体做法是1.双流关联得到每个订单的渠道信息明细interval join 2.根据渠道维度汇总聚合数据。但是在实时流数据输出的结果和离线订单有gap,发现双流关联后中间结果数据有重复订单数据。如下双流关联后实时输出到clickhouse,且数据重复是稳定复现的大概每个月800多条,在订单总占比在0.0001左右。
任务关键join代码
2.问题结论
检查两条流消息本身没有数据重复,结果数据理论上也是不应该有重复出现,并且任务的逻辑也没有问题。且任务的qps高峰100个记录,不会产生背压等情况。
1.任务消息发生抖动。
2.输出到clikhouse没有做exectly once。
任务健康运行30天+。
3.排查过程
3.1 任务抖动
找到一个订单重复的case,离线任务中分别查询明细情况。下单明细和下单渠道都是无重复的,进一步找到两条记录的产生时间,在任务运行火焰图中查找运行情况,发现在两条记录产生过程中,输入数据没有明显抖动,但是输出有一个很明显的跃迁抖动。
消费堆积
4.后续思考
1.数据抽取过程中可能发生任何问题,这种问题的解决方案是采用数据回放的方式解决。
2.ck的写入后续需要加入exectly once机制。