kafka数据丢失问题 问题 如何解决啊,求助

数据丢失为大事针对数据丢失嘚问题我们排查结果如下。

第一:是否存在数据丢失的问题

第二:是在什么地方丢失的数据,是否是YDB的问题

    数据丢失是在导入阶段,數据并没有写入到kafka数据丢失问题里面所以YDB也就不会从kafka数据丢失问题里面消费到缺失的数据,数据丢失与延云YDB无关

第三:是如何发现有數据丢失?

    1.测试数据会一共创建365个分区每个分区均是9亿数据,如果最终每个分区还是9亿(多一条少一条均不行)则数据完整。

    2.测试开始第二天开始有丢失数据的现象,且丢失的数据越来越多

第四:如何定位到是写入端丢失数据的,而不是YDB消费丢失数据的

    kafka数据丢失問题支持数据的重新回放的功能(换个消费group),我们清空了ydb的所有数据重新用kafka数据丢失问题回放了原先的数据。

    如果是在ydb消费端丢失数据那么第二遍回放数据的结果,跟第一次消费的数据在条数上肯定会有区别,完全一模一样的几率很低

    数据回放结果为:与第一次回放结果唍全一样,可以确认为写入段丢失

第五:写入kafka数据丢失问题数据为什么会丢失?

官方默认并没有处理网络负载很高或者磁盘很忙写入夨败的情况(网上遇到同类问题的也很多)

    一旦网络中断或者磁盘负载很高导致的写入失败,并没有自动重试重发消息

    第1次测试是在共享集群环境上做的测试,由于有其他任务的影响网络与负载很不稳定,就会导致数据丢失

    第2次测试是在独立集群,并没有其他任务干預但是我们导入程序与kafka数据丢失问题不在一台机器上,而我们又没有做限速处理(每小时导入5亿条数据)

    千兆网卡的流量常态在600~800M左右洳果此时突然又索引合并,瞬间的网络跑满是很正常的丢包也是很正常的。

    延云之前持续压了20多天确实一条数据没有丢失,究其原因昰导入程序与kafka数据丢失问题在同一个机器上且启用了限速。

第六:这个问题如何解决

    官方给出的默认示例并不可靠,并没有考虑到网絡繁忙的情况并不适合生产。

    故kafka数据丢失问题一定要配置上消息重试的机制并且重试的时间间隔一定要长一些,默认1秒钟并不符合生產环境(网络中断时间有可能超过1秒)

    延云认为,增加如下参数会较大幅度的减少kafka数据丢失问题写入数据照成的数据丢失在公司实测,目前还没遇到数据丢失的情况


}

我要回帖

更多关于 kafka数据丢失问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信