当前位置: 首页 > news >正文

Kafka 的基本概念

一、Kafka 主要用来做什么

作为消息系统:Kafka 具备系统解藕,流量削峰,缓冲,异步通信,扩展性,可恢复性等功能,以及消息顺序性保障和回溯消费

作为存储系统:Kafka 把消息持久化到磁盘,相比较基于内存存储的系统,降低了数据丢失的风险,可以将数据保留策略设置为永久或启用主题的日志压缩功能即可,这里我也没有见到过实际的应用,留在这里暂时作为了解即可

作为流式处理平台:未来需要时再研究

二、Kafka 的基本概念

1 Producer,Broker 和 Consumer

Kafka 体系架构包括若干个 Producer, 若干个 Broker,若干个 Consumer,以及一个 Zookeeper 集群。

Producer 将消息发给 Broker,Broker 负责将收到的消息存储到硬盘,而 Consumer 负责从 Broker 订阅并消费消息。

Zookeeper 主要负责管理 Broker 集群。

我们常说的 Kafka 集群,其实就这其中的若干个 Broker 组成的集群

2 Topic 和 Partition
2.1 理解概念

其实个人感觉这里的理解可以类比 Mysql,Topic 就是这个表的结构,消息就是表里面的每一行数据,Partition 就是分表。

同一个 Topic,Producer 可以发多个消息,这么多个消息都存储在不同的 Partition 上,并且通过 offset 来进行标识(类似 Mysql 里的主键 ID),不过 offset 并不跨区,就相当于 Mysql 不同分表里的主键 ID 一样

每一条消息被发送到 broker 之前,会根据分区规则来选择存储在哪个具体的分区

1.Kafka 同一主题下的不同分区包含的消息是不同的

2.Kafka 的分区可以分布在不同的 broker 上,所以一个主题可以横跨多个 broker,解决了单机 IO瓶颈问题,通过修改分区的数量,还可以实现水平扩展

2.2 Partition 和 Replica

2.2.1  Kafka 的分区有多副本 Replica 机制,不同的副本处于不同的 broker 上,当 leader 出现故障时,从 follower 中重新选举出新的 leader 副本对外提供服务。通过增加副本的数量,可以提升容灾的能力。

虽然 leader 宕机之后,可以故障转移快速选举出一个新的 leader,但是宕机的时候写入 leader 的消息,如果还没来得及同步,消息也一样会丢失。

这个时候需要在业务系统里实现补偿重试的逻辑,比如添加 ack 等到全部同步之后才认为是成功,否则就进行重试,再次发送消息到 Kafka 中。

Producer 和 Consumer 只和 leader 副本进行交互,follower 副本只负责消息的同步。

若 Kafka 有 10 个分区,3个副本,总体一共有 30 个副本,其中包含 10 个 leader 副本和 20个 follower 副本。

Kafka 消费端也具备一定的容灾能力,Consumer 使用 Pull 模式从服务端拉取消息,并且保存消费的具体位置?当 Consumer 宕机后恢复上线可以根据之前保存的消费位置重新拉取需要的消息进行消费,这样就不会造成消息丢失 ?  -- Consumer 都宕机了,offset 保存在哪?

2.2.2  理解 ISR,OSR 和 AR

分区里的所有副本统称为 AR(Assigned Replicas)

  • 与 leader 保持同步副本叫 ISR (In-Sync Replicas),包含 leader
  • 与 leader 副本同步滞后过多的副本叫 OSR (Out-of-Sync Replicas),不包含 leader

leader 宕机之后只会从 ISR 集合中选择下一个 leader

2.2.3  理解 HW,LEO 和 SR 之间的关系

HW (High WaterMark)高水位,可消费消息的最后一位 + 1

LEO(Low End Offset), 已有的消息的最后一位 +1,也是当前即将要写入最新消息的位置

消费者只能消费 HW 之前的消息,之后的消息表示还没有同步完成

相关文章:

Kafka 的基本概念

一、Kafka 主要用来做什么 作为消息系统:Kafka 具备系统解藕,流量削峰,缓冲,异步通信,扩展性,可恢复性等功能,以及消息顺序性保障和回溯消费 作为存储系统:Kafka 把消息持久化到磁…...

《粮油与饲料科技》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《粮油与饲料科技》是不是核心期刊? 答:不是,是知网收录的第一批认定 学术期刊。 问:《粮油与饲料科技》级别? 答:省级。主管单位:中文天地出版传媒集团股份有限公司…...

Python之一些列表的练习题

1.比较和对比字符串、列表和元组。例如,它们可以容纳哪类内容以及在数据结构上可以做哪些操作。 1. 内容类型:- 字符串: 只能包含字符(文本)。- 列表: 可以包含任意类型的数据,如数字、字符串、其他列表等。- 元组: 可以包含任意类型的数据,与列表类似。3. 操作:(1…...

MoFA: 迈向AIOS

再一次向朋友们致以中秋的祝福! MoFA (Modular Framework for Agents)是一个独特的模块化AI智能体框架。MoFA以组合(Composition)的逻辑和编程(Programmable)的方法构建AI智能体。开发者通过模版的继承、编程、定制智能体&#xf…...

c语言中define使用方法

在C语言中,#define指令是预处理指令,用于定义宏。其常用格式是: 定义常量: #define 常量名 常量值 例子: #define PI 3.14159 #define MAX_SIZE 100 这里,PI和MAX_SIZE在代码中会被替换为其对应的值。没有…...

尚品汇-秒杀商品定时任务存入缓存、Redis发布订阅实现状态位(五十一)

目录: (1)秒杀业务分析 (2)搭建秒杀模块 (3)秒杀商品导入缓存 (4)redis发布与订阅实现 (1)秒杀业务分析 需求分析 所谓“秒杀”&#xff0…...

第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools

11.4 spring-boot-devtools 官网:https://docs.spring.io/spring-boot/reference/using/devtools.html Spring Boot DevTools 是 Spring Boot 提供的一组易于使用的工具,旨在加速开发和测试过程。它通过提供一系列实用的功能,如自动重启、实时属性更新、依赖项的热替换等,…...

MySQL篇(索引)(持续更新迭代)

目录 一、简介 二、有无索引情况 1. 无索引情况 2. 有索引情况 3. 优劣势 三、索引结构 1. 简介 2. 存储引擎对于索引结构的支持情况 3. 为什么InnoDB默认的索引结构是Btree而不是其它树 3.1. 二叉树(BinaryTree) 3.2. 红黑树(RB&a…...

通用接口开放平台设计与实现——(31)API服务线程安全问题确认与修复

背景 在本系列的前面一篇博客评论中,有小伙伴指出,API服务存在线程安全问题: https://blog.csdn.net/seawaving/article/details/122905199#comments_34477405 今天来确认下,线程是否安全?如不安全,如何…...

2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据+处理代码)

2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据处理代码) 1、时间:2011-2022年 2、来源:上市公司年报、华证ESG、北大数字普惠金融 3、指标:年份、股票代码、股票简称、行业名…...

mysql配置相关命令

一、允许所有人访问: -- 1.切换至mysql库 use mysql;-- 2.查看用户表 SELECT Host,User FROM user;-- 3.修改字段 UPDATE user SET Host % WHERE User root;-- 4.刷新权限 flush privileges;二、修改加密方式 -- 1.切换至mysql库 use mysql;-- 2.查看用户表 SELEC…...

【自用软件】IDM下载器 Internet Download Manager v6.42 Build 10

下载IDM&pj安装教程 Internet Download Manager,简称 IDM,是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍,安排下…...

Kafka集群扩容(新增一台kafka节点)

kafka集群扩容、kafka topic迁移 现有环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3 扩容之后环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3192.168.17.54ka…...

作文笔记15 点面结合

事件中场面写作方法:点面结合(对毛主席的描写和三十万群众的描写间插进行)。好处是强化描写的层次感,既有整体形象描写,又凸显人物个性特点。 景色描写方法:动态描写,静态描写,动静…...

Spring Boot-国际化(I18N)问题

Spring Boot 国际化(I18N)问题及其解决方案 1. 引言 随着全球化的推进,软件开发中的国际化(I18N)需求日益增长。国际化是指通过设计应用程序,使其能够轻松适应不同语言和地区的需求,而无需修改…...

8. 防火墙

8. 防火墙 (1) 防火墙的类型和结构 防火墙的类型和结构可以根据其在网络协议栈中的过滤层次和实现方式进行分类。常见的防火墙类型包括: 包过滤防火墙:工作在网络层(OSI模型的第3层),主要检查IP包头的信息,如源地址、目的地址、端口号等。电路级网关防火墙:工作在会话层…...

C语言循环学习

作为初学者,学习C语言中的循环结构是非常重要的,它们能让你轻松地重复执行代码。在C语言中,常用的循环结构主要有for循环和while循环。我们将从基本概念开始,逐步讲解如何使用这两种循环,并通过示例帮助你理解和练习。…...

职业技能大赛-自动化测试笔记(Unitest)分享-3

前言 UnitTest是Python标准库中的一个模块,用于编写和执行单元测试。它提供了一组断言方法,用于验证代码的输出和状态是否符合预期。通过UnitTest框架,我们可以编写可重复执行的测试用例,并使用命令行工具或IDE轻松运行这些测试。在大多数情况下,UnitTest框架已经包含在Py…...

rocky9.2的lvs的NAT模式下的基本使用的详细示例

文章目录 前言什么是LVS?(Linux Virtual Server)LVS的组成1. 负载均衡器(Load Balancer)2. 后端服务器池(Real Servers)3. IPVS(IP Virtual Server)4. 调度算法(Schedul…...

AI健身之俯卧撑计数和姿态矫正-角度估计

在本项目中,实现了Yolov7-Pose用于人体姿态估计。以下是如何在Windows 11操作系统上设置和运行该项目的详细步骤。 环境准备 首先,确保您的计算机已经安装了Anaconda。Anaconda是一个开源的Python发行版本,它包含了conda、Python以及众多科…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...