Kafka-Windows搭建全流程(环境,安装包,编译,消费案例,远程连接,服务自启,可视化工具)

目录
一. Kafka安装包获取
1. 官网地址
2. 百度网盘链接
二. 环境要求
1. Java 运行环境
(1) 对 java 环境变量进行配置
(2) 下载完毕之后进行解压
三. 启动Zookeeper
四. 启动Kafka
(1) 修改Conf下的server.properties文件,修改kafka的日志文件路径
(2) Kafka开启远程连接
五. kafka-windwos 自启动脚本
六. python-demo生产者消费者案例
(1)生产者
(2)消费者
七. Docker搭建kafka-map (数据可视化)
八. 备注
Kafka是一款流行分布式消息分布订阅系统,除Kafka之外还有MQ、Redis等。我们可以把消息队列视为一个管道,管道的两端分别是消息生产者(producer)和消息消费者(consumer),消息生产者产生日志等消息后可以发送到管道中,这时消息队列可以驻留在内存或者磁盘上,直到消费者来把它读走为止。
上述就是Kafka的一个概括,我们只需要了解一下Kafka的架构和一些专业术语即可,下面就来介绍一下Kafka 中一些专业术语。
Producer:消息生产者,负责把产生的消息发送到Kafka服务器上。
Consumer:消息消费者,从Kafka服务器读取消息。
Consumer Group:消费者群组,每个消息消费者可以划分为一个特定的群组。
Topic:这是Kafka使用中非常重要的一个术语,它相当于消息的"身份标识",消息生产者产生消息时会给它贴上一个Topic标签,当消息消费者需要读取消息时,可以根据这个Topic读取特定的数据。
Broker:Kafka集群中包含的服务器。
一. Kafka安装包获取
1. 官网地址
Apache Kafka
https://kafka.apache.org/downloads
下载版本为kafka_2.13-3.5.0
2. 百度网盘链接
百度网盘 请输入提取码 (baidu.com)
https://pan.baidu.com/share/init?surl=qD06L8_OLbe7NFmQI3Ja6g&pwd=2024
二. 环境要求
在安装 Kafka 之前,需要满足以下环境要求:
1. Java 运行环境
Kafka 是使用 Java 语言编写的,因此需要在安装 Kafka 之前先安装 Java 运行环境。Kafka 支持 Java 8 及以上版本。可以通过以下命令检查 Java 运行环境的版本:
java -version
(1) 对 java 环境变量进行配置


(2) 下载完毕之后进行解压
因为Kafka的运行依赖于 Zookeeper,所以还需要下并安装Zookeeper,ZooKeeper和Kafka版本之间有一定的对应关系,不同版本的ZooKeeper和Kafka可以相互兼容,但需要满足一定的条件。
Kafka 2.2.0 开始支持使用内置的ZooKeeper替代外部ZooKeeper。 所以3.5.0是不需要安装Zookeeper的,直接解压即可。

三. 启动Zookeeper
因为Kafka中的Broker注册,Topic注册,以及负载均衡都是在Zookeeper中管理,所以需要先启动内置的Zookeeper
打开Conf文件下的zookeeper.properties文件,修改dataDir目录路径
dataDir=D:\Kafka\kafka_2.13-3.5.0\zookeeperData

执行启动Zookeeper命令
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
当看到绑定到IP地址为0.0.0.0、端口号为2181的地址,表示ZooKeeper服务器监听在该地址,启动成功

四. 启动Kafka
(1) 修改Conf下的server.properties文件,修改kafka的日志文件路径

(2) Kafka开启远程连接

新开一个命令行窗口,在之前的目录中输入启动命令
.\bin\windows\kafka-server-start.bat .\config\server.properties

五. kafka-windwos 自启动脚本
@echo offREM 设置绝对路径
set KAFKA_HOME=D:\Kafka\kafka_2.13-3.5.0
set ZOOKEEPER_CONFIG=%KAFKA_HOME%\config\zookeeper.properties
set KAFKA_CONFIG=%KAFKA_HOME%\config\server.propertiesREM 删除 kafka_log 目录及其内容
if exist %KAFKA_HOME%\kafka_log (echo 删除 kafka_log 目录...rmdir /s /q %KAFKA_HOME%\kafka_log
)REM 删除 zookeeperData 目录
if exist %KAFKA_HOME%\bin\windows\Kafkakafka_2.13-3.5.0zookeeperData (echo 删除 Kafkakafka_2.13-3.5.0zookeeperData 目录...rmdir /s /q %KAFKA_HOME%\bin\windows\Kafkakafka_2.13-3.5.0zookeeperData
)REM 启动Zookeeper
cd /d %KAFKA_HOME%\bin\windows
start /b zookeeper-server-start.bat %ZOOKEEPER_CONFIG%REM 等待Zookeeper启动
timeout /t 10 /nobreakREM 检查 meta.properties 文件
if exist %KAFKA_HOME%\kafka_log\meta.properties (echo "Meta properties already exist. Starting Kafka server..."
) else (echo "Meta properties not found. Starting Kafka server for the first time..."
)REM 启动Kafka服务器
start /b kafka-server-start.bat %KAFKA_CONFIG%exit
将脚本后缀改为bat,放到windwos自启中

六. python-demo生产者消费者案例
(运行如下代码可以对kafka数据进行推送与拉取)
(1)生产者
from kafka import KafkaProducer
import jsonproducer = KafkaProducer(bootstrap_servers='192.168.14.93:9092',value_serializer=lambda v: json.dumps(v).encode('utf-8'))
# kafka 队列生产者
def producer_demo():# 配置Kafka生产者producer = KafkaProducer(bootstrap_servers='192.168.14.93:9092',value_serializer=lambda v: json.dumps(v).encode('utf-8'))# 发送消息到指定的topicproducer.send('my-topic', {'data_time':'2024-09-10 17:06:12','data_image':'http://192.168.7.51:9001/var/model_algorithm_package/output/17/2024-09-10-17-06-11.jpg','data_result':"['[323, 356, 437, 665, 0, [226, 255, 0], 0.5512826]', '[1514, 238, 1619, 447, 0, [226, 255, 0], 0.5094569]']"})# 关闭生产者连接producer.close()if __name__ == '__main__':while 1:producer_demo()
(2)消费者
import json
from kafka import KafkaConsumerlisr = []# kafka 队列消费者
def consumer_demo():# 配置Kafka消费者consumer = KafkaConsumer('my-topic',bootstrap_servers='192.168.14.93:9092',# auto_offset_reset='latest', # 从最新消息开始消费auto_offset_reset='earliest', # 从最新消息开始消费enable_auto_commit=True, # 自动提交offsetgroup_id='my-consumer-group') # 指定消费者组# 消费消息for message in consumer:res = message.value.decode('utf-8')try:# 解析 JSON 字符串为 Python 字典parsed_dict = json.loads(res)# 打印解析后的字典print(parsed_dict)except Exception as e:print(f"Error: {e}, 消息内容: {res}")if __name__ == '__main__':consumer_demo()
七. Docker搭建kafka-map (数据可视化)
docker run -d --name kafka-map \-p 9001:8080 \-v /opt/kafka-map/data:/usr/local/kafka-map/data \-e DEFAULT_USERNAME=admin \-e DEFAULT_PASSWORD=admin \--restart always dushixiang/kafka-map:latest
登录端口地址为9001


可以对相应分区数据进行拉取

八. 备注
Kafka定位为分布式消息发布-订阅系统,提及分布式就可以想象,只有当在多节点环境下才能最大的发挥它的价值,前面所介绍的Kafka配置方式都是基于单节点的配置,由于本文主要是为了系统的梳理一下Kafka的配置及使用,因此对于配置这一块不再花费大的篇幅去详细介绍,如果需要到多节点配置Kafka可以自行查阅其他资料。
相关文章:
Kafka-Windows搭建全流程(环境,安装包,编译,消费案例,远程连接,服务自启,可视化工具)
目录 一. Kafka安装包获取 1. 官网地址 2. 百度网盘链接 二. 环境要求 1. Java 运行环境 (1) 对 java 环境变量进行配置 (2) 下载完毕之后进行解压 三. 启动Zookeeper 四. 启动Kafka (1) 修改Conf下的server.properties文件,修改kafka的日志文件路径 (2)…...
django模板相关配置
模板引擎配置 Django支持多种模板引擎,最常用的是Django自带的模板引擎和Jinja2模板引擎。模板引擎的配置主要在settings.py文件中的TEMPLATES列表中进行。 BACKEND:指定模板引擎。例如,BACKEND: django.template.backends.django.DjangoTe…...
MongoDB等保限制下的连接认证问题
目录 一、问题描述 二、解决方案 三、代码示例 四、拓展知识 一、问题描述 用户调整用户连接认证机制以满足等保要求,调整后程序连接mongodb失败。数据库日志报错如下: {"t":{"$date":"2024-10-10T14:39:07.825+08:00"},"s":&q…...
2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP
文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整,仅供参考! 除WEB,RE,PWN外,其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…...
idea 无法输入中文 快速解决
idea在某些情况会出现无法输入中文的情况,我们不去深究内部原因,直接上解决方案: 1、点击菜单help->Edit Custom VM Options 2、最后一行,追加: -Drecreate.x11.input.methodtrue 、 3、重启...
掌握ElasticSearch(五):查询和过滤器
一、查询和过滤器的区别 在 Elasticsearch 中,查询(Query)和过滤器(Filter)是用于检索和筛选数据的重要组成部分。它们虽然都能用来查找文档,但在性能和用法上有所不同。下面详细介绍查询和过滤器的概念以…...
自学[vue+SpringCloud]-012-SpringCloud工程发送邮件
文章目录 前言一、配置QQ邮箱1.1 设置1.2 获取授权码 二、服务发送邮件2.1 引入依赖包2.2 新建AlarmMessageDto2.3 增加controller代码2.4 main方法测试 总结 前言 skywalking监控通过webhook调用SpringCloud服务接口,接口中发送告警邮件。 一、配置QQ邮箱 1.1 设…...
STM32通信协议-I2C
目录 一,IC2的协议规则 I2C总线是PHILIPS公司开发的两线式串行总线,I2C总线主要解决了单片机一对多通信的问题 两根通信线:SCL,SDA,同步,半双工通信,支持数据应答机制,支持总线挂载多设备。 …...
廉颇老矣尚能饭否,实践甘肃数据挖掘挑战赛作物与杂草的智能识别,基于YOLOv3全系列【tiny/l/spp】参数模型开发构建田间低头作物杂草智能化检测识别模型
一、背景 田间杂草的有效管理是现代农业生产中面临的重要挑战之一。杂草不仅竞争作物的养分、 水分和阳光,还可能成为害虫和病原体的寄主,从而降低农作物的产量和品质。因此,开发 高效、精确的杂草检测和管理系统对于提高农业生产效率、降低化…...
基于Django+Python的宾馆管理系统设计与实现
项目运行 需要先安装Python的相关依赖:pymysql,Django3.2.8,pillow 使用pip install 安装 第一步:创建数据库 第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句 第三步:修改源…...
MySQL--mysql的安装
1.Linux上mysql的安装: Ubuntu下: (1)安装前首先切换到管理员身份:sudo su (2)然后执行命令:apt install mysql-server (注意:装的是服务器端,客户端自动就安装了) (3)执行过程中按y; 2.Mysql初始化配置 注意,一定是sudo su,必须是管理员才能进行Mysql的初始化设置; 初始化…...
qt 构建、执行qmake、运行、重新构建、清除
qt右键功能有 构建、执行qmake、运行、重新构建、清除,下面简单介绍一下各个模块的作用。 1. 执行qmake qmake是一个工具, 它根据pro文件生成makefile文件,而makefile文件中则定义编译与连接的规则。pro文件中定义了头文件,源文件…...
微软发布 Win11 22H2/23H2 十月可选更新KB5044380!
系统之家于10月23日发出最新报道,微软针对Win11 22H2和23H2用户,发布了10月可选更新KB5044380,用户安装后版本号升至22621.4391和22631.4391。本次更新开始推出屏幕键盘的新游戏板键盘布局,支持用户使用Xbox控制器在屏幕上移动和键…...
TensorFlow面试整理-TensorFlow 基础概念
在学习和准备 TensorFlow 时,了解基础概念是至关重要的。以下是 TensorFlow 的一些核心基础概念: 1. Tensor (张量) ● 定义:张量是 TensorFlow 中的核心数据结构。它是一个多维数组,可以表示标量、向量、矩阵以及更高维的数组。张量在数学上与矩阵非常相似,但可以具有任意…...
Java实现HTTP代理的技巧与方法
在互联网时代,代理IP已经成为了网络访问中不可或缺的一部分。无论是为了保护隐私,还是为了访问特定的网络资源,代理IP都能发挥重要作用。那么,如何在Java中实现HTTP代理呢?本文将带您逐步了解这个过程。 什么是HTTP代…...
MFC图形函数学习02——绘制像素点函数
再次强调一下,我们这里学习的MFC图形函数,是指绘制二维图形的函数。一般来说,一个二维图形组成的基本要素是点、线、面以及相关的颜色。在本文中,将学习绘制像素点函数,与绘制像素点相关的其它基础知识也随着绘图函数学…...
Oracle CONNECT BY、PRIOR和START WITH关键字详解
Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中,CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据,例如…...
gateway 整合 spring security oauth2
微服务分布式认证授权方案 在分布式授权系统中,授权服务要独立成一个模块做统一授权,无论客户端是浏览器,app或者第三方,都会在授权服务中获取权限,并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…...
Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)
前言:最近重拾Unity,准备做个3D的FPS小游戏,这里以官方FPS案例素材作为切入。 导入素材和素材理解 安装Unity新建项目新建文件夹和Scene如何去理解三维模型素材找到模型素材素材预制体结构骨骼和网格材质(Material)、…...
Eclipse Java 构建路径
Eclipse Java 构建路径 Eclipse 是一款广受欢迎的集成开发环境(IDE),特别适用于 Java 开发。在 Eclipse 中,构建路径(Build Path)是指编译器在编译项目时搜索类(.class)文件和源代码(.java)文件的路径。正确设置构建路径对于确保项目能够顺利编译和运行至关重要。 …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...
后端下载限速(redis记录实时并发,bucket4j动态限速)
✅ 使用 Redis 记录 所有用户的实时并发下载数✅ 使用 Bucket4j 实现 全局下载速率限制(动态)✅ 支持 动态调整限速策略✅ 下载接口安全、稳定、可监控 🧩 整体架构概览 模块功能Redis存储全局并发数和带宽令牌桶状态Bucket4j Redis分布式限…...
