美文网首页
0001.Kafka基本构造与主要概念

0001.Kafka基本构造与主要概念

作者: 笑着字太黑 | 来源:发表于2022-04-12 13:59 被阅读0次

kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。

主要概念有:

Producer
Broker
  Topic
  Partition
    Leader
    Follower
Consumer
image.png
1.主要概念简介

Broker:
Broker为节点的意思,我们启动的单个Kafka实例则为一个Broker,多个Broker可以组成Kafka集群

Topic:
Topic为主题的意思,也就是相当于消息系统中的队列(queue),一个Topic中存在多个Partition

Partition:
Partition为分区的意思,是构成Kafka存储结构的最小单位

Partition offset:
offset为消息偏移量,以Partition为单位,即使在同一个Topic中,不同Partition的offset也是重新开始计算(也就是会重复)

2.Broker Controller选举机制

在kafka集群启动的时候,会自动选举一台broker作为controller来管理整个集群,选举的过程是集群中每个broker都会尝试在zookeeper上创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,这个broker就会成为集群的总控器controller。
当这个controller角色的broker宕机了,此时zookeeper临时节点会消失,集群里其他broker会一直监听这个临时节点,发现临时节点消失了,就竞争再次创建临时节点,就是我们上面说的选举机制,zookeeper又会保证有一个broker成为新的controller。
具备控制器身份的broker需要比其他普通的broker多一份职责,具体细节如下:

1.监听broker相关的变化。为Zookeeper中的/brokers/ids/节点添加BrokerChangeListener,用来处理broker增减的变化。

2.监听topic相关的变化。为Zookeeper中的/brokers/topics节点添加TopicChangeListener,用来处理topic增减的变化;为Zookeeper中的/admin/delete_topics节点添加TopicDeletionListener,用来处理删除topic的动作。

3.从Zookeeper中读取获取当前所有与topic、partition以及broker有关的信息并进行相应的管理。对于所有topic所对应的Zookeeper中的/brokers/topics/[topic]节点添加PartitionModificationsListener,用来监听topic中的分区分配变化。

4.更新集群的元数据信息,同步到其他普通的broker节点中。

3.Partition副本选举Leader机制

controller感知到分区leader所在的broker挂了(controller监听了很多zk节点可以感知到broker存活),controller会从ISR列表(参数unclean.leader.election.enable=false的前提下)里挑第一个broker作为leader(第一个broker最先放进ISR列表,可能是同步数据最多的副本),如果参数unclean.leader.election.enable为true,代表在ISR列表里所有副本都挂了的时候可以在ISR列表以外的副本中选leader,这种设置,可以提高可用性,但是选出的新leader有可能数据少很多。

副本进入ISR列表有两个条件:

1.副本节点不能产生分区,必须能与zookeeper保持会话以及跟leader副本网络连通

2.副本能复制leader上的所有写操作,并且不能落后太多。(与leader副本同步滞后的副本,是由 replica.lag.time.max.ms 配置决定的,超过这个时间都没有跟leader同步过的一次的副本会被移出ISR列表)

相关文章

  • 0001.Kafka基本构造与主要概念

    kafka是一个消息队列产品,基于Topic partitions的设计,能达到非常高的消息发送处理性能。Spri...

  • Java基础之面向对象详解

    ##################################### 基本概念 类与对象 构造方法及其重载 ...

  • 【高级特性】44、类定义中的特殊方法

    目录一、基本概念二、构造与解构三、算术运算四、其他特殊方法 一、基本概念 特殊方法(special method)...

  • 建造者模式

    建造者模式重要概念 很不好理解 基本概念: 将一个复杂概念的构造与他的表示分离,使得同样的构造过程可以创建不同的表...

  • Swift基础语法-结构体,构造函数,(系统结构体)扩充函数,值

    知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结...

  • 构造函数和es6知识点

    构造函数 一、构造函数: 说构造函数的概念之前我们应该先了解类的概念,类与对象的概念息息相关,我们在讲对象的概念的...

  • 方法和封装

    来自拉钩教育-JAVA就业集训营 构造方法的基本概念 构造方法名与类名完全相同并且没有返回值类型,连void都不许...

  • c++复制构造函数

    基本概念 复制构造函数(Copy constructor)是c++中的一个特殊构造函数,也称拷贝构造函数,它只有一...

  • 2018-5-31构造函数

    构造函数: 说构造函数的概念之前我们应该先了解类的概念,类与对象的概念息息相关,我们在讲对象的概念的时候说...

  • 27

    一、构造函数: 说构造函数的概念之前我们应该先了解类的概念,类与对象的概念息息相关,我们在讲对象的概念的时...

网友评论

      本文标题:0001.Kafka基本构造与主要概念

      本文链接:https://www.haomeiwen.com/subject/vdzgsrtx.html