kafka入门之broker-水印和leader epoch

每个kafka副本对象都持有2个重要的属性:日志末端位移LEO,高水印HW

Kafka对leader副本和follower副本的LEO更新机制是不同的,后面我们会详细讨论。

Kafka对leader副本和follower副本的hw值更新机制也是不同的。

消费者无法消费分区leader副本上那些位移大于分区hw的消息。分区hw就是leader副本的hw值。

关于LEO

2套follower副本LEO属性:一套LEO值保存在follower副本所在broker的缓存上;另一套LEO值保存在leader副本所在的broker的缓存上。

follwer副本的LEO:每写一条消息就+1

leader上的副本LEO:收到FETCH请求之后,先从自己的log中读取相应的数据,但是在给follower返回数据之前它先去更新follower的LEO

关于HW(时机+算法)

follower更新hw:follower更新hw发生在其更新LEO之后,一旦follower向log写完数据,它就会尝试更新HW值,具体的算法就是比较当前LEO值与FETCH响应中leader的HW值,取两者的小者作为新的HW值。

leader更新hw的时机:

1.副本成为leader时

2.broker出现崩溃导致副本被踢出ISR时

3.producer向leader副本写入消息时

4.leader处理followerFETCH请求时:首先会从底层的log读取数据,之后再尝试更新分区HW值。

如何更新:

当确定分区hw时,它会选出所有满足条件的副本,比较他们的LEO,并选择最小的LEO值作为HW值,这里的满足条件主要是指副本满足一下两个条件之一:

1.出于ISR中

2.副本LEO落后于leaderLEO的时长不大于replica.lag.time.max.ms参数值(默认时10秒)

原文地址:https://www.cnblogs.com/lccsblog/p/11219108.html

时间: 2024-11-05 21:36:36

kafka入门之broker-水印和leader epoch的相关文章

漫游Kafka入门篇之简单介绍

原文地址:http://blog.csdn.net/honglei915/article/details/37564521 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,

_00017 Kafka的体系结构介绍以及Kafka入门案例(初级案例+Java API的使用)

博文作者:妳那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Kfaka的体系结构 # 学习前言 Kafka的整个学习过程就是自己看官网的文档,出

Kafka入门

文章来源 Kafka入门经典教程http://www.aboutyun.com/thread-12882-1-1.html Kafka官网介绍       http://kafka.apache.org/documentation.html#introduction Kafka剖析(一):Kafka背景及架构介绍  http://www.infoq.com/cn/articles/kafka-analysis-part-1/,这个介绍很全面,重点看它 1.分区 每个分区在Kafka集群的若干服务

kafka入门详细讲解

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决. 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案.Kafka的目的是通过Hadoop的并行加载机制来统一线上和离

kafka入门二:Kafka的设计思想、理念

本节主要从整体角度介绍Kafka的设计思想,其中的每个理念都可以深入研究,以后我可能会发专题文章做深入介绍,在这里只做较概括的描述以便大家更好的理解Kafka的独特之处.本节主要涉及到如下主要内容: Kafka设计基本思想 Kafka中的数据压缩 Kafka消息转运过程中的可靠性 Kafka集群镜像复制 Kafka 备份机制 一.kafka由来 由于对JMS日常管理的过度开支和传统JMS可扩展性方面的局限,LinkedIn(www.linkedin.com)开发了Kafka以满足他们对实时数据流

Kafka入门经典教程

本帖最后由 desehawk 于 2015-5-3 00:45 编辑问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件?6.producer是否直接将数据发送到broker的leader(主节点)?7.Kafa consumer是否可以消费指定分区消息?8.Kafka消息是采用Pull模式,还是Push模式?9.Procuder API有

kafka入门三:写第一个Kafka应用

一.整体看一下Kafka 我们知道,Kafka系统有三大组件:Producer.Consumer.broker . producers 生产(produce)消息(message)并推(push)送给brokers,consumers从brokers把消息提取(pull)出来消费(consume). 二.开发一个Producer应用 Producers用来生产消息并把产生的消息推送到Kafka的Broker.Producers可以是各种应用,比如web应用,服务器端应用,代理应用以及log系统等

Kafka教程(一)Kafka入门教程

1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久性.安全性以及日志记录.消息服务器可以使用一个或多个代理实例. JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生.发送.接收消息的接口简化企业应用的开发,翻译为Java

Kafka入门教程

一.基本概念 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. producers通过网络将消息发送到Kafka集