大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka (正在更新…)

章节内容

上节我们完成的内容:

  • 生产消费结构
  • Kafka 基本概念介绍
  • Kafka 消费模式
  • Kafka 核心API 介绍
  • Kafka 优势
  • Kafka 基本架构

在这里插入图片描述

核心概念

Producer

生产者创建消息。
该角色将消息发布到Kafka的Topic中,Broker接收到生产者的消息之后,Broker将消息追加到当前的 segment 文件中。
一般情况下,一个消息会被发布到一个特定的主题上:

  • 默认情况下通过轮询把消息均衡的发布到主题的所有分区上
  • 在某些情况下,生产者会把消息直接写到指定的分区,这通常是通过消息键和分区器来实现的,分区器为键的一个散列值,并将其映射到指定的分区上。这样可以保证同一个键的消息会被写到同一个分区上。
  • 生产者也可以使用自定义分区器,根据不同的业务规则将消息映射到分区。

Consumer

消费者读取消息

  • 消费者订阅一个或者多个主题,并按照消息生成顺序读取它们
  • 消费者通过检查消息偏移量来区分已经读过的消息,偏移量是另一种元数据,它是一个不断递增的整数值,在创建消息时,Kafka会把它添加到消息里。在给定的分区里,每个消息的偏移量都是唯一的。消费者把每个分区最后读取的消息偏移量保存在ZooKeeper或Kafka上。
  • 消费者是消费组的一部分,群组保证每个分区只能被同一个消费者使用。
  • 如果一个消费者失效,消费组里的其他消费者可以接管失效消费者的工作,再平衡,分区重新消费。
    在这里插入图片描述

Broker

一个独立的Kafka服务器称为Broker

  • 如果某Topic有N个Partition,集群有N个Broker,每个Broker存储该Topic的一个Partition
  • 如果某Topic有N个Partition,集群有(N+M)个Broker,那么其中有N个Broker存储该Topic的一个Partition
  • 如果某Topic有N个Partition,集群中Broker数目少于N个,那么一个Broker存储该Topic的一个或多个Partition。在实际的生产环境中,尽量避免这种情况的发生,这种情况很容易导致Kafka集群数据不平衡。

在这里插入图片描述

Topic

每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
物理上不同的Topic的消息分开存储
主题就好比数据库的表,尤其是分库分表之后的逻辑表。

Partition

  • 主题可以被分为若干个分区,一个分区就是一个提交日志
  • 消息以追加的方式写入分区,然后以先入先出的顺序读取
  • 无法在整个主题范围内保证消息的有序,但可以保证消息在单个分区内的顺序
  • Kafka通过分区来实现数据冗余和伸缩性
  • 在需要严格保证消息的顺序的场景下,需要将Partition数目设置为1

在这里插入图片描述

Replicas

Kafka使用主题来组织数据,每个主题被分为若干个分区,每个分区有多个副本,那些副本被保存在Broker上,每个Broker可以保存成百上千属于不同主题和分区的副本。
副本有以下的两种类型:

  • 首领副本:每个分区都有一个首领副本,为了保证一致性,所有生产者请求和消费者请求都会经过这个副本。
  • 跟随者副本:首领以外的副本都是跟随副本,跟随者副本不处理来自客户端的请求,它们唯一的任务就是从首领那里复制消息,保持与首领一致的状态。如果首领发生奔溃,其中一个跟随者就会被提升为新首领。

Offset

生产者

消息写入的时候,每一个分区都有一个Offset,这个Offset就是生产者的Offset,同时也是这个分区的最新最大的Offset。
有些时候没有指定某一个分区的Offset,这个工作Kafka帮我们完成。在这里插入图片描述

消费者

这是某个分区的Offset情况,生产者写入的Offset是最新最大值12,当ConsumerA进行消费时,从0开始消费,一直消费到9,消费者的Offset就记录9,ConsumerB就记录在11。
等下一次消费的时候,他们可以选择从上一次消费的位置消费,也可以从头开始消费。

在这里插入图片描述

副本

Kafka通过副本来保证高可用,副本分为:首领副本(Leader)和追随者副本(Follower)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战:Zookeeper 简介和单点部署ZooKeeper

Zookeeper 简介 ZooKeeper是一个开源的分布式协调服务,它是Apache软件基金会下的一个项目,旨在解决分布式系统中的协调和管理问题。以下是ZooKeeper的详细简介: 一、基本定义 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…

系统架构师考点--系统架构设计(下)

大家好。今天总结一下系统架构设计的最后一部分知识点。 一、软件系统的质量属性 软件系统的质量属性 软件系统的质量属性可分为开发期质量属性和运行期质量属性2个部分。 1、开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面: …

C++ 关键字与库函数 学习总结

sizeof与strlen 含义 sizeof:是一个操作符,用于计算数据类型或变量的大小(以字节为单位)。在编译时求值strlen: 是一个函数,用于计算字符串的长度(不包括终止符 \0)。在运行时求值不…

【Code】Street-Gaussian代码复现笔记

文章目录 1. EnvironmentBug 1 2. TrainingBug 2Bug 3 1. Environment Follow the original instructions, conda create --name street-gaussians-ns -y python3.8 conda activate street-gaussians-ns pip install --upgrade pippip install torch2.1.2cu118 torchvision0.…

深度解析程序员面试中的“八股文”:助力还是阻力?

深度解析程序员面试中的“八股文”:助力还是阻力? 引言 在如今的求职市场中,程序员面试中的“八股文”几乎成为了一种必考内容。所谓“八股文”,指的是一系列标准化的技术面试题目,这些题目涵盖了算法、数据结构、操…

杂记-镜像

-i https://pypi.tuna.tsinghua.edu.cn/simple 清华 pip intall 出现 error: subprocess-exited-with-error 错误的解决办法———————————pip install --upgrade pip setuptools57.5.0 ————————————————————————————————————…

bugku-web-ctf-变量1

<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET[args])){$args $_GET[args];if(!preg_match("/^\w$/",$args)){die("args error!");}eval("var_dump($$args);"); } ?> error_r…

setTimeout 和 setInterval

在JavaScript中&#xff0c;setTimeout 和 setInterval 是两个用于定时操作的函数&#xff0c;它们都定义在 window 对象上&#xff0c;并且是Web API的一部分。 setTimeout setTimeout 函数用于在指定的毫秒数后执行一个函数或一段代码。这个函数只执行一次。 语法&#xf…

扩展------正向代理和反向代理怎么理解?

今天看博客园&#xff0c;突然看到正向代理和反向代理&#xff0c;发现自己还不会就稍微研究了一下。 正向代理----(看做是服务员) 当我们进饭店吃饭&#xff0c;我们不可能会直接去后厨叫厨师给我们做菜&#xff0c;而是通过服务员去通知&#xff0c;这个就叫做正向代理。 再…

为什么请求频率高,就应该使用轮询而不是中断呢?

在某些情况下&#xff0c;如果请求频率很高&#xff0c;使用轮询&#xff08;Polling&#xff09;而不是中断&#xff08;Interrupts&#xff09;可能更合适。以下是一些原因&#xff1a; **减少中断处理开销**&#xff1a; - 每次中断发生时&#xff0c;都需要保存和恢复上…

当年很流行,现在已经淘汰的Java技术,请不要学了!【建议收藏】

在Java技术的发展历程中&#xff0c;确实有一些曾经流行但现在已经被淘汰或不再推荐使用的技术。了解这些技术可以帮助你避免学习过时的知识&#xff0c;从而更高效地提升自己的技能。 以下是一些曾经流行但现在已经不太推荐学习的Java技术&#xff1a; 1. Servlet 2.x&#x…

【二叉树】|代码随想录算法训练营第18天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、【总结】

刷题神器 代码随想录 往期回顾 >【二叉树】|代码随想录算法训练营第17天|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点 题目 669. 修剪二叉搜索树 题目&#xff1a;题目链接 文章&#xff1a;文章讲解 视频&#xff1a;视频讲…

架构师的36项修炼 学习笔记

架构师的36项修炼 学习笔记 分布式缓存 缓存特点 1.技术简单 2.性能提升明显 3.应用场景多 缓存数据存储 hash表 缓存的关键指标 命中率 缓存失效方式 超时失效 LLT 实时清除 代理缓存 反向代理缓存 多层反向代理缓存 内容分发网络CDN 通读缓存 包括代理缓存…

洛谷P1832 A+B Problem(再升级)题解

思路 先筛出范围内的所有质数&#xff08;埃式筛和欧拉筛都可以&#xff09;&#xff0c;再进行dp,要将dp[0]初始化为1. 状态转移方程 dp[j]dp[j-prime[i]]; 代码 #include<bits/stdc.h> #define endl \n; using namespace std; int n; const int N1e410; bool P[N]…

AI作图接口要怎么调用呢?

一、什么是AI作图&#xff1f; 基于AI大模型的深度学习算法和大规模的图像数据训练&#xff0c;输入图片和关键词&#xff0c;可生成独特及富有创意的山水风格图片。 二、AI作图使用场景有哪些呢&#xff1f; 1.广告与营销&#xff1a; 为产品制作吸引人的宣传海报、广告图片…

git拉完代码总是自动创建一个新的节点

git拉完代码&#xff0c;总是自动生成弹出这个信息 然后还会在git上面留下一个节点&#xff0c;这个节点没啥用&#xff0c;显示着感觉有点碍事。 而且后续的git push 之后&#xff0c;会覆盖掉自己的git commit 的提示&#xff0c;其他人cr代码的时候看到的是 解决方法&#…

vite + postcss 安装配置

安装 npm install postcss-pxtorem --save-dev配置postcss.config.js 新建 postcss.config.js export default {plugins: {postcss-pxtorem: {rootValue: 16, // 根元素大小&#xff0c;用于转换rem的基准值unitPrecision: 5, // rem的小数位数propList: [*], // 需要转换的…

A股两市继续低开,缩量震荡前行!

今天的A股&#xff0c;让人心情极度炸裂&#xff0c;你们知道是为什么吗&#xff1f;盘面上出现2个重要信号&#xff0c;一起来看看&#xff1a; 1、今天两市低开&#xff0c;让人心情极度炸裂。 2、盘面上出现2个重要信号&#xff1a;一是为了迎接今日上证权益指数问世&#x…

LeetCode刷题笔记第682题:棒球比赛

LeetCode刷题笔记第682题&#xff1a;棒球比赛 题目&#xff1a; 想法&#xff1a; 遍历输入的列表&#xff0c;按照规则将分数和操作依次进行&#xff0c;存储在新建的列表中&#xff0c;最终输出列表中的元素和&#xff0c;代码如下&#xff1a; class Solution:def calPo…

妈吖,看过这个大厂的oracle主键自增,我的信心暴增!信创,国产数据库也能行。

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” 1.数据库oracle自增主键字段思维导图 在Oracle数据库中&#xff0c;可以通过创建序列&#xff08;SEQUENCE&#xff09;来实现自增功能。但也可以不在数据库中实现&#xff0c;而是通过程…