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

SpringBoot集成:搭建kafka集群 + zookeeper集群

Apache Kafka 自带了一个简化版的 Apache ZooKeeper,用于管理 Kafka 集群的元数据和状态信息。ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁等场景。

在 Kafka 中,ZooKeeper 扮演着以下几个重要角色:

    配置存储:Kafka 使用 ZooKeeper 存储集群的配置信息,包括主题(topic)和分区(partition)的分配、消费者组(consumer group)的偏移量(offset)等。这些配置信息被保存在 ZooKeeper 的数据节点(ZNode)中。

  选举协调:Kafka 的每个分区都由一个 broker 负责作为其 leader,并有零个或多个 follower。ZooKeeper 用于协调 broker 之间的选举过程,确保每个分区都有可用的 leader。

  偏移量管理:消费者可以通过 ZooKeeper 来存储和获取其在每个分区上的消费偏移量。ZooKeeper 跟踪每个消费者组的偏移量,并允许消费者在重新加入时从上次停止的位置继续消费。

  需要注意的是,自带的 ZooKeeper 是用于管理 Kafka 内部的元数据和状态,而不是用于其他用途的通用 ZooKeeper 集群。如果需要在其他应用程序中使用 ZooKeeper,通常建议单独部署一个独立的 ZooKeeper 集群。

  从 Kafka 2.8.0 版本开始,Kafka 引入了一种新的集群协调机制,称为 Kafka Raft Metadata Mode,它逐渐取代了依赖 ZooKeeper 的元数据管理。在新版本中,ZooKeeper 的依赖性将逐渐减弱,未来版本可能完全去除对 ZooKeeper 的依赖。

环境:

服务器:一台CentOS7.9

Kafka:kafka_2.13-2.7.1,其中依赖的zk版本为:zookeeper: "3.5.9"

ZK启动脚本

zk_node1_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node1/bin/zookeeper-server-start.sh /opt/kafka_node1/config/zookeeper.properties > ./zk_node1.out 2>&1 &tail -f ./zk_node1.out

zk_node2_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node2/bin/zookeeper-server-start.sh /opt/kafka_node2/config/zookeeper.properties > ./zk_node2.out 2>&1 &tail -f ./zk_node2.out

zk_node3_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node3/bin/zookeeper-server-start.sh /opt/kafka_node3/config/zookeeper.properties > ./zk_node3.out 2>&1 &tail -f ./zk_node3.out

Kafka启动脚本

kafka_node1_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node1/bin/kafka-server-start.sh /opt/kafka_node1/config/server.properties > ./kafka_node1.out 2>&1 &tail -f ./kafka_node1.out

kafka_node2_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node2/bin/kafka-server-start.sh /opt/kafka_node2/config/server.properties > ./kafka_node2.out 2>&1 &tail -f ./kafka_node2.out

kafka_node3_startup.sh

#!/bin/bash
exec nohup /opt/kafka_node3/bin/kafka-server-start.sh /opt/kafka_node3/config/server.properties > ./kafka_node3.out 2>&1 &tail -f ./kafka_node3.out

SpringBoot集成Kafka

配置文件

spring:kafka:bootstrap-servers: IP:9192,IP:9292,IP:9392producer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializerproperties:max.block.ms: 8000consumer:group-id: default-groupIdkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializer

相关文章:

  • 树状数组的基础
  • 使用小黄鸟(HttpCanary)、VMOS Pro虚拟机对手机APP进行抓包(附带软件)
  • LeetCode题练习与总结:买卖股票的最佳时机--121
  • 4. 流程控制语句
  • 【软考的系统分析师的考题考点解析2025】
  • 【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁)
  • 力扣每日一题 6/8
  • expect自动化交互应用程序工具
  • 【文件导出2】导出html文件数据
  • C# 绘图及古诗填字
  • Android基础-进程间通信
  • 熟悉的软件架构风格及详细介绍
  • 自动驾驶人工智能
  • 【深度学习】之 卷积(Convolution2D)、最大池化(Max Pooling)和 Dropout 的NumPy实现
  • arm系统中双网卡共存问题
  • centos安装java运行环境jdk+tomcat
  • es6
  • httpie使用详解
  • JavaScript-Array类型
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Js基础知识(一) - 变量
  • Linux gpio口使用方法
  • ubuntu 下nginx安装 并支持https协议
  • vue-loader 源码解析系列之 selector
  • web标准化(下)
  • windows-nginx-https-本地配置
  • 计算机在识别图像时“看到”了什么?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 协程
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​【已解决】npm install​卡主不动的情况
  • # C++之functional库用法整理
  • #知识分享#笔记#学习方法
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (k8s中)docker netty OOM问题记录
  • (待修改)PyG安装步骤
  • (二)fiber的基本认识
  • (二)JAVA使用POI操作excel
  • (分布式缓存)Redis哨兵
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (六)激光线扫描-三维重建
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET导入Excel数据
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .vimrc 配置项
  • @requestBody写与不写的情况
  • @RequestMapping用法详解
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [ABC294Ex] K-Coloring
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ 4598][Sdoi2016]模式字符串