一、如何保证消息的可靠性传输(如果处理消息丢失的问题)?
消息丢失分为两种情况:
消费端丢失数据:消费端消费数据,会自动提交offset,如果数据没有消费,但是已经提交了offset,此时消费端宕机,这样就导致消息丢失。可以设置手工提交offset。
Kafka丢失数据:数据是在partition,如果所在的broker宕机了,而此时数据来不及同步到其它节点的副本,导致会丢失部分数据,为了保证数据不丢失,在数据发送到Leader,同时数据同步到其它副本,此时的ack才确认已经收到消息,这样的话,就保证kafka不会丢失数据. Ack有三种方式:数据发送到leader,然后同步到其它所有的副本,第二种,发送数据到leader,只要其中的一个副本接到数据即可 第三种,客户端仅仅发送到kafka,不关注中级数据是否会丢