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 ZooKeeper
https://zookeeper.apache.org/releases.html#download
kafka最新下载链接:
Apache Kafka
https://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。
找到config\server.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,订阅者/消费者就能收到发布者的消息。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://zhangphil.blog.csdn.net/article/details/123086790
内容来源于网络,如有侵权,请联系作者删除!