Kafka Partition Leader选举机制原理详解(下)

简介: Kafka Partition Leader选举机制原理详解

3 Kafka Partition选主机制

3.1 优势

Kafka的Leader Election方案解决了上述问题,它在所有broker中选出一个controller,所有Partition的Leader选举都由controller决定。

controller会将Leader的改变直接通过RPC的方式(比ZooKeeper Queue的方式更高效)通知需为此作为响应的Broker。


没有使用 zk,所以无 2.3 问题;也没有注册 watch无 2.2 问题

leader 失败了,就通过 controller 继续重新选举即可,所以克服所有问题。

3.2 Kafka集群controller的选举

每个Broker都会在Controller Path (/controller)上注册一个Watch。 当前

Controller失败时,对应的Controller Path会自动消失(因为它是ephemeral

Node),此时该Watch被fire,所有“活” 着的Broker都会去竞选成为新的

Controller (创建新的Controller Path),但是只会有一个竞选成功(这点由

Zookeeper保证)。竞选成功者即为新的Leader,竞选失败者则重新在新的

Controller Path上注册Watch。因为Zookeeper的Watch是一次性的, 被fire一次

之后即失效,所以需要重新注册。

3.3 Kafka partition leader的选举

由controller执行:

  • 从Zookeeper中读取当前分区的所有ISR(in-sync replicas)集合
  • 调用配置的分区选择算法选择分区的leader
  • image.png
  • 上面五种分区算法都是选择PreferredReplica作为当前Partition的leader。区别仅

仅是选择leader之后的操作有所不同。


所以,对于下图partition 0先选择broker2,之后选择broker 0作カleader;对于

partition 1先选择broker 0,之后迭拝broker 1作カleader;partition 2先选择

broker1,之后选择 broker2作为leader。

image.png

目录
相关文章
|
消息中间件 存储 缓存
大厂面试高频:Kafka 工作原理 ( 详细图解 )
本文详细解析了 Kafka 的核心架构和实现原理,消息中间件是亿级互联网架构的基石,大厂面试高频,非常重要,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka 工作原理 ( 详细图解 )
|
消息中间件 分布式计算 算法
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
274 5
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
|
消息中间件 SQL 分布式计算
大数据-64 Kafka 高级特性 分区Partition 分区重新分配 实机实测重分配
大数据-64 Kafka 高级特性 分区Partition 分区重新分配 实机实测重分配
541 7
|
消息中间件 Kafka API
原理剖析| Kafka Exactly Once 语义实现原理:幂等性与事务消息
原理剖析| Kafka Exactly Once 语义实现原理:幂等性与事务消息
392 0
|
消息中间件 JSON 大数据
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
大数据-66 Kafka 高级特性 分区Partition 副本因子Replication Factor replicas动态修改 线上动态修改副本数
479 1
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
1169 0
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
618 1