大家好,欢迎来到IT知识分享网。
创作不易,关注、点赞,分享,转发,评论,了解互联网前沿知识。
Kafka概述:
Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统)
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存在丢消息的问题,消息丢失会发生在Broker,Producer和Consumer三种。
kafka有三次消息传递过程
1、生产者发消息给 kafka broker传递消息
2、kafka broker 消息同步和持久化操作
3、kafka broker 将消息传递给消费者流程
4、在这三步中每一步都有可能会丢失消息。
- 消息发送
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