欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

kafka连接zookeeper配置搭建环境、安装和启动,Windows环境下

时间:2023-04-17

kafka,分布式集群架构下,高性能的流式事件数据(主要是消息)集成、发布(生产)和订阅(分发、消费)组件(中间件)。

kafka依赖zooeeper(数据后端),这里有Windows下安装配置启动zookeeper的 文章(1):

Windows 10环境zookeeper单机伪集群部署和配置_Zhang Phil-CSDN博客Windows 10环境zookeeper单机伪集群部署和配置1,首先到zookeeper项目主页地址下载项目包,https://archive.apache.org/dist/zookeeper/本文基于zookeeper-3.5.52,本例目的是在一台Windows 10(64位)机器上,部署三个zookeeper节点,因此把第1步解压后的包:复...https://blog.csdn.net/zhangphil/article/details/99990669

如果zookeeper过于陈旧,需要更新,那么zookeeper最新的下载链接:

Apache ZooKeeperhttps://zookeeper.apache.org/releases.html#download

kafka最新下载链接:

Apache Kafkahttps://kafka.apache.org/downloads.html

实际上最新版的kafka已经内置、集成了zookeeper,可以按照kafka官方文档的快速启动文档跳过zookeeper配置,直接投入使用kafka,发布和订阅消息。不过鉴于系统各个关键组件和模块要解耦的思想,本文单独基于独立安装配置启动的zookeeper,然后由kafka连接到zookeeper,然后再启动kafka。

(第一部分)安装配置启动zookeeper。

这里重新简单介绍一下如何配置安装配置启动zookeeper。具体可参考文章(1)。

(1)解压从Apache下载的zookeeper压缩包后,进入/cof目录,里面有有一个zoo_sample.cfg文件,这个文件是zookeeper的配置文件,重命名该文件为zoo.cfg,并修改这个文件里面的内容,修改dataDir:

dataDir=E:/zk/tmp/data

这里存放zookeeper存储的数据。

(2)新增log日志存放目录:

dataLogDir=E:/zk/tmp/log

(3)本例只使用集群中的一个机器,所以简单配置一个:

server.1=127.0.0.1:2889:3889

(4)写一个叫做 myid的文件,把该文件复制一份,myid里面写入(3)中的 1,放到/tmp/data/目录下面。

(5)启动zookeeper。

通过Windows控制台,进入/bin目录下,运行zkServer.bat,即启动了zookeeper:

(第二部分)安装配置启动kafka。

如果是一台单点机器,kafka配置文件可不用修改,直接到bin目录下启动kafka-server-start即可。若是分布式集群,就需要配置kafka。

找到configserver.properties文件,里面的zookeeper.connect即为kafka要连接的zookeeper的地址,根据自己部署的zookeeper地址进行配置:

 log.dirs配置自己设备上用于存放kafka日志的路径:

 以上配置完成后,进入bin/windows目录下,找到kafka-server-start.bat文件,启动:

kafka-server-start.bat E:/kafka/config/server.properties

 启动成功。

(第三部分)基于命令行,在kafka中发布消息/订阅查看消息。

(1)创新主题topic。

kafka创建主题topic需要配置两个核心参数:

replication-factor
partitions

replication-factor:表示副本数量。每个topic可以有多个副本,副本位于集群中不同的broker上,副本的数量不能超过broker数量,否则创建主题会失败。
partitions:主题topic的分区数。kafka通过分区策略,把不同分区分配在集群中的broker上,一般会分散在不同的broker上,当只有一个broker时,所有分区就只分配到该broker上。消息会通过负载均衡发布到不同的分区上,消费者监控偏移量感知哪个分区有新数据,然后从该分区拉取新消息数据。

在旧版kafka中,创建主题topic需要,新版的kafka不需要。创建一个叫做zhangphil_demo的主题topic:

kafka-topics.bat --create --topic zhangphil_demo --bootstrap-server localhost:9092

创建成功后系统输出:

WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide、To avoid issues it is best to use either, but not both.Created topic zhangphil_demo.

查看刚才新建的主题zhangphil_demo的详细信息:

kafka-topics.bat --describe --topic zhangphil_demo --bootstrap-server localhost:9092

输出:

(2)在主题topic写入/发布数据(生产者),消费/订阅数据(消费者)。

kafka-console-producer.bat --topic zhangphil_demo --bootstrap-server localhost:9092

该命令是在名为zhangphil_demo的主题topic下写入数据。

为了观察效果,最好先启动kafka的消费者(订阅者),订阅主题topic:zhangphil_demo:

kafka-console-consumer.bat --topic zhangphil_demo --from-beginning --bootstrap-server localhost:9092

即,先启动kafka的订阅消费者,接受来自主题zhangphil_demo的消息。这时候,再在主题zhangphil_demo写入消息,如图:

没在主题zhangphil_demo里面写入一条消息,hello,world! x,订阅者/消费者就能收到发布者的消息。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。