邯郸网站设计价位,三门峡网站网站建设,赣州行业网站建设,域名服务器ip查询2019独角兽企业重金招聘Python工程师标准 数据丢失为大事#xff0c;针对数据丢失的问题我们排查结果如下。 第一#xff1a;是否存在数据丢失的问题#xff1f; 存在#xff0c;且已重现。 第二#xff1a;是在什么地方丢失的数据#xff0c;是否是YDB… 2019独角兽企业重金招聘Python工程师标准 数据丢失为大事针对数据丢失的问题我们排查结果如下。 第一是否存在数据丢失的问题 存在且已重现。 第二是在什么地方丢失的数据是否是YDB的问题 数据丢失是在导入阶段数据并没有写入到Kafka里面所以YDB也就不会从Kafka里面消费到缺失的数据数据丢失与延云YDB无关。 第三是如何发现有数据丢失 1.测试数据会一共创建365个分区每个分区均是9亿数据如果最终每个分区还是9亿多一条少一条均不行则数据完整。 2.测试开始第二天开始有丢失数据的现象且丢失的数据越来越多。 第四如何定位到是写入端丢失数据的而不是YDB消费丢失数据的 kafka支持数据的重新回放的功能(换个消费group)我们清空了ydb的所有数据重新用kafka回放了原先的数据。 如果是在ydb消费端丢失数据那么第二遍回放数据的结果跟第一次消费的数据在条数上肯定会有区别,完全一模一样的几率很低。 数据回放结果为与第一次回放结果完全一样可以确认为写入段丢失。 第五写入kafka数据为什么会丢失 导入数据我们采用的为kafka给的官方的默认示例官方默认并没有处理网络负载很高或者磁盘很忙写入失败的情况网上遇到同类问题的也很多 一旦网络中断或者磁盘负载很高导致的写入失败并没有自动重试重发消息。 而我们之前的测试 第1次测试是在共享集群环境上做的测试由于有其他任务的影响网络与负载很不稳定就会导致数据丢失。 第2次测试是在独立集群并没有其他任务干预但是我们导入程序与kafka不在一台机器上而我们又没有做限速处理每小时导入5亿条数据 千兆网卡的流量常态在600~800M左右如果此时突然又索引合并瞬间的网络跑满是很正常的丢包也是很正常的。 延云之前持续压了20多天确实一条数据没有丢失究其原因是导入程序与kafka在同一个机器上且启用了限速。 第六这个问题如何解决 官方给出的默认示例并不可靠并没有考虑到网络繁忙的情况并不适合生产。 故kafka一定要配置上消息重试的机制并且重试的时间间隔一定要长一些默认1秒钟并不符合生产环境网络中断时间有可能超过1秒。 延云认为增加如下参数会较大幅度的减少kafka写入数据照成的数据丢失在公司实测目前还没遇到数据丢失的情况。 props.put(compression.type, gzip); props.put(linger.ms, 50); props.put(acks, all); props.put(retries , 30); props.put(reconnect.backoff.ms , 20000); props.put(retry.backoff.ms, 20000); 转载于:https://my.oschina.net/ifraincoat/blog/1617787