kafka2.x常用命令:创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费

原创/朱季谦

接触kafka开发已经两年多,也看过关于kafka的一些书,但一直没有怎么对它做总结,借着最近正好在看《Apache Kafka实战》一书,同时自己又搭建了三台kafka服务器,正好可以做一些总结记录。

本文主要是记录如何在kafka集群服务器上创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费,算是最基础的操作了,当然,不同版本其实指令是有所差异的,本文只针对kafka 2.x版本。虽然这些指令都很简单,但久不用了,很容易就会忘记,所谓好记性不如烂笔头,记录下来会更好。

主要写给一些刚接触kafka的小白,大神请自行绕路。

最后,推荐两本写kafka的书,我觉得挺不错的,一本是关于原理的《深入理解kafka:核心设计与实践原理》,一本就是我现在在看的,比较偏实际开发工作的《Apache Kafka实战》。这两本我觉得比较容易看懂,当然,我是先看的第一本,当时记录了一堆笔记,笔记目前放在我的GitHub上:GitHub - z924931408/Learning-Notes-document: 本仓库用于存储个人学习笔记。

image

我会一步一步记录,从简到原理。

1、创建一个名为test-topic的topic,该topic有3个分区,每个分区分配3个副本——

./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --create --topic test-topic --partitions 3 --replication-factor 3

创建成功时,会提示:Created topic test-topic.

2、查看kafka集群已有topic列表——

./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 -list

查询情况会显示出所有的topic名——

image

3、查看topic的分区与备份详细情况——

./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --describe --topic test-topic

例如,我在虚拟机上查看如下

image

PartitionCount:表示总共有3个分区;

ReplicationFactor:表示每个分区有3个副本备份;

该kafka集群分布部署在三台机器上,三个节点的id分别为0,1,2。截图当中,显示有0,1,2的字样,即分别代表了三台节点服务器,说明该test-topic三个分区各自均匀分配在三台机器上,分区的leader副本与三个follower副本同样均匀在三台机器上,这能起到防止数据丢失的作用。

最后,还有一个ISR,该参数全称,in-sync replica,它维护了一个集合,例如截图里的2,0,1,代表2,0,1副本保存的消息日志与leader 副本是保持一致的,只有保持一致的副本(包括所有副本),才会被维护在ISR集合里,当出现一定程度的不同步时,就会将该对应已经不一致的副本移出ISR集合,但是,这种移出并非永久的,一旦被移出的副本慢慢又恢复与leader一样时,那么,又会被加回isr集合当中。注意一点,只有在这个ISR里的副本服务器,才能在leader出现问题时有机会被选举为新的leader。

4、删除topic——

./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 --delete --topic test-topic

执行该语句后,会显示以下信息——

Topic test-topic is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

翻译过来,就是说,主题test-topic标记为删除,但如果delete.topic.enable未设置为true,这将没有影响。

也就是说,如果delete.topic.enable未设置为true,即使执行了该语句,但也不会被删除,只会被标记一个删除状态而已,该delete.topic.enable参数在1.0.0版本后都是默认true,可以通过./kafka-topics.sh --zookeeper zk1:2181,zk2:2181,zk3:2181 -list指令查看,发现确实已经被删除了,当删除topic时,会将topic分区及备份所有数据都删除完,注意一点,这种删除是异步的。

5、验证集群消息发送与消费

kafka默认提供了两个脚本:kafka-console-producer.sh与kafka-console-consumer.sh。

可以直接使用这两个脚本验证集群是否能正常发送消息与消费消息。

image

开启一个生产者——

 ./kafka-console-producer.sh --broker-list kafka1:9092, kafka2:9092, kafka3:9092 --topic test-topic2

在其他两台机器上分别开启两个消费者——

 ./kafka-console-consumer.sh --bootstrap-server  kafka1:9092, kafka2:9092, kafka3:9092 --topic test-topic2 --from-beginning

大概效果如下——

生产者:

image

消费者:

image

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

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

相关文章

Spring --- 创建一个Spring项目

文章目录 创建一个Maven项目添加Spring框架支持添加启动类 创建一个Maven项目 注:我们需要使用 Maven 来管理依赖,所以需要创建一个Maven项目 添加Spring框架支持 注: 添加这两个依赖才能正确使用 Spring在添加依赖后记得刷新,把依…

windows安装 evo

1、widows先下载安装python 下载 ,安装,设置系统环境变量 2、windows下安装pip 下载 ,安装,设置系统环境变量 3、安装evo 二进制安装

【Nginx篇】Nginx轻松上手

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【运维】nginx中root和alias区别和作用是啥

文章目录 前言1、root指令2、alias指令总结: 前言 nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释location后面的…

Unity2D-URP基于ShaderGraph创建带粒子特效的激光光束

文章目录 创建Shader新建Node: UV新建Node: Split......参数说明 基于Shader创建Material创建Line创建粒子系统StartVFX创建粒子材质更改粒子系统的材质设置透明模式设置粒子效果创建一个Beam设置EndVFX效果预览激光光束管理脚本最终预览 创建Shader Create --> Shader Gra…

零信任、SASE还在因不标准的身份系统难对接而无法发挥真正力量?这份标准化的解决方案助您一臂之力

身份安全是网络安全的一个重要领域,旨在确保用户的身份安全可信,防止未经授权的访问和数据泄漏等问题。目前主流的信息安全趋势强调可持续验证、多源信任评估、动态防护、可持续数据防护、一体化安全审计等,特别是零信任、SASE等技术均以身份…

macOS/Ubuntu - ftp 工具

文章目录 Ubuntu - FilezillamacOS - Termius Ubuntu - Filezilla 安装 sudo apt-get install filezilla查看版本 filezilla --version启动 filezilla你也可以下载安装包: https://filezilla-project.org/download.php 解压 FileZilla_3.66.1_x86_64-linux-gnu…

vue elementUI 自定义框组织树,选择select下拉组织树横行滑动条出现方法

背景&#xff1a;最近公司开发需要使用到组织树进行组织结构的选择&#xff0c;在开发途中遇到两个次组织树已超过外框&#xff0c;但超出部分不显示横向滑动条。 自定义组织树框代码如下&#xff1a; <el-row><el-col :span"20" style"padding: 0px…

《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现

_23Threaded BinaryTree 可编译运行代码见&#xff1a;GIithub::Data-Structures-Algorithms-and-Applications/_24Threaded_BinaryTree 线索二叉树定义 在普通二叉树中&#xff0c;有很多nullptr指针被浪费了&#xff0c;可以将其利用起来。 首先我们要来看看这空指针有多少…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

Spring加载Bean的多种方式

文章目录 1. XML方式定义2. 使用Component ComponentScan3. 使用Configuration Bean4. 使用FactoryBean的方式加载bean5. Import方式6. Import ImportSelector7. Import ImportBeanDefinitionRegistrar8. 实现接口BeanDefinitionRegistryPostProcessor9. 实现接口BeanFacto…

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢&#xff1f; 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表&#xff0c;如果你不喜欢这种代码风格&#xff0c;建议你还是慢慢习惯吧…

MFC mysql 往数据库中写路径时,斜杠消失

写入时发现数据库中路径为&#xff1a; E:wokspacePROJECTThirdTrailInspectioncode_cttrmeasureBSVbinimage_guidipzjt-20231113145420_下行mdx-1-5_li339.44_1.jpg 因为转义字符的存在&#xff0c; 解决办法&#xff1a; MFC的在CString转string之前&#xff0c;将\\替换掉…

立即修复计算机显示msvcp110.dll丢失问题!4个快速解决方法大揭秘

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”。这个错误通常会导致某些程序无法正常运行&#xff0c;给用户带来诸多不便。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何进行修复呢&#xff1f;本文将…

搭建一个可以发送邮箱验证码的接口,内含前端处理 接口返回、请求处理

环境搭建 在node安装好的情况下&#xff08;一般vue环境有的node也有 没有可以使用winr回车输入node -v 有版本号则已经安装好 找一个空文件夹作为此项目文件夹 点击上面的地址栏输入cmd回车 输入npm init -y 再输入npm install nodemailer安装发送邮件的插件 环境配置 使用v…

oracle基础系统学习文章目录

oracle基础系统学习——点击标题可跳转对应文章 01.CentOS7静默安装oracle11g02.Oracle的启动过程03.从简单的sql开始04.Oracle的体系架构05.Oracle数据库对象06.Oracle数据备份与恢复07.用户和权限管理08.Oracle的表09.Oracle表的分区10.Oracle的同义词与序列11.Oracle的视图1…

vue3中toRef创建一个ref对象

为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的 区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响 应用: 当要将 某个prop 的 ref 传递给复合函数时&#xff0c;toRef 很有用 父组件代码: <template><…

搜索的剪枝

1.可行性剪枝:如果继续搜下去已经不能得到答案,就return 2.排除等效冗余:在搜索的几个分支中具有完全相同的效果时,选择其中一个走即可 3.最优性剪枝:如果题目要求是最大&#xff0c;最小之类的,没搜到一个解&#xff0c;和之前的解作对比&#xff0c;如果不如之前搜到的&…

js 深度学习(八)

原型及原型链 prototype是function对象的一个属性 它也是一个对象 prototype是定义构造函数构造出的每个对象的公共祖先 所以被该构造函数构造出来的对象 都可以继承原型上的属性和方法 自己有的属性不会去原型上找 方法写在原型上 属性写在构造函数内部 __proto__是实例化以后…

关于easy-es的聚合问题-已解决

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…