全文目录:

    • 开篇语
    • 前言
    • 1. Kafka 集群架构
    • 2. 环境要求
      • 2.1 安装 Java
      • 2.2 安装 Zookeeper
    • 3. 安装 Kafka
    • 4. 创建 Topic
      • 4.1 查看创建的 Topic
    • 5. 测试 Kafka 集群
      • 5.1 生产者(Producer)测试
      • 5.2 消费者(Consumer)测试
    • 6. 小结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

Apache Kafka 是一个分布式流式平台,广泛用于构建高吞吐量的消息传递系统。Kafka 可以作为消息队列、日志收集系统等进行使用。通常,Kafka 集群由多个 Broker 实例组成,以实现负载均衡和容错能力。在本文中,我们将详细介绍如何在本地机器上搭建一个包含多个 Kafka Broker 的集群,并为你提供相应的配置步骤和技巧。

1. Kafka 集群架构

Kafka 集群由多个 Broker 实例组成,每个 Broker 实例都管理着一部分数据。Kafka 允许集群中的多个 Broker 共同工作,通过分区(Partition)和副本(Replica)机制来保证数据的高可用性和扩展性。

  • Broker:Kafka 集群中的每个节点(服务)称为 Broker。每个 Broker 负责处理一部分的生产者和消费者请求。
  • Topic:Kafka 中的消息流是通过 Topic 来组织的,每个 Topic 可以包含多个分区(Partition),而每个分区又可以有多个副本。
  • Partition:每个 Topic 可以分为多个分区,分区内的消息是有序的。分区能够实现数据的并行处理。
  • Replica:每个分区有多个副本(Replica),副本之间在不同的 Broker 上,以确保数据的可靠性和高可用性。

2. 环境要求

在本地搭建 Kafka 多 Broker 集群,需要以下环境:

  • Java:Kafka 是用 Java 开发的,因此需要安装 Java(推荐使用 JDK 8 版本)。
  • Zookeeper:Kafka 使用 Zookeeper 来管理集群的元数据和协调各个 Broker 实例。我们需要配置 Zookeeper。

2.1 安装 Java

Kafka 需要 Java 环境来运行。你可以通过以下命令检查是否已安装 Java:

java -version

如果没有安装 Java,可以从 Oracle 官方网站 下载并安装 JDK。

2.2 安装 Zookeeper

Kafka 依赖 Zookeeper 来管理集群状态。虽然 Kafka 2.8.0 及以上版本开始支持 KRaft 模式(不依赖 Zookeeper),但在本地多 Broker 集群的搭建中,我们通常还是使用 Zookeeper。

你可以通过下载并配置 Zookeeper 来进行集群管理:

  1. 下载 Zookeeper:

    wget https://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.7.0-bin.tar.gz
    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
    cd apache-zookeeper-3.7.0-bin
    
  2. 配置 Zookeeper:编辑 conf/zoo.cfg 配置文件,至少指定数据目录。

    cp conf/zoo_sample.cfg conf/zoo.cfg
    

    打开 zoo.cfg 文件,并配置数据目录和端口(默认端口是 2181):

    dataDir=/var/lib/zookeeper
    clientPort=2181
    
  3. 启动 Zookeeper:

    bin/zkServer.sh start
    

    使用以下命令查看 Zookeeper 状态:

    bin/zkServer.sh status
    

3. 安装 Kafka

  1. 下载 Kafka:

    wget https://mirror.bit.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
    tar -zxvf kafka_2.13-2.8.0.tgz
    cd kafka_2.13-2.8.0
    
  2. 配置 Kafka:

    打开 config/server.properties 配置文件,配置以下项:

    • broker.id:每个 Broker 实例必须指定唯一的 ID。对于每个 Kafka Broker 实例,设置不同的 broker.id
    • listeners:Kafka Broker 启动时的监听地址,可以使用 PLAINTEXT://hostname:9092PLAINTEXT://0.0.0.0:9092
    • zookeeper.connect:配置 Zookeeper 地址,用于 Kafka 集群中的协调。

    配置示例如下:

    broker.id=1
    listeners=PLAINTEXT://localhost:9092
    zookeeper.connect=localhost:2181
    log.dirs=/tmp/kafka-logs
    num.partitions=1
    

    对于其他 Kafka 实例,只需更改 broker.idlisteners 配置。例如,第二个实例的配置文件可以如下:

    broker.id=2
    listeners=PLAINTEXT://localhost:9093
    zookeeper.connect=localhost:2181
    log.dirs=/tmp/kafka-logs-2
    num.partitions=1
    

    以上配置意味着第二个 Kafka Broker 实例将监听 localhost:9093,并且 broker.id 为 2。

  3. 启动 Kafka Broker:

    启动 Kafka Broker 时,指定不同的 server.properties 配置文件。分别启动多个 Kafka Broker 实例:

    • 启动第一个 Broker:

      bin/kafka-server-start.sh config/server.properties
      
    • 启动第二个 Broker(更改配置文件中的 broker.id 和端口):

      bin/kafka-server-start.sh config/server-2.properties
      

4. 创建 Topic

Kafka 中的数据是按 Topic 来组织的,每个 Topic 又可以划分成多个 Partition。我们可以使用以下命令创建 Topic:

bin/kafka-topics.sh --create --topic my_topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2

解释:

  • --topic:指定 Topic 名称。
  • --partitions:指定 Partition 数量。
  • --replication-factor:指定副本数。
  • --bootstrap-server:指定 Kafka Broker 地址。

4.1 查看创建的 Topic

可以通过以下命令查看当前 Kafka 集群中的所有 Topic:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

5. 测试 Kafka 集群

5.1 生产者(Producer)测试

通过 Kafka 提供的生产者工具来发送消息:

bin/kafka-console-producer.sh --topic my_topic --bootstrap-server localhost:9092

输入消息并按回车,消息将被发送到 Kafka 集群的 my_topic Topic 中。

5.2 消费者(Consumer)测试

通过 Kafka 提供的消费者工具来接收消息:

bin/kafka-console-consumer.sh --topic my_topic --bootstrap-server localhost:9092 --from-beginning

这个命令会消费从 my_topic Topic 中开始的所有消息。

6. 小结

通过以上步骤,我们成功在本地搭建了一个包含多个 Broker 实例的 Kafka 集群。Kafka 的高可用性和分布式特性可以帮助我们处理大规模的数据流和消息系统。本文介绍了如何在单机环境下启动一个多 Broker 的 Kafka 集群,配置 Zookeeper,启动多个 Kafka Broker,并测试生产者和消费者。

搭建和配置 Kafka 集群时,需要特别注意 Broker 的 ID、端口的配置,以及 Zookeeper 的连接。通过合理配置,我们可以实现 Kafka 集群的高可用和负载均衡,满足大规模数据处理和消息传输的需求。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91851.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91851.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91851.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax——异步前后端交互提升OA系统性能体验

本文介绍了Ajax中的基础使用,包括XMLHttpRequest的状态变化、并使用BMI 场景的示例进行介绍,以及结合 DAO 和 Servlet 处理OA系统复杂业务逻辑和JSON数据的处理等等。 本文目录一、Ajax 基础html页面二、 XMLHttpRequestXMLHttpRequest的状态变化同步和异…

【最后一个单词的长度】

思路 逆向遍历: 从字符串末尾开始向前遍历,跳过末尾的空格,直到找到非空格字符。 遇到非空格字符时开始计数,直到再次遇到空格或字符串开头。 状态标记: 使用 state 标记是否已经进入最后一个单词的计数阶段&#xff1…

OpenCV学习 day3

一、灰度实验 将彩色图像转换为灰度图像的过程称为灰度化,这种做法在图像处理中和计算机视觉领域非常常见 1、灰度图 灰度图是一种 单通道图像,每个像素仅存储 亮度信息(0纯黑,255纯白),没有颜色信息&#…

基于单片机一氧化碳CO检测/煤气防中毒检测报警系统

传送门 👉👉👉👉其他作品题目速选一览表 👉👉👉👉其他作品题目功能速览 概述 基于单片机的CO检测系统通过传感器实时监测环境中的一氧化碳浓度,结合信号处理电路与…

前端-移动Web-day3

目录 1、视口 2、rem体验 3、rem基本使用 4、媒体查询 5、rem适配 6、rem布局 7、less-体验 8、less-注释 9、less-运算 10、less-嵌套 11、less-变量 12、less-导入 13、less-导出 14、less-禁止导出 15、案例-极速问诊 1、视口 <!DOCTYPE html> <htm…

【正点原子K210连载】第二十四章 按键输入实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第二十四章 按键输入实验 本章实验将介绍如何使用CanMV让Kendryte K210获取板载按键的状态。通过本章的学习&#xff0c;读者将学习到在CanMV下读取Kendryte K210的GPIO上的高低电平状态。 本章分为如下几个小节&#xff1a; 14.1 maix.GPIO模块介绍 14.2 硬件设计 14.3 程序设…

基于springboot/java/VUE的旅游管理系统/旅游网站的设计与实现

用户&#xff1a;注册&#xff0c;登录&#xff0c;旅游景点&#xff0c;酒店信息&#xff0c;旅游线路&#xff0c;公告信息&#xff0c;留言板&#xff0c;后台管理&#xff0c;个人中心&#xff0c;门票预订管理&#xff0c;酒店预订管理管理员&#xff1a;登录&#xff0c;…

Python Excel 高阶教程:使用 Spire.XLS 插入、修改和删除迷你图

Python 操作 Word 文档&#xff1a;主流库对比与选择指南 在办公自动化、报告生成、数据处理等领域&#xff0c;利用 Python 程序化地创建、读取或修改 Microsoft Word 文档 (.docx 格式) 是一项非常实用的技能。Python 生态中有多个优秀的库可以完成这项任务&#xff0c;但它…

WebPages PHP:深入解析PHP在网页开发中的应用

WebPages PHP&#xff1a;深入解析PHP在网页开发中的应用 引言 随着互联网技术的飞速发展&#xff0c;PHP作为一种开源的脚本语言&#xff0c;已经在网页开发领域占据了举足轻重的地位。本文将深入探讨PHP在网页开发中的应用&#xff0c;包括其优势、常用框架、开发流程以及未来…

【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程

【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程 文章目录【深度学习】【三维重建】windows11环境配置PyTorch3d详细教程前言确定版本对应关系源码编译安装Pytorch3d总结前言 本人windows11下使用搭建PyTorch3d环境&#xff0c;故此以详细教程以该算法依赖的环境…

SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:日志管理(四)集成Spring Security

目录 一、前言 二、后端开发及调整 1.日志管理开发 2.配置调整 3.日志入库&#xff08;注解、切面&#xff09; 三、前端调整 1.日志管理开发 四、附&#xff1a;源码 1.源码下载地址 五、结语 一、前言 此文章在上次调整的基础上开发后端管理系统的用户请求日志功能&…

ceph 14.2.22 nautilus Balancer 数据平衡

Ceph Balancer (upmap 模式) 启用与配置 在 Ceph Nautilus (14.2.22) 版本中启用和配置 Balancer 的完整步骤 1. 前提检查 检查集群的初始状态和版本。 集群状态 (ceph -s)cluster:id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_OKservices:mon: 3 daemons, quo…

在Linux上对固态硬盘进行分区、格式化和挂载的步骤

在Linux上对固态硬盘进行分区、格式化和挂载的步骤如下&#xff1a; 插入固态硬盘&#xff1a;将固态硬盘插入计算机的SATA或M.2接口。 确认固态硬盘被识别&#xff1a;打开终端&#xff0c;输入以下命令查看硬盘是否被系统识别 fdisk -l 查找硬盘列表中的固态硬盘&#xf…

用Unity结合VCC更改人物模型出现的BUG

1、上传模型时出现错误经过排查是因为服装发型预制体放到人物模型上之后&#xff0c;物体上自动多了一个空脚本&#xff0c;怀疑是VRC工具箱自动添加的。解决方法&#xff1a;在上传前将带有空脚本的物体上的组件删除即可2、添加头发时出现模型碰撞错误按照【【VRCHAT】从零开始…

k8s之DevicePlugin

解密 Kubernetes Device Plugin&#xff1a;让容器轻松驾驭特殊硬件 在容器化技术飞速发展的今天&#xff0c;容器凭借轻量、隔离、可移植的特性成为应用部署的主流选择。但在实际应用中&#xff0c;当容器需要访问 GPU、FPGA 等特殊硬件资源时&#xff0c;事情就变得不那么简单…

动态规划Day7学习心得

今天给动态规划扫个尾&#xff0c;还有两题。 第一道&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 暴力解法 两层for循环&#xff0c;遍历区间起始位置和终止位置&#xff0c;然后还需要一层遍历判断这个区间是不是回文。所以时间复杂度&#xff1a;O…

SpringCloud实战:机器人对战系统架构

基于Spring Cloud的机器人对战 以下是基于Spring Cloud的机器人对战实例相关案例和技术实现方向的整理,涵盖微服务架构设计、通信机制及典型应用场景: 分布式对战系统架构 采用Spring Cloud Alibaba+Nacos实现服务注册与发现,每个机器人实例作为独立微服务部署。通过Open…

LLM 核心能力解构与项目实践指南

大语言模型&#xff08;LLM&#xff09;的爆发式发展&#xff0c;本质上是其核心能力在产业场景中的规模化验证。作为技术博主&#xff0c;本文将系统拆解 LLM 的六大核心能力&#xff0c;结合工业级项目案例&#xff0c;提供从能力映射到工程实现的完整技术路径&#xff0c;并…

retro-go 1.45 编译及显示中文

最近做了个使用 retro-go 的开源掌机 基于ESP32-S3的C19掌机&#xff08;适配GBC外壳&#xff09; - 立创开源硬件平台 &#xff0c;做完后用提供的固件发现屏幕反显了&#xff0c;估计是屏幕型号不太对&#xff0c;随即自己拉 retro-go 官方库来编译&#xff0c;拉取的最新的 …

中州养老项目:Mybatis自动填充拦截器

功能:在新增护理项目的时候,创建人,创建时间和修改时间字段会自动拦截填充,这些公共字段可以省去我们一个一个处理的麻烦依靠:AutoFillInterceptor拦截器,MybatisConfig配置类第一步:我们需要借助一个MybatisConfig,configuration标志着这是一个配置类,我们需要将autoFillInter…