面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]

面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]创作不易,关注、点赞,分享,转发,评论,了解互联网前沿知识。

大家好,欢迎来到IT知识分享网。

面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]

创作不易,关注、点赞,分享,转发,评论,了解互联网前沿知识。

Kafka概述:

Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统)

面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]

Kafka应用场景

1、web/nginx日志;

2、访问日志;

3、消息服务;

主要应用场景是:日志收集系统和消息系统。

Kafka主要设计目标

1、高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。

2、支持Kafka Server间的消息分区,及分布式消费。

3、同时支持离线数据处理和实时数据处理。

4、Scale out:支持在线水平扩展

Kafka的优点

1.解耦;

2.冗余(副本);

3.扩展性;

4.灵活性&峰值处理;

5.可恢复性;

6.顺序保证;

7.缓冲;

8.异步通信;

kafka架构设计图

面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]

Kafka在什么情况下会出现消息丢失及解决方案

Kafka存在丢消息的问题,消息丢失会发生在Broker,Producer和Consumer三种。

kafka有三次消息传递过程

1、生产者发消息给 kafka broker传递消息

2、kafka broker 消息同步和持久化操作

3、kafka broker 将消息传递给消费者流程

4、在这三步中每一步都有可能会丢失消息。

面试官问:Kafka 会不会丢消息,怎么处理的?高手这样回答[通俗易懂]

  1. 消息发送

1、acks=0,producer不等待broker的响应,效率最高,但是消息很可能会丢。

2、ack=1,leader crash producer发送消息完,只等待lead写入成功就返回了,leader crash了,这时follower没来及同步,消息丢失。

解决方案:

一、基于配置

1、配置:ack=all / -1,tries > 1,unclean.leader.election.enable : false producer发送消息完,等待follower同步完再返回。

2、配置:min.insync.replicas > 1 副本指定必须确认写操作成功的最小副本数量。

3、失败的offset单独记录 producer发送消息,会自动重试,遇到不可恢复异常会抛出,这时可以捕获异常记录到数据库或缓存,进行单独处理。

二、消费

先commit再处理消息。如果在处理消息的时候异常了,但是offset 已经提交了,这条消息对于该消费者来说就是丢失了,再也不会消费到了。

三、broker减小刷盘间隔

总结:

kafka到底会丢消息,Kafka可能会在生产者发送数据;Kafka Broker 存储数据;消费者消费数据;在处理时应避免这样操作,可预防消息丢失情况呢。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6402.html

(0)
上一篇 2022-12-16 17:20
下一篇 2022-12-16 17:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信