Kafka 核心属性速览

目录

1. 背景    

2. Kafka的核心属性

2.1. Broker

2.2. Partitions

2.3. Replicas

3. 实践

4. 参考


1. 背景    

        Kafka是一个流行队列组件(在AWS上叫MSK),其他的队列还有rocketMQ、rabbitMQ。就我个人而言,我只是一个使用者(调包侠),很多技术细节我记不住,尤其是这几个MQ有什么优势和缺点,只能尴尬一笑。所以快速记录一下kafka的核心属性,方便查阅。

2. Kafka的核心属性

2.1. Broker

        Broker是Kafka中的一个服务器实例,包含了一些消息和数据。Broker用来存储收到的消息,并处理消费者和生产者的请求。Kafka集群通常由多个Broker组成。

图2.1-1 Broker和Topic

2.2. Partitions

        在Kafka中,每个topic被分割成一个或多个分区(partition),每个分区都是一个有序的消息队列。生产者可以对一个topic的多个分区同时进行写操作,消费者也可以对多个分区进行读操作,使得系统的吞吐量得到提升。

图2.2-1 Partitions=3,一个Topic被分成3个部分

2.3. Replicas

        为了确保数据的可靠性和高可用性,Kafka会对每一个分区(partition)进行备份,每个分区有一个或多个副本(replica)。这些副本分布在不同的Broker上,其中一个副本作为主副本(leader),接收所有的读写请求,其他副本为备份副本(follower),只负责复制主副本中的数据。

        总的来说,Broker是Kafka的基本组成单位,其中存储了topic的数据,每个topic又被分成一个或多个分区,为了使数据不丢失,每个分区会在不同的Broker上保存副本,这就是数据的复制机制。

图2.3-1 Partitions=3,Replicas=3. 每个部分有3个副本,以作主备

3. 实践

       我们可以使用流行的开源Kafka portal UI工具,在创建Topic界面(如图-3),我们可以看到如下图的每一个属性。

图-3 Kafka新建Topic的属性设置

Broker:集群配置,由Kafka服务提供时就需要决定,至于配置者,由服务提供商设置,当然,这取决于使用者的需求和预算。

Topic Name:必填项,定义这个Topic的名字,Topic名字是区分不同业务的重要凭证。

Number of partitions:对应核心属性Partitions。Kafka的topic由一个或多个分区组成,这个数值表示你希望为当前topic创建的分区数量。每个分区都是消息的有序且不可变的序列,这些消息连续的写入分区并被赋予一个连续的id号,称为offset。

Cleanup policy:控制了Kafka如何处理日志。具体来说,这涉及到Kafka如何管理存储空间,包括删除旧消息以释放空间。有两种可用的清理策略,分别是 "delete" 和 "compact"。

  • delete

        这是默认策略,当日志达到一定的大小或者一段时间后(根据你的配置设定),旧的记录会被删除,以释放空间。这个策略对于那些只对近期数据感兴趣的用例来说非常有用。

  • compact

        这个策略会保留最近的每一个唯一键的记录,换句话说,对于具有相同键的记录,只有最近的记录会被保留。这个策略对于那些希望保留所有状态更新的用例来说是有用的,例如在流处理中的状态存储。

        你可以在创建主题的时候选择清理策略,在创建之后也可以通过修改配置来改变策略。

Replication Factor

        复制因子,对应核心属性Replicas。是一个设置项,用来指定我们希望为每一个 partition 创建多少个副本。举个例子,如果我们设置 Replication Factor 为 3,那么每当生产者向 Kafka 发送一条消息时,Kafka 会在 3 个 broker 上分别存储这条消息的副本。这样,即使有 1 或者 2 个 broker 宕机,我们仍然可以从剩余的 broker 上获取这条消息。

        当然,这个 "Replication Factor" 的设定需要考虑实际情况。比如说,如果我们的 Kafka 集群只有两个 broker,那么 replication factor 的值设定就不能超过 2,因为没有足够的 broker 来存储更多的副本。同样,如果我们的 Kafka 集群 broker 非常多,例如有 10 台,那么我们可能就不需要把 replication factor 设得太大,如设为 10,因为这会增加 Kafka 的存储负担和网络传输压力,而且大多数场景下,10 台 broker 不会同时宕机,可以适当降低这个值。

Min In Sync Replicas

        此值是关于数据可用性和持久性的设置。它定义了Producer在认为写操作成功前需要等待多少个副本在同步状态,即已经接收到写操作。例如,如果你将其设置为2,那在一个写操作完成并返回ACK成功之前,至少需要有两个副本(包括Leader本身)将数据写入。

        使用一个现实世界的比喻来理解的话,可以将"Replication Factor"想象成你家有多少把钥匙,而"Min In Sync Replicas"则是在你离家时,你希望至少有几把钥匙放在安全的地方。所以,虽然这两个设置都涉及到副本,但它们关注的是不同的方面并起到各自的作用。

Time to retain data (in ms)

        这个设置项决定了每一条消息在Kafka中被保存的时间。超过这个时间,消息将会被清理掉以释放空间。单位是毫秒。例如,如果你设置的是86400000毫秒,那么数据会被保存24小时。

Max size on disk in GB

        这个设置项决定了一个topic能占用的磁盘空间的大小。如果一个topic的大小超过了这个设置,那么Kafka会开始删除这个topic的旧消息,直到其大小低于设置的最大值。单位是GB。

Maximum message size in bytes

        这个设置项限制了Kafka接收的单条消息的最大大小。如果生产者试图发送大于这个设置值的消息,那么消息将不会被接收。单位是字节。这个设置需要根据你的使用场景来进行调整。如果你的应用需要发送较大的消息,那么你可能需要调高这个值。

4. 参考

ChatGPT

https://www.cnblogs.com/sujing/p/10960832.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图文详解JUC:Wait与Sleep的区别与细节

目录 一.Wait() 二.Sleep() 三.总结Wait()与Sleep()的区别 一.Wait() 在Java中,wait() 方法是 Object类中的一个方法,用于线程间的协作。当一个线程调用wait() 方法时,它会释放对象的锁并进入等待状态,直到其他线程调用相同对…

Ps 滤镜:素描

Ps菜单:滤镜/滤镜库/素描 Filter/Filter Gallery/Sketch “素描”滤镜组中的滤镜可以将纹理添加到图像上,还适用于创建美术或手绘外观。许多“素描”滤镜在重绘图像时使用前景色和背景色。 半调图案 Halftone Pattern “半调图案”滤镜通过创建一种特定图…

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【069】基于SpringBoot+Vue实现的企业资产管理系统

系统介绍 基于SpringBootVue实现的企业资产管理系统管理员功能有个人中心,用户管理,资产分类管理,资产信息管理,资产借出管理,资产归还管理,资产维修管理。用户可以对资产进行借出和归还操作。因而具有一定…

详解lighthouse通过命令行方式运行并生成html测试报告的方法

lighthouse可以通过命令行的方式运行并生成html报告,我们可以通过lighthouse --help 命令查看命令行的详细用法,在这里我仅列出最常用的命令行使用方法! 常用lighthouse命令行参数详解 * --chrome-flags:传递自定义标志给Chrome…

动态el-form表单以及动态禁用

当右侧下拉框选中为 长期有效,那么左侧输入框为禁用状态; <el-form-item label"证明有效期" class"is-required"><div v-for"(item,index) in form.arrayDat" :key"index" style"width: 100%;display: flex;justify-co…

记录一期Typecho WebShell木马渗透的经历

我创建了一个Typecho的轻量博客,之前一直是本地运行,最近才上了公网,平时自己也是粗心大意,把密码也写在第一篇博文里面 有一天,我突发奇想的想要提交更新,本博客是通过git进行代码版本管理的避免自己修改官方源码出现了问题,无法还原,也定时备份SQL, 然后莫名其妙的发现多了…

html--地图

<!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><title>ECharts</title><!--Step:1 引入一个模块加载器&#xff0c;如esl.js或者require.js--><script src"js/esl.js"></scr…

【Doris的安装与部署】

1 集群规划和环境准备 Doris作为一款MPP架构的OLAP数据库&#xff0c;可以在绝大多数主流的商用服务器上运行。 1.1 环境要求 一般推荐使用Linux系统&#xff0c;版本要求是CentOS 7.1及以上或者Ubuntu 16.04及以上&#xff0c;这也是目前服务器市场最主流的操作系统。 操作…

3月份太阳镜行业线上市场销售数据分析

在消费者行为方面&#xff0c;太阳镜不仅仅是视力保护工具&#xff0c;更逐渐成为一种时尚单品。随着人们对健康和美容重视程度的提高&#xff0c;太阳镜作为体现个人风格的单品&#xff0c;其市场需求得到了进一步的推动。此外&#xff0c;全球旅行和旅游业的恢复&#xff0c;…

小程序|手写签名功能如何开启?

老师们可以利用易查分的手写签名功能&#xff0c;在发布查询后&#xff0c;让学生或家长签字确认知晓。下面教大家如何使用吧。 &#x1f4cc;使用教程 &#x1f50e;在哪里开启手写签名&#xff1f; 按照正常流程创建查询后&#xff0c;在查询管理页找到需要开启签名功能的查…

python实现读取串口数据-使用LibModbus库实现一个实时读取串口数据

在工业自动化领域&#xff0c;Modbus协议因其简单、可靠和广泛支持而备受青睐。其中&#xff0c;Modbus RTU&#xff08;串行通信&#xff09;以其低成本和易实施性在许多场景中发挥着重要作用。 01 Modbus RTU协议简介 Modbus RTU是一种基于串行通信的Modbus协议&#xff0c;…

SQL——SERVER的建表主要操作

目录 一&#xff1a;数据存储问题 1.表的相关数据 2.表&#xff0c;字段&#xff0c;记录 二&#xff1a;建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一&#xff1a;数据存储问题 1.表的概念 表是数据库的基本单位&#xff…

运维别卷系列 - 云原生监控平台 之 03.prometheus label 实践

文章目录 [toc]label 简介自定义标签relabel_configsregexrelabel_action metric_relabel_configs两者的区别 实践 label 简介 label 对于 Prometheus 来说&#xff0c;属于数据处理的方式&#xff0c;Prometheus 是通过指定的 label 来查询数据 Prometheus 的 target 中实例&…

elasticsearch-head 源码运行

1、下载安装nodejs 地址&#xff1a;Node.js — Run JavaScript Everywhere 2、git下载 elasticsearch-head 源码 地址&#xff1a;GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster 3、使用cmd 进入 elasticsearch-head 目录 4、依次执…

代码随想录算法训练营Day 42| 动态规划part04 | 01背包问题理论基础I、01背包问题理论基础II、416. 分割等和子集

代码随想录算法训练营Day 42| 动态规划part04 | 01背包问题理论基础I、01背包问题理论基础II、416. 分割等和子集 文章目录 代码随想录算法训练营Day 42| 动态规划part04 | 01背包问题理论基础I、01背包问题理论基础II、416. 分割等和子集01背包问题理论基础一、01背包问题二、…

Redis-如何保证与Mysql数据一致性

文章目录 Redis与Mysql数据一致性的情况有哪些&#xff1f;Redis与Mysql数据保持一致性的方案&#xff1f;同步双写机制删除缓存重新加载机制延迟双删机制利用MQ保持数据一致性 本篇小结 更多相关内容可查看 Redis与Mysql数据一致性的情况有哪些&#xff1f; Redis和MySQL是两…

Dart 3.4 发布:Wasm Native Macros(宏)

Google I/O 的结束&#xff0c;除了 Flutter 3.22 的发布 &#xff0c;Dart 3.4 也迎来了它是「史诗级」的更新&#xff0c;之所以这么说&#xff0c;就是因为 Wasm Native 的落地和 Macros 的实验性展示。 在此之前&#xff0c;其实我也提前整理过一些对应的内容&#xff0c;…

Web课外练习7

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>照片墙</title><style>body {display: …

基于物联网、大数据的企业智能设备管理系统的实践解读

随着物联网、大数据的迅速发展&#xff0c;智能化设备管理系统已经渗透到我们工作的方方面面。然而&#xff0c;传统企业设备管理也迈入智能化、无纸化的管理趋势。因此&#xff0c;智能设备管理系统有了很大的应用需求&#xff0c;智能设备管理系统以数字化技术&#xff0c;为…