kafka消息丢失
在处理生产环境问题的过程中发现12号那天某kafka集群有少量的数据丢失,概率大致在千万分之三。 数据写入kafka之后,就完全消失了,消费者完全没有消费到这个数据。 通过找到那天的数据,查看有问题的数据在写入kafka的时候上下文应用日志发现有少量以下报错: [2019-10-12 11:03:43,xxx] This is not the correct coordinator. 理论上正常情况下kafka是不太可能丢数据的,如果出现这种情况,必然是开发人员或者硬件引发了什么问题,因为写入日志是有的,看了下应用配置 acks=1 马上意识到,问题突破口应该在这里。 acks=0 生产者能够通过网络吧消息发送出去,那么就认为消息已成功写入Kafka,一定会丢失一些数据 acks=1 master在疏导消息并把它写到分区数据问津是会返回确认或者错误响应,还是可能会丢数据 acks=all master在返回确认或错误响应之前,会等待所有同步副本都收到消息 可能以前是为了保证性能够快,选择了折中的应用配置 acks=1 。 马上想到去看下kafka的日志,猜测这个时间段必然出现出现了 master 不可用的情况才会导致数据丢失。 在kafka集群的57号节点的机器上看到这样一段日志: [2019-10-12 11:03:39,427] WARN Client session