Kafka -基本概念

news2024/10/6 20:36:51

认识Kafka

kafka是一个多分区、多副本、基于zookeeper协调的分布式消息系统。

扮演角色

  • 消息系统
  • 存储系统:把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效降低了数据丢失的风险。
  • 流式处理平台

基本概念

kafka的体系结构:
在这里插入图片描述

Producer: 负责创建消息,然后将其投递到Kafka中
Consumer: 连接Kafka上并接收消息,进行相应的业务逻辑处理。
Broker: 服务代理节点,负责将收到的消息存储到磁盘中。一个Broker可以看做一个独立的Kafka服务节点。一个或者多个Broker组成了一个Kafka集群。
ZooKeeper: 用来负责Kafka集群元数据管理、控制器管理等操作。
主题: Kafka中的消息以主题作为单位进行归类,生产者将消息发送到特定的主题,消费者负责订阅主题进行消费。

特点

多分区

主题是一个逻辑上的概念,可以细分为多个分区,一个分区只属于单个主题
同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看成一个可追加写的日志文件
消息在被追加到日志文件都会带上一个offset标记,因此同一分区上的消息是有序的,但不同分区的消息不能保证顺序
分区可以分布在不同的Broker上,因此一个主题可以横跨多个Broker,以此来提供比单个broker更强大的能力。(如果是单个Broker,容易受到所在机器I/O的性能限制)

在这里插入图片描述

多副本

概念

Kafka为分区引入了多副本机制,同一分区的不同副本中保存的相同的消息。(某一时刻可能消息不完全一致)
副本之间是"一主多从"的关系,其中leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步。

好处:多副本机制实现了故障的自动转移,当Kafka集群中某个broker失效时候,仍保证服务可用。
在这里插入图片描述

副本集合分类

AR(Assigned Replicas): 所有的副本
ISR(In-Sync Replicas): 与leader副本保持一定程度同步的副本,包括leader在内
OSR(Out-of-Sync Replicas): 与leader副本同步之后过多的副本
AR = ISR + OSR
上面说的一定程度是指可忍受的范围内,该范围参数可以人工调节

leader副本负责维护和跟踪ISR集合中所有follower副本的滞后顺序,当follower副本落后太多或者失效时候,leader副本将其从ISR集合中剔除。
如果OSR集合中有follower副本追上了leader副本,则leader副本会把它从OSR集合中转移到ISR集合中。

Kafka分区副本的复制机制

HW:high watermark 高水位,标识了一个特定的offset,消费者只能消费HW之前的消息。
LEO:Log end offfset,标识当前日志文件中下一条待写入消息的offset
在这里插入图片描述

ISR集合中每个副本都会维护自身的LEO,ISR集合中最小的LEO即为分区的HW,即消费者只能消费该HW之前的消息。

复制图例:

  1. 消息3、4从生产者发出后,会先写入到leader副本
    在这里插入图片描述
  2. follower副本开始同步leader副本在这里插入图片描述
  3. follower同步较快,HW等于follower1与follower2的最小值,此时消费者只能消费到offset为4之前的消息
    在这里插入图片描述
  4. 所有节点都复制好了,HW重新更新
    在这里插入图片描述

这种复制方式的好处:

  • Kafka副本的复制机制,既不是完全的同步复制,又不是单纯的异步复制
  • 若为同步复制,需要等所有的follower都复制完,才认为这条消息是已成功提交的,这种方式会极大影响性能。
  • 若为异步复制,数据只要被leader副本写入就认为成功提交(没等follwer副本复制完全),这时候如果leader副本宕机,则会造成数据丢失。
  • Kafka这种复制方式均衡了数据可靠性和性能之间的关系。

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

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

相关文章

esp32-通过wifi使用timelib库同步时间(三)

库的安装 本文基于platformIO,安装较为简单如下图 实例代码 完整代码如下,如果时间获取超时请使用time1.aliyun.com获取时间。 /** Time_NTP.pde* Example showing time sync to NTP time source** This sketch uses the Ethernet library*/#include …

Ubuntu 20.04.06 PCL C++学习记录(二十一)【切记使用rm * -rf前先确认是否是对应文件夹】

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍:《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,,PCL版本为1.10.0,CMake版本为3.16,测试点云下载地址 学习内容 根据欧几里得距离和需要保持的用户可自定义条件对点进…

5GNR刷题

5G帧结构 5G NR帧结构的基本时间单位是( C ) A) subframe B) slot C) Tc D) symbol 5G无线帧长是多少ms(B) A) 5 B) 10 C) 20 D) 40 下面哪种子载波间隔是中国移动白皮书中规定必选(B ) A) 15KHz B) 30KHz C) 60KHz D) 120KHz 5G参数集包含哪…

ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现

摘 要 通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分,Lucene是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net平台上用C#开发的,数据库是MSSQL Server 2000。主要完成的功能有:用爬虫抓取网页;获取有效…

什么是JAVA面向对象

一,什么是面向对象: 我们以前的项目都是面向过程的,一个完整的项目所有的代码都写在一个类里 这就叫面向过程。 面向对象,是指在写大型项目时,多人分工合作,为了代码看上去简洁美观,会将不同的…

常见的垃圾回收算法

文章目录 1. 标记清除算法2. 复制算法3. 标记整理算法4. 分代垃圾回收算法 1. 标记清除算法 核心思想: 标记阶段,将所有存活的对象进行标记。Java中使用可达性分析算法,从GC Root开始通过引用链遍历出所有存活对象。清除阶段,从…

详解拷贝构造

拷贝构造的功能 写法: 拷贝构造函数的参数为什么是引用类型 系统自动生成的拷贝构造函数 拷贝构造的深拷贝与浅拷贝 概念 浅拷贝: 深拷贝 小结 拷贝构造的功能 拷贝构造函数可以把曾经实例化好的对象的数据拷贝给新创建的数据 ,可见…

书生·浦语大模型-第五节课笔记/作业

笔记 作业 原7b模型问题耗时: 4.5s lmdeploy推理耗时: 0.43s 不知道是否因为没有正确的输出 lmdeploy kv-cache推理耗时:2.9s 推理时新增 past_key_values 参数,该参数就会以追加方式保存每一轮的K V值。kvcache变量内容为((k,v), (k,v), …, (k,v))…

Node.js 中的 RSA 加密、解密、签名与验证详解

引言 在现代的网络通信中,数据安全显得尤为重要。RSA加密算法因其非对称的特性,广泛应用于数据的加密、解密、签名和验证等安全领域。本文将详细介绍RSA算法的基本原理,并结合Node.js环境,展示如何使用内置的crypto模块和第三方库…

【python】python抓取古诗文内容保存(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

下载了恶意软件怎么办,用这个软件可以解决 Mac电脑卸载软件 MacBook查杀病毒

随着苹果电脑在全球市场的普及,它们也日益成为恶意软件制作者的目标。这种趋势打破了许多人认为Mac系统不易受到病毒或恶意软件影响的传统观念。事实上,苹果电脑面临的恶意软件和安全威胁正在不断增多,这要求用户采取更加积极的措施来保护自己…

activiti初次学习

源代码地址:https://gitee.com/ZSXYX/activiti.git​ 1、安装插件 首先安装下图所示activiti,不确定是哪个插件有用的,有时间可排除下 在resources下创建一个文件夹:processes,右键,新建 生成: 选中act.bpmn20.xm…

TCHouse-C

一.概括 1.地域(Region) 地域(Region)指腾讯云数据仓库 TCHouse-C 物理服务器所在的地理区域。腾讯云不同地域之间网络完全隔离,购买后不能更换。(地域一旦选定,购买后无法更改。)…

L3 【哈工大_操作系统】操作系统启动

本节要点: 1、理解 OS 启动过程发生了什么,理解 OS 与 硬件 与 应用 之间的关系 2、本节讲解了 setup 模块 和 system 模块实现的功能 1、计算机上电时,操作系统在硬盘(磁盘)上,为了“取指执行”&#xff0…

IO流基本流

目录 什么是IO流 IO流的体系 字节流 FileOutputStream FileInputStream 字符集 字符流 FileReader FileWriter 字节流和字符流的使用场景 什么是IO流 内存不能永久化存储,程序停止,数据丢失,所以要添加一个存档功能,存储到硬盘的文件,我们要知道文件在哪里和如何传…

Jmeter配置服务器监控插件

1.安装插件管理器 插件官网地址:JMeter Plugins :: JMeter-Plugins.org 点击 Plugins Manager,如上图所示, ,点击jar file下载“plugins-manager.jar”,下载后放到“jmeter\lib\ext”目录下,重启jmeter。 2.安装资源…

静电场中的导体与介质

静电场可能分布于填充了各种媒质的区域。虽然媒质宏观上保持电中性,但其内部的各种微观带电系统不可避免地会与静电场相互作用。 一般而言,媒质可分为三类:导体、介质(绝缘体)和半导体。在静电场中半导体特性与导体类似,因此仅就…

C# Window form 自定义控件的结构和设计(三)

C# Window form 自定义控件的结构和设计(三) 一、前面介绍了如何来创建第一个自定义的控件,以及一个测试程序。下面我们来看下如何在自定义控件中添加属性。 C#和其他.NET语言支持属性作为语言的第一类成员。把属性作为语言的基础属性有两点主要的有点&#xff1a…

Node.js 并发控制

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使得 JavaScript 可以脱离浏览器在服务器端运行。由于 Node.js 采用单线程异步非阻塞 I/O 模型,它的并发处理能力也是非常强大的。本文将详细介绍 Node.js 的并发原理、概念、图解、解决方案…

洛谷-P2089 烤鸡

P2089 烤鸡 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std; const int N30; //const int M1e3*310; const int Mpow(3,10); int n; int arr[N]; //存临时方案 int res; //存方案数 int ans[M][N]; //存所有方案//x表示当前到…