kafka丢失消息,消息乱序(重试)常见处理

消息的完整性和系统的吞吐量是互斥的,为了确保消息不丢失就必然会损失系统的吞吐量

producer
1、ack设置-1
2、设置副本同步成功的最小同步个数为副本数-1
3、加大重试次数
4、同步发送
5、对于单条数据过大,要设置可接收的单条数据的大小
6、对于异步发送,通过回调函数来感知丢消息
7、配置不允许非ISR集合中的副本当leader
8、客户端缓冲区满了也可能会丢消息;或者异步情况下消息在客户端缓冲区还未发送,客户端就宕机
9、 block.on.buffer.full = true
consumer:
1、 enable.auto.commit=false  关闭自动提交位移


同一分区消息乱序
假设a,b两条消息,a先发送后由于发送失败重试,这时顺序就会在b的消息后面,可以设置 max.in.flight.requests.per.connection=1来避免

max.in.flight.requests.per.connection :限制客户端在单个连接上能够发送的未响应请求的个数。设置此值是1表示kafka broker在响应请求之前client不能再向同一个broker发送请求,但吞吐量会下降


你可能感兴趣的:(kafka)