Kafka进阶(一)

本文详细探讨了Kafka的高可用、高性能设计原理。高可用方面,涉及控制器选举、副本机制、ISR机制和ACK机制。高性能则讲解了Reactor多路复用模型、生产消息流程、顺序写磁盘、OS Cache、零拷贝技术和压缩传输。这些设计使得Kafka在大数据场景下表现出色。
摘要由CSDN通过智能技术生成

Kafka以高吞吐量、低延迟、高并发、高可扩展性而自称,并在越来越多的场景中应用。下面聊聊Kafka高可用、高性能、高并发的设计原理。

在这里插入图片描述

1、Kafka高可用设计原理

1.1、控制器

Kafka控制器就是Broker,除了具有一般Broker的功能外,还具有选举主题的分区Leader节点的功能。
在启动Kafka系统的时候,其中一个Broker会被选举为控制器,负责管理主题的分区和副本的状态,还会执行重分配的任务。第一个启动的Broker会在Zookeeper系统里创建一个临时节点/controller,并写入该节点的注册信息,使该节点成为控制器。其他Broker在陆续启动时,也会尝试在Zookeeper系统中创建临时节点/controller,但由于已经存在,会创建失败,确保了Kafka集群中控制器的唯一性。
可见,控制器选举的核心思路是各个节点公平竞争抢占Zookeeper系统中临时节点/controller,最先创建成功的Broker会成为控制器,并拥有选举主题的分区Leader节点的功能。

1.2 、副本机制

副本机制简单来说就是备份机制,在集群中保存着相同的数据备份,提供数据冗余,是Kafka确保系统高可用和高持久的重要基石。
Kafka的分区是多副本的,若其中一个副本丢失了,那么还可以从其他副本中获取分区数据。
在Kafka中,主题(Topic)被分为多个分区(Partition),分区是Kafka最基本的存储单位。在创建主题的时候可以使用replication-factor参数指定分区的副本个数,分区的副本中总会有一个Leader副本,其他为Follower副本,所有的消息都直接发送给Leader副本,其他Follower副本都需要通过复制Leader副本中的数据来保证数据一致。当Leader副本不可用时,其中一个Follower副本会被选举为新的Leader副本。

1.3、ISR机制

每个分区(Partition)都有一个ISR(in-sync-replica)列表,用于维护所有同步的、可用的副本。Leader副本必然是同步副本,也就是说ISR不只是Follower副本的集合,也包括Leader副本,甚至在某些情况,ISR只有一个Leader副本。
同步副本的条件:

  1. 必须定时向Zookeeper发送心跳;
  2. 在规定的时间内从Leader副本低延迟的获取过消息;

若副本不满足上面条件的话,就会被从ISR列表中移除,直到满足条件才会被再次加入。
Kafka判断Follower是否与Leader同步的条件就是replica.l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值