重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“Kafka水位是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kafka水位是什么”吧!
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的灵川网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
kafka中用水位来描述,
一个分区中的可见数据的offset。
大概你需要知道这几点:
hw(水位)你可以理解成是一个全局(所有副本最小offset)的offset,
针对的是一个分区
LEO代表着该副本的所有消息的最大offset,
针对的是一个副本,也就是每个副本都有LEO,并且不一样。
其中所有副本中最小的LEO就是水位
水位
为了保障数据的一致性
当 Leader收到一条消息并写入成功,
其LEO则和马上 +1.
副本会定期去和Leader进行同步,
每同步一个消息,其自己的LEO相应+1,
而水位则是所有副本最小的LEO,
所以也会慢慢进行增加。
和ACK的关系
其实没有必然的关系,
ACK是用来保证数据不丢失的,
而 hw 是用来保证客户端消费的一致性的,
不过当ACK=-1,
因为会等到数据完全写入到所有副本,
才能返回成功,
也就是说所有副本的LEO都 +1,
其水位必然也会 +1,
这个时候就可以避免数据丢失了。
否则则会存在数据丢失的风险
为什么ACK != -1 数据就可能丢失
比如一个分区,四个副本1,2,3,4:
1:LEO = 10(Leader)
2:LEO = 8
3:LEO = 7
4:LEO = 6
此时 hw = 6,
当1 号Leader挂掉了,
3号当选了新Leader,
则所有存活副本首先会将hw之外的所有数据清除,
然后从Leader同步水位之后的数据
比如2号副本:
先清除本身数据7,8,LEO变成6,
然后去Leader同步6之后的数据,
哪怕老Leader1号恢复了,6-10号数据还在,
也需要将宕机时候的hw之后的数据全部清除,
重新从Leader同步数据
感谢各位的阅读,以上就是“Kafka水位是什么”的内容了,经过本文的学习后,相信大家对Kafka水位是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!