技术标签: 《Kafka入门到精通》 java kafka 分布式
在内卷严重的程序员圈子中,原地踏步就是退步,所以不能再躺平啦,赶紧爬起来学习,接下来博主将推出《Kafka入门到精通》系列文章,让你可以在企业中玩起Kafka来得心应手,此乃升职加薪必备呀。
Kafka 是由Linkedin公司开发的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,是一款基于发布订阅模式的开源消息引擎系统。相对于其他的消息组件来说Kafka拥有更好的吞吐量、内置分区、具有复制和容错的功能,这使它成为一个非常理想的大型消息处理应用。使用场景如:网页浏览记录,日志收集,监控数据等等。
Kafka 的标准定位是分布式流式处理平台,早期的定位是以消息引擎的身份出现的,随着 Kafka 的不断演进, Kafka 开发团队日益发现经 Kafka 交由下游数据处理平台做的事情 Kafka 自己也可以做,因此在 Kafka 0.10.0.0 版本正式推出了 Kafka Streams ,即流式处理组件 。自 Kafka 正式成为了 个流式处理框架,而不仅仅是消息引擎了。
如图所示,Kafka的工作流程为
官方文档:https://kafka.apache.org/31/documentation.html#quickstart
第一步:下载kafka ,https://kafka.apache.org/downloads
注意:kafka是使用Scala开发,所以版本号是由 Scala的版本号和Kafka版本号组成的,如:kafka_2.12-3.2.0 , 2.12是scala版本, 3.2.0是kafka版本
下载后解压,目录结构如下
启动zookeeper
为了方便操作,你可以给kafka配置一下环境变量 。 由于Kafka 使用 ZooKeeper作为服务协调工具, 如果你还没有ZooKeeper服务器,你需要先启动一个ZooKeeper服务器,我们直接使用kafka内置的ZooKeeper 即可,进入到bin\windows 目录,执行如下列命令(windows):
zookeeper-server-start.bat ../../config/zookeeper.properties
如果是在linux启动,执行到bin目录下的启动脚本即可,执行下面命令
zookeeper-server-start.sh ../config/zookeeper.properties
zookeeper.properties是作为zookeeper的配置文件,比如你想修改zookeeper的默认端口通过配置文件修 clientPort=2181项即可 ,如下:
启动效果如下
启动Kafka
Zookeeper的端口是2181接下来我们启动 Kafka 务器,进入到bin\windows 目录,执行如下列命令(windows):
kafka-server-start.bat ../../config/server.properties
server.properties作为kafka的配置文件,我们关注下面几个配置,你也可以根据情况进行修改
启动效果如下
控制台输出结尾处的“ Kafka Server O], started ,标志 Kafka 服务器启动成功,默认的服务端口是 9092
前面我们已经了解过,生产者负责发送消息到 kafka ,kafka负责存储消息,消费者从kafka订阅消费消息,如下图:
kafka是通过topic(主题)来对消息进行分类,也就是说发送者发送消息时需要指定消息发送到哪个topic中,而topic是由多个partition(可以理解为分区)组成。partition数量默认为1,topic必须指明创建。
kafka-topics.bat 脚本
官方文档:https://kafka.apache.org/31/documentation.html#quickstart , 请注意不同的kafka版本需要看不同版本的文档哦。
安装目录\bin\windows\kafka-topics.bat :是供针对topic的操作脚本,可对topic进行crud,使用cmd 输入kafka-topics.bat可以查看到kafka-topics.bat的帮助说明
这里我这里贴了一下几个核心的相关参数
参数名称 | 解释 |
---|---|
alter | 用于修改主题,包括分区数及主题的配置 |
config <键值对> | 创建或修改主题时,用于设置主题级别的参数 |
create | 创建主题 |
delete | 删除主题 |
delete-config <配置名称> | 删除主题级别被覆盖的配置 |
describe | 查看主题的详细信息 |
help | 打印帮助信息 |
if-exists | 修改或删除主题时使用,只有当主题存在时才会执行操作 |
if-not-exists | 创建主题时使用,只有主题不存在时才会执行动作 |
list | 列出所有可用的主题 |
partitions <分区数> | 创建主题或增加分区时指定分区数 |
replica-assignment <分配方案> | 手工指定分区副本分配方案 |
replication-factor <副本数> | 创建主题时指定副本因子 |
topic <主题名称> | 指定主题名称 |
zookeeper | 指定连接的zookeeper地址信息(必填项) |
创建TOPIC
使用如下命令创建一个名字为 topic-hello 的topic主题
D:\opensource\kafka3.2\bin\windows>kafka-topics.bat --bootstrap-server localhost:9092 --create --topic topic-hello
上面命令会创建一个名字为 topic-hello
的主题,默认 Partition数量为1,当然可以通过增加 --partitions 1
参数指定分区数量 ,可以通过 --replication-factor 1
指定副本数量(后面会说到) 效果如下:
查看TOPIC
使用 --list
命令查看所有topic
D:\opensource\kafka3.2\bin\windows>kafka-topics.bat --bootstrap-server localhost:9092 --list
效果如下:
修改分区
创建好topic之后,可以使用 kafka-topics 修改更改主题的配置或分区,命令如下:
kafka-topics.bat --bootstrap-server broker_host:port --alter --topic my_topic_name --partitions 40
删除TOPIC
使用 --delete
命令删除一个TOIC ,语法如下:
kafka-topics.sh --bootstrap-server broker_host:port --delete --topic my_topic_name
Kafka 默认提供了脚本工具 kafka-console-producer.bat
可以不断地接收标准输入并将它们发送到 Kafka 的某个 topic用户在控制台终端下启动该命令,输入一行文本数据,然后该脚本将该行文本封装成Kafka 消息发送给指定的 topic .为了使用该脚本工具发送消息,用户需要再打开 个新的终端,执行下列命令:
D:\opensource\kafka3.2\bin\windows>kafka-console-producer.bat --bootstrap-server localhost:9092 --topic topic-hello
>hello
>ni hao
上面命令往 topic-hello 这个主题中发送了两行消息 , 如果需要结束生产者客户端的话使用 ctrl+c
同样Kafka提供了针对于消费者的脚本, kafka-console-consumer.bat
可以方便的从Kafka中订阅和消费消息,我们打开新的终端执行命令:
D:\opensource\kafka3.2\bin\windows>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic-hello --from-beginning
hello
ni hao
上面命令是通过客户端:消费topic-hello主题中的消息, --from-beginning
表示获取历史数据,即使消费者宕机了也可以拿到曾经生产者发送的消息 。需要结束消费者者客户端的话使用 ctrl+c
如果是在linux环境中那么就使用 bin目录下的对应脚本即可, 另外 kafka-console-consumer 和 kafka-console-producer 还有很多参数可以指定,如果不加任何参数直接执行他们可以打印各自的帮助文档。
文章就写到这里把,本篇文章我们对Kafka进行了windows环境的安装,同时使用kafka提供的脚本演示了 topic创建,消息发送,消息消费的过程。相信各位对Kafka已经有了一个基本的认识,下一章我将带你深入理解Kafka的架构核心和高并发高吞吐量的原理。
点赞还是要求一下的,万一屏幕面前的大帅哥或者大漂亮就评论收藏了呢?
文章浏览阅读883次,点赞17次,收藏17次。然而,需要注意的是,优化并非一蹴而就的过程,需要开发者根据具体的应用场景和需求进行持续的探索和实践。这些引擎能够实时处理复杂的图形数据,实现高质量的渲染效果,为游戏、虚拟现实(VR)和增强现实(AR)等应用提供强大的支持。因此,对于C++开发者来说,保持对新技术的关注和学习,不断提升自己的技能水平,是应对未来挑战的关键。(3)内存对齐:合理的内存对齐可以提高数据的访问速度,减少CPU的寻址时间。实时系统对内存的使用有着严格的要求,因此内存管理优化是C++在实时系统中应用的关键环节。
文章浏览阅读325次。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><_3.2、类似如邮箱中对邮件的管理:选择邮件、删除邮件、全选、反选;如下图:小方框表
文章浏览阅读493次。【代码】el-form 表单填写验证。_e-from rules 不支持中文
文章浏览阅读163次。动作捕捉 easymocap 笔记
文章浏览阅读827次。Association of Heart Rates with Stress Response Inventory Scores in Different Age Groups不同年龄组心率与应激反应量表评分的关系论文地址摘要——许多研究报道心率变化与精神压力有关。最近,设计了一个压力反应问卷(SRI)来对过去两周发生的与精神压力相关的身体、精神和情绪症状进行评分。然而,在手机等移动设备中,性权利倡议有太多的项目需要例行询问。此外,它的个人分数可能对估计不同年龄组的压力水平没有同等的贡献。因此,我们试_pets2009数据集
文章浏览阅读921次。深度优先遍历篇-69题(Depth-first Search, 69 problems)序号 题号 题目 题目描述 难度 1 679 24 点游戏 你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过*,/,+,-,(,)的运算得到 24。 困难 2 546 移除盒子 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表..._t[0,0]走到有下降t[n-1,1],只能向下或者向右走,不能后退
文章浏览阅读3.1k次。1、院校介绍中国人民大学高瓴人工智能学院由高瓴资本创始人兼CEO、耶鲁大学校董、中国人民大学校友张磊先生捐资支持,是中国人民大学二级学院,于2019年成立。该学院主要招收人工智能专业的学生,对程序设计、数据结构与算法、计算机、人工智能专业综合能力以及英语听说读写能力有较高要求。人大高瓴不仅位于北京,而且还有着一流的师资力量,广受计算机保研er的欢迎,竞争较为激烈。2、培养特色※以上信息综合搜集整理自院系官网。如有信息偏误,欢迎留言评论指出学长学姐评价:评价一:人大高瓴人工智._中国人民大学计算机保研来源
文章浏览阅读121次。选题背景和意义:在现代社会中,足球运动作为一项受欢迎的体育项目,吸引了大量的参与者和观众。随着足球运动的发展,越来越多的人加入到球队中,球队管理变得尤为重要。然而,传统的球队管理方式存在一些问题,如信息不透明、沟通不畅、数据管理困难等。为了解决这些问题,我们提出了设计一个基于Spring Boot框架的球队管理系统的毕业设计。首先,该球队管理系统可以提供球队成员的信息管理功能。通过该系统,管理员可以方便地记录和管理球队成员的个人信息、联系方式以及技术特长等。同时,球队成员也可以通过系统更新自己的信息_分折球队系统
文章浏览阅读1.6k次。IPC是指Android中的进程间通信,即在不同进程之间传递消息数据,Android中可实现进程通信的方法有很多,比如Intent、ContentProvider、Messenger、Binder或是利用文件,这些方式各有千秋,都有最适合使用的场景,这次要介绍的是Service跨进程访问的神器——Binder。我们都知道启动一个service时可以使用startService()和bindSe_andrdoid ipc 传递binder对象
文章浏览阅读200次,点赞2次,收藏4次。接口模块是ACS600变频器的常用模块之一,具有多种功能,如可编程逻辑控制、系统控制、I/O控制等。UFC762AE101 3BHE006412R0101 ABB变频器ACS600接口模块。UFC921A101 3BHE024855R0101变频器接口模块,UFC760BE1041 3BHE004573R1041 变频接口模块等。UFC921A101 3BHE024855R0101变频器接口模块。UFC911B106 3BHE037864R0106变频器接口模块。ABB变频器ACS600的接口模块有。
文章浏览阅读400次。 如今Java程序员中很少有人使用命令行方式编程,而越来越多的人习惯使用某种IDE,且大部分选择Eclipse。本文将你展示如何在Eclipse中集成Ant-从在Eclipse中创建工程到编写Ant build.xml文件,再直接从Eclipse中运行这个文件。 Ant是Java开发界领先的构建工具,而Eclipse是主要针对Java程序员的集成开发环境(IDE)。Eclipse在可视化方
文章浏览阅读2.2k次。什么是Nosql泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区!暴露出来很多难以客服的问题,Nosql在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!Nosql的特点1、方便扩展(数据之间没有关系,很好扩展)2、大数据量的高性能(Redis 一秒写8万次,读取11万,Nosql的缓存记录级,是一种细粒度的缓存,性能会比较高!3、数据类型是多样型的!(不需要事先设计数_noql