首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
SQL-Server
›
Kafka怎样包管消息可靠?
返回列表
发新帖
Kafka怎样包管消息可靠?
[复制链接]
发表于 2024-12-3 10:49:21
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
大家好,我是锋哥。本日分享关于【
Kafka怎样包管消息可靠?】面试题。
盼望对大家有帮助;
Kafka怎样包管消息可靠?
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网
Kafka通过多种机制来确保消息的可靠性,主要包罗数据的
持久化
、
复制
、
acknowledgment机制
、
消息顺序包管
和
消耗者的偏移量管理
等。以下是Kafka怎样包管消息可靠的具体说明:
1.
消息持久化(Durability)
Kafka通过将消息写入磁盘来包管消息的持久性,即使体系瓦解或重启,消息也不会丢失。
消息日记
:每个分区的消息都被持久化为一个日记文件。Kafka将消息以顺序写入的方式
存储
在磁盘中,这样即使Kafka节点发生故障,磁盘中的日记也能包管消息不丢失。
日记段与清理
:Kafka会把消息写入分段的日记文件中,并定期清理已过期或不再需要的消息(如果设置了过期时间或大小限制)。
2.
消息复制(Replication)
Kafka通过消息的复制来增强数据的可靠性和容错性。每个主题的分区都会有多个副本,这些副本分布在不同的Kafka broker上。
副本因子(Replication Factor)
:每个主题的分区可以
配置
副本因子。副本因子指定每个分区要保留多少个副本(副本的数量)。默认情况下,副本因子为3,意味着每个分区有3个副本,
存储
在不同的Broker上。
领导者与跟随者(Leader and Followers)
:每个分区有一个
领导者
(Leader)副本和多个
跟随者
(Follower)副本。所有的生产者和消耗者都与分区的领导者副本交互。跟随者副本从领导者副本同步数据,以包管数据冗余。
如果领导者副本失败,Kafka会主动推选一个跟随者副本成为新的领导者,确保服务不中断。
生产者写入数据时,默认会等待所有副本(包罗跟随者)同步完数据后再确认写入乐成,这进步了消息的可靠性。
3.
acknowledgment机制(Producer Acknowledgment)
Kafka的生产者在发送消息时,可以根据不同的ack设置,控制消息的可靠性。具体的ack设置有三个品级:
acks=0
:生产者发送消息后不等待任何确认,消息写入大概丢失,速率最快,但可靠性最低。
acks=1
:生产者发送消息后等待
领导者
副本确认写入乐成,只要领导者副本乐成写入就认为消息发送乐成。如果领导者挂掉而未同步到跟随者,消息有大概丢失。
acks=all
(即acks=-1):生产者发送消息后等待所有副本(包罗领导者和跟随者)确认写入乐成。如果任何副本未乐成确认,消息写入会失败。这是最可靠的设置,包管了消息不会丢失,但会增加延迟。
4.
消息顺序包管(Message Ordering)
Kafka包管在
单个分区
内的消息顺序。在同一个分区中,消息是按生产者写入顺序
存储
的,并且消耗者也按顺序消耗消息。
分区的顺序性
:每个分区是一个有序的队列,Kafka确保消耗者按顺序消耗每个分区的消息。然而,跨分区的顺序无法包管。
生产者的顺序性
:默认情况下,Kafka生产者会按发送顺序将消息发送到指定的分区。可以通过指定
分区键
来控制消息发送到特定分区,从而确保同一键的消息顺序性。
5.
消耗者偏移量管理(Consumer Offset Management)
Kafka通过消耗者提交偏移量来包管消息的消耗进度,确保消息不会丢失,也不会重复消耗。
偏移量的存储
:每个消耗者组的消耗进度(即偏移量)会生存在Kafka内部的特殊主题__consumer_offsets中。当消耗者消耗完消息后,它会提交偏移量,Kafka记录下这个消耗点。即使消耗者瓦解,也可以从上次提交的偏移量开始继续消耗。
手动提交与主动提交
:消耗者可以选择手动提交偏移量或主动提交。手动提交可以确保更精确的控制,避免在消息处理失败时提交织误的偏移量。
6.
幂等性(Idempotence)
为了避免重复消息,Kafka 2.0及以上
版本
引入了生产者的
幂等性
机制,确保在网络故障或重试的情况下,不会发送重复的消息。
生产者在发送消息时,Kafka会为每个消息分配一个
唯一的消息ID
,以包管相同的消息不会被重复写入。
开启生产者的幂等性后,Kafka会根据消息ID来去重,确保即使生产者重试,消息仍然是唯一的,不会被重复消耗。
7.
配置
高可用性与容错性
Kafka的计划答应通过多个Broker实现高可用性,体系可以容忍一定命量的Broker故障。具体计谋包罗:
分布式摆设
:Kafka集群中的每个Broker都可以承载多个分区副本。即使某些Broker宕机,其他Broker的副本仍然能够提供服务。
主动领导者推选
:如果分区的领导者副本挂掉,Kafka会主动推选新的领导者,从而确保消息生产和消耗不受影响。
8.
日记清理与过期消息
Kafka支持日记清理机制,可以主动删除过期或不再需要的消息。具体包罗:
基于时间的清理
:可以
配置
消息的保留时间(如1天),超过保留时间的消息会被删除。
基于大小的清理
:可以设置每个分区日记的最大大小,当日记文件大小超过阈值时,会开始清理旧消息。
总结
Kafka通过以下几种机制来确保消息的可靠性:
消息持久化
:将消息写入磁盘,包管数据不会丢失。
消息复制
:通过副本包管数据的冗余和容错本领。
生产者确认(ack)机制
:根据不同的ack设置包管消息的可靠性。
消耗者偏移量管理
:确保消息不会丢失,也不会重复消耗。
幂等性机制
:防止生产者发送重复消息。
主动领导者推选
:包管体系在Broker故障时的高可用性。
这些机制共同作用,确保了Kafka在分布式环境中的高可靠性、数据持久性和容错性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
使用道具
举报
返回列表
南七星之家
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表