【Kafka】Kafka基础架构及相关概念
创始人
2024-02-21 06:16:58

文章目录

    • 前言
    • 一、Kafka基础知识
    • 二、Kafka分区副本
    • 参考

前言

在以前的定义中,Kafka被定义为一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域,类似的产品主要有ActiveMQ、RabbitMQ、RocketMQ…,当然我们知道kafka的作用远不止用于消息队列,Kafka作为消息队列主要是基于点对点模式和基于发布订阅模式,其中,点对点模式表现为:消费者主动拉取数据,消息收到后清除消息。而发布订阅表现为:

  • 可以有多个topic主题(浏览、点赞、收藏、评论等)。
  • 消费者消费数据之后,不删除数据。
  • 每个消费者相互独立,都可以消费到数据。

消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信
缓冲/消峰:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
在这里插入图片描述

解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
在这里插入图片描述

异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。
在这里插入图片描述

下面就介绍下Kafka中基本的概念知识…

一、Kafka基础知识

我们先来看下Kfaka的基础架构:
在这里插入图片描述
从上图中我们可以看到,一个典型的Kafka体系架构包括若干Producer、若干Broker、若干Consumer以及一个ZooKeeper集群。其中ZooKeeper是Kafka用来负责集群元数据的管理、控制器的选举等操作的。Producer将消息发送到Broker,Broker负责将收到的消息存储到磁盘中,而Consumer负责从Broker订阅并消费消息。Kafka中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题并进行消费。

主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。offset是消息在分区中的唯一标识,Kafka通过它来保证消息在分区内的顺序性,不过offset并不跨越分区,也就是说,Kafka保证的是分区有序而不是主题有序。

注意:上图也只是Kafka的基础架构图,不一定能准确描Kafka各版本的改动信息,例如,在Kafka3.0+版本中,Kafka不再依赖于ZooKeeper管理元数据信息等。

Kafka分为服务器端和客户端。服务器端的元数据通常是指集群的元数据,包括集群有哪些Broker,有哪些主题,每个主题都有哪些分区,而每个分区的Leader副本在哪台Broker上等信息。这些信息保存在ZooKeeper和Controller中。Kafka以ZooKeeper中保存的元数据为权威数据,Controller会从ZooKeeper中获取最新的元数据并缓存在自己的内存中。客户端的元数据通常是指消费者的注册信息和位移信息。在Kafka 0.9版本之前,这些信息的确保存在ZooKeeper中。不过目前已经废弃了。新版本的消费者把这些信息保存在一个Kafka的内部主题中,由集群中一个名为Coordinator的组件进行管理。Kafka3.0以前(主要是指服务器端)是依赖ZooKeeper才能正常运转的。3.0后移除对ZooKeeper的依赖。具体的原理是在Kafka内部实现一个基于Raft的Controller集群,来替代ZooKeeper保存和管理集群元数据。

下面将解释Kafka中的各种基础概念:

  • Producer:消息生产者,就是向 Kafka Broker 发消息的客户
  • Consumer:消息消费者,向 Kafka Broker 取消息的客户端。
  • Consumer Group(CG):消费者组,由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • Broker:一台 Kafka 服务器就是一个 Broker 。一个集群由多个 Broker 组成。一个Broker 可以容纳多个 Topic。
  • Topic:可以理解为一个队列,生产者和消费者面向的都是一个 Topic。
  • Partition:为了实现扩展性,一个非常大的 Topic可以分布到多个 Broker (即服务器)上,一个 Topic可以分为多个 Partition,每个 Partition是一个有序的队列。
  • Replica:副本。一个 Topic的每个分区都有若干个副本,一个 Leader 和若干个Follower。
  • Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。
  • Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的Leader。

二、Kafka分区副本

当Kafka生产者给Kafka集群(多个Broker组成Kafka集群)发送消息时,会根据分区规则选择存储到Broker中的哪个具体的分区。如果分区规则设定得合理,所有的消息都可以被均匀地分配到不同的分区中。

Kafka为分区引入了多副本机制,通过增加副本数量可以提升容灾能力。同一分区的不同副本中保存的是相同的消息,副本之间是一主多从的关系,其中Leader副本负责处理读写请求,Follower副本只负责与Leader副本的消息同步。副本处于不同的Broker中,当Leader副本出现故障时,从Follower副本中重新选举新的Leader副本对外提供服务。Kafka通过多副本机制实现了故障的自动转移,当Kafka集群中某个Broker失效时仍然能保证服务可用。

Consumer使用拉模式从服务端拉取消息,并且保存消费的具体位置,当消费者宕机后恢复上线时可以根据之前保存的消费位置重新拉取需要的消息进行消费,这样就不会造成消息丢失。

在Kafka中,分区中的所有副本统称为AR。所有与Leader副本保持一定程度同步的副本(包括Leader副本在内)组成ISR,ISR集合是AR集合中的一个子集。消息会先发送到Leader副本,然后Follower副本才能从Leader副本中拉取消息进行同步,同步期间内Follower副本相当于Leader副本而言会有一定程度的滞后。与Leader副本同步滞后过多的副本(不包括Leader副本)组成OSR,AR=ISR+OSR,在正常情况下,所有的Follower副本都应该与Leader副本保持一定程度的同步,即AR=ISR,OSR集合为空。

Leader副本负责维护和跟踪ISR集合中所有Follower副本的滞后状态,当Follower副本落后太多或失效时,Leader副本会把它从ISR集合中剔除。如果OSR集合中有Follower副本追上了Leader副本,那么Leader副本会把它从OSR集合转移至ISR集合。默认情况下,当Leader副本发生故障时,只有在ISR集合中的副本才有资格被选举为新的Leader,而在OSR集合中的副本则没有任何机会

HW(High Watermark):俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取这个offset之前的消息

LEO(Log End Offset):它标识当前日志文件中下一条待写入消息的offset。

参考

1、Kafka基本概念、集群搭建、生产者与消费者
2、【尚硅谷】2022版Kafka3.x教程(从入门到调优,深入全面)

相关内容

热门资讯

【看表情包学Linux】进程地...   🤣 爆笑教程 👉 《看表情包学Linux》👈 猛...
吉字五行及吉凶 吉字五行中代表... 五行解析在文化中,五行是非常重要的概念之一,在这里解析一下五行对于人们生活的影响。首先,金属代表的是...
月老姻缘灵签内容详解大全 月老... 月老灵签 姻缘签44签 求解签君尔目下之人。本是可心满意足之人。焉知后来之人。一个比一个更美好。就此...
六爻排盘蛇 六爻排盘预测绝招 ... 六爻排盘结果怎么看纳甲六爻在线排盘姓名:出生年:1981性别:男占事:起卦方式:手动摇卦公历时间:2...
吉凶由情绪决定 每日吉凶 每月... 情绪的力量情绪是我们生活中一个重要的组成部分。我们每天都会通过不同的方式感受到情绪的存在,而情绪的质...
吉凶悔吝的解释是什么 风水形势... 吉凶悔吝的解释是什么从古至今,人们对于吉凶悔吝都有着不同的看法。所谓吉,是指好的运气,让人们沾沾自喜...
如何看每日生肖运势 每日生肖运... 背景说明每个人都希望自己的运势越来越好,而对于人来说,生肖运势是一个参考价值很高的判断标准。按照传统...
最准观音灵签21签解签 观音灵... 观音灵签21签解签-遵医嘱,健康长寿观音精神签证是中国民间宗教信仰的重要形式,也是一种广泛流传的祈祷...
梦见红裤子被水冲走 梦见河里洗... 梦见红裤子被水冲走红裤子是一种比较鲜艳的颜色,在梦中出现可能代表着某种情绪或状态。而被水冲走则更加具...
十二星座对象配对 12星座最佳... 12星座配偶标准白羊座:温柔善良的人乐观单纯的白羊座在恋爱时喜欢另一半无条件的宠爱自己,另一半对自己...
带水又带土的名字女孩名字有哪些... 含水和土的字有哪些含水的字:淦、澜、浸、泼、滴、没、汪、沸、鸿、沔、浩、渣、溢、潺江、注、漭、淬、澧...
六爻失物卦 在线占卜失物 六爻... 六爻占卜 寻找失物公历起卦时间:2012年12月24日9时44分(按公历时间起卦)农历:仁辰年十一月...
天网今日生肖运势 每日特吉生肖... 天网今日生肖运势天网今日,十二生肖依旧是重要的关键词之一。根据传统文化和民间信仰,每个人都属于一个生...
六爻代表书籍 六爻预测好的书籍... 学六爻的书籍那些比较经典,最好适合初学者的。从古至今六爻类的书流传于世的非常少,六爻类最经典的几本书...
十二星座女生专属花卉 小葩画1... 狮子座的女生喜欢什么样的花1.狮子座的女生喜欢鲜艳、华丽、高贵的花。2.狮子座的女生通常有着自信、热...
客厅风水禁忌及化解 客厅推拉门... 客厅风水禁忌及解决方案客厅是家庭中最重要的空间之一,也是最容易受到风水影响的空间之一。在客厅里,我们...
吉凶参半牛兔在含义 牛兔相冲到... 吉凶参半牛兔在啥意思吉凶参半牛兔在是指属牛的和属兔的结婚以后生活吉凶各一半。丑牛与子鼠六合,因此最宜...
各生肖属相的车牌号码吉凶对照表... 十二生肖与车牌号的佳搭配 十二生肖车牌号吉凶对照表通常每个人的黄道十二宫都会影响车牌号码的运行模式,...
客厅西部尖角的风水 客厅有棱角... 客厅西南角最好的风水是什么?客厅西南角最好的风水是什么?客厅西南角最好的风水是什么?房子的方形风水是...
带昶字的女孩名字 带滢的女孩名... 长字命名的寓意及意义长字命名的寓意和意义是正直、坚强、努力、阳光、前途似景、忠诚。长是一个通用词。长...
六壬怎么算命 六壬掐指神算金口... 什么是六仁?刘仁是中国古代的算命方法,起源于汉代,是中国道教学派的经典之一。刘仁包括六个神:天乙、天...
四月二十九生肖运势 十二生肖鸡... 女1993农历四月二十九早上十点生辰八字是什么如何出生时间:公历 1993年 6月 18日 10点本...
带心字的游戏女孩名字大全集 游... 2020男孩怎么起名有内涵 带心字的男孩名字大全心繁体:心起名五行:金姓名学笔画:4画简体笔画:4画...
八字鬼谷子算命 鬼谷子精髓50... 什么是八字鬼谷子算命?八字鬼谷子算命,又称李静算命,是中国传统的民间算命方式。八字鬼谷子算命起源于六...
十二星座下个月的运势女生 十二... 白羊座下个月的运势女生白羊座女生本身就充满了无限活力和热情,下个月的运势也不会让你失望。职业上可能会...
号令天下手机吉凶预测 号令天下... 手机号怎么算吉凶?用最后四个手机号码除以80,然后减去整数部分(只留小数),再乘以80,就会得到一个...
命理十二生肖今年运势 明天运势... 命理十二生肖今年运势今年每年都有不同的转瞬即逝的岁月。对于不同的黄道十二宫来说,它每年都有自己独特的...
八字长生好吗 八字中帝旺到长生... 八字日坐长生一定富吗丁火曰元生于未月,余气通根,年支丙火也能助身,但于上两透旺食,生财耗身过甚,故命...
带日的名字女孩名字大全 起名带... 日字旁边的女孩名字大全日字旁边的女孩名字推荐1、诗晗、慧曦、Xi、仲晴2、小芸、小娟、会晴、若昕、敏...
号令天下固话号码测吉凶 查电话... 周易81测手机号码吉凶,号令天下手机号码测吉凶提起周易81测手机号码吉凶,大家都知道,有人问天下手机...