当前位置: 首页 > backend >正文

Kafka单机版安装部署

目录

  • 1.1、概述
  • 1.2、系统环境
  • 1.3、ZooKeeper的作用
  • 1.4、部署流程
    • 1.4.1、下载安装包
    • 1.4.2、解压文件
    • 1.4.3、创建日志目录
    • 1.4.4、配置Kafka
    • 1.4.5、启动Kafka服务
    • 1.4.6、启动成功验证
  • 1.5、创建Topic测试
  • 1.6、消息生产与消费测试
    • 1.6.1、启动生产者
    • 1.6.2、启动消费者

1.1、概述

        Kafka的搭建模式包括单节点单Broker部署、单节点多Broker部署、集群部署(多节点多Broker),分别适用于不同的场景和需求,从简单的单节点测试环境到复杂的多节点高可用生产环境。在实际部署时,应根据系统的可用性要求、数据量、并发负载等因素选择合适的部署模式。

  • 单节点单Broker部署
            在这种部署方式中,Kafka的所有服务都运行在单个节点上,包括单个Kafka Broker。这种部署方式适用于开发或测试环境,但在生产环境中可能不是最佳选择,因为它不具备高可用性和负载均衡的能力。
  • 单节点多Broker部署
            这种部署方式在单个节点上运行多个Kafka Broker实例。每个Broker实例有不同的配置文件,通常使用不同的端口号和日志目录。这种方式在单台物理机或虚拟机上提供了更好的资源利用,但仍然不具备高可用性,因为所有服务仍然依赖于单个节点的稳定性。
  • 集群部署(多节点多Broker)
            在集群部署中,Kafka Broker分布在多个物理或虚拟节点上。每个Broker实例通常都有自己的配置文件,并连接到一个共同的ZooKeeper集群,以协调和同步集群内的信息。集群部署方式提供了高可用性、容错能力和水平扩展性,是生产环境中的首选部署方式。

1.2、系统环境

        Kafka强依赖ZooKeeper,如果想要使用Kafka,就必须安装ZooKeeper,ZooKeeper的安装教程请参考Zookeeper单机版安装部署这篇博文。Kafka中的消费偏置信息、kafka集群、topic信息会被存储在ZooKeeper中。有人可能会说我在使用Kafka的时候就没有安装ZooKeeper,那是因为Kafka内置了一个ZooKeeper,一般我们不使用它。具体系统环境如下:

环境名称版本号
操作系统CentOS Linux release 8.4.2105
JDK17.0.7
ZooKeeper3.8.4
Kafka3.7.2

1.3、ZooKeeper的作用

        Zookeeper在Kafka中扮演着关键的角色,它提供了分布式协调和配置管理服务,对于Kafka集群的正常运行和高可用性至关重要。Zookeeper在Kafka中的作用主要包括:

  • Leader选举
            Zookeeper负责管理Kafka集群中的Broker选举出Leader的过程。当集群中某个Broker作为Leader发生故障时,Zookeeper会协调其他Broker选举新的Leader,以保证Kafka集群的稳定运行。
  • 配置管理
            Zookeeper存储了Kafka集群的关键元数据,包括主题配置信息、分区信息等。当这些配置需要更新时,Zookeeper确保所有Broker都可以获取到最新的配置信息。
  • 同步
            Zookeeper在Kafka的分布式环境中保证数据的一致性。它管理Kafka集群中的所有Broker,确保它们的状态同步。
  • 节点管理
            Zookeeper跟踪Kafka集群中每个节点的状态和信息。这包括节点加入或离开集群的情况,以及节点的健康状况。
  • 注册并监控Broker,调整负载均衡
            Kafka的每个Broker在启动时,都会在Zookeeper中注册,告诉Zookeeper其Broker ID。当节点失效时,Zookeeper会删除该节点,从而监控整个集群Broker的变化,并能够及时调整负载均衡。
  • 协调生产者和消费者的订阅关系
            Zookeeper帮助Kafka在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者和消费者的负载均衡。
  • 偏移量管理
            在Kafka中,Zookeeper用于提交偏移量。这样,即使节点在任何情况下失败了,它也可以从之前提交的偏移量中恢复。
  • 其他活动
            Zookeeper还执行其他活动,如leader检测、分布式同步、配置管理、识别新节点何时离开或连接、集群、节点实时状态等。

1.4、部署流程

        本文将在操作系统为CentOS Linux release 8.4.2105、Java环境为JDK17.0.7、ZooKeeper为3.8.4版本的服务器上部署Kafka3.7.2版本,部署架构如下图所示。具体流程如下:
部署架构

1.4.1、下载安装包

        用户可以自行在Apache Kafka官网 ,选择最新稳定版本进行下载。在国内,从官网的下载速度较慢,可以从博主提供的资源地址下载:资源下载,也可以选择国内镜像站下载,比如阿里镜像站:阿里镜像 。官网下载和阿里镜像下载如下:
官网下载
阿里镜像
        下载文件一般为一个.tar.gz或.zip格式的压缩包,例如 kafka_2.13-4.0.0.tgz。下载后将安装包保存在服务器上的自定义目录下即可,比如:/usr/local/Kafka。

1.4.2、解压文件

        对于.tar.gz文件,可以使用以下命令进行文件解压。命令如下:

tar -xvzf kafka_2.13-3.7.2.tgz

        解压后,将会生成一个名为 kafka_2.13-3.7.2的目录,该目录即为Kafka的安装目录。为了方便配置,可以重命名 Kafka 安装目录。解压后的目录结构如下:
目录结构

1.4.3、创建日志目录

        根据Kafka的配置要求,需要创建一个目录用于存放日志。命令如下:

mkdir /data/kafka/logs

1.4.4、配置Kafka

        进入kafka_2.13-3.7.2/config目录,使用文本编辑器(如 vi、nano 或 emacs)打开server.properties文件并进行如下配置:# 数据存储路径 log.dirs=/data/kafka/logs # 监听地址 listeners=PLAINTEXT://:9092 # ZooKeeper 地址 zookeeper.connect=localhost:2181。最终配置文件如下:
配置文件

1.4.5、启动Kafka服务

        启动服务时先要启动ZooKeeper,再启动Kafka;关闭服务时先要关闭Kafka,在关闭ZooKeeper。启动Kafka时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-server-start.sh ../config/server.properties 命令启动 Kafka服务,启动成功后的效果如下:
启动成功

1.4.6、启动成功验证

        出现上述界面后,但是并不能保证Kafka已经启动成功,输入jps查看进程,如果可以看到Kafka进程,表示启动成功。具体如下:
Kafka进程

1.5、创建Topic测试

        创建Topic时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 命令创建一个名为test-topic的主题,创建成功后的效果如下:
创建Topic成功
        也可以通过./kafka-topics.sh --list --bootstrap-server localhost:9092命令查看所有的主题列表,具体如下所示:
主题列表

1.6、消息生产与消费测试

1.6.1、启动生产者

        启动生产者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092命令后就可以向名为test-topic的主题中生产消息,效果如下:
生产消息

1.6.2、启动消费者

        启动消费者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092命令后就可以消费名为test-topic的主题中的消息,效果如下:
消费消息

http://www.xdnf.cn/news/5046.html

相关文章:

  • 什么是信号完整性?
  • VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件
  • Tomcat的`context.xml`配置详解!
  • 嵌入式系统架构验证工具:AADL Inspector v1.10 全新升级
  • 1、mongodb-- BSON 学习和JSON性能对比
  • 新一代电动门“攻克”行业痛点,远峰科技打造“智能出入”新标杆
  • ApplicationEventPublisher 深度解析:Spring 事件驱动模型的核心
  • 图像来源:基于协同推理的双视角超声造影分类隐式数据增强方法|文献速递-深度学习医疗AI最新文献
  • 软件系统中功能模型 vs 数据模型 对比解析
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.3 商品销售预测模型
  • C++线程库
  • ggplot2 | GO barplot with gene list
  • 深入探索DSPy:开启模块化AI编程的新篇章
  • Unity 日志存档功能
  • 数字化转型:概念性名词浅谈(第二十六讲)
  • c++ 命名空间
  • java的输入输出模板(ACM模式)
  • 软件测试——用例篇(2)
  • JavaScript与TypeScript深度对比分析
  • C++中volatile关键字详解
  • 赤色世界 陈默传 第一章 另一个陈默
  • 课程设计。。。。
  • 【C++设计模式之Strategy策略模式】
  • ISP流程介绍(Rgb格式阶段)
  • Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现
  • MySQL——七、索引
  • ArrayList和LinkedList区别
  • nginx的学习笔记
  • Android屏蔽通话功能和短信功能
  • AD 电阻容模型的创建