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

Kafka——概述、安装及命令行操作

文章目录

  • 一、概述
    • 1.1、定义
    • 1.2、如何运作?
    • 1.3、传统消息队列的应用场景
    • 1.4、消息队列的两种模式
    • 1.5、Kafka的基础架构
  • 二、安装(需要安装zookeeper)
  • 三、常用命令行操作
    • 3.1、主题命令行操作
    • 3.2、生产者命令行操作
    • 3.3、消费者命令行操作

一、概述

1.1、定义

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Quere)。
发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接受感兴趣的消息。

1.2、如何运作?

Kafka是一个由服务器和客户端组成的分布式系统,通过高性能TCP网络协议进行通信。它可以部署在本地和云中的裸机硬件、虚拟机和容器上环境。

  • 服务器: Kafka作为一个或多个服务器的集群运行,这些服务器可以跨越多个数据中心或云区域。其中一些服务器形成了存储层,成为代理。其他服务器运行Kafka Connect以持续导入和导出数据作为事件流。用于将Kafka与现有的系统、其他Kafka集群集成。Kafka集群具有高度可扩展行和容错:如果其任何服务器发送故障,其他服务器将接管其工作以确保连续操作,没有数据丢失。
  • **客户端:**它们允许编写分布式应用程序和微服务,这些应用程序和微服务可以并行地、大规模地读取、写入和处理事件流,并且即使在网络问题或机器故障的情况下也能以容错的方式进行。

1.3、传统消息队列的应用场景

缓存/消峰、解耦、异步通信

  • 缓存/消峰:有助于控制和优化数据流经过系统的速度,解决生成消息和消费消息的处理速度不一致的情况。
    在这里插入图片描述

  • 解耦:允许独立扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
    在这里插入图片描述+ 异步处理:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候去处理它们。

在这里插入图片描述

1.4、消息队列的两种模式

  • 点对点模式: 消费者主动拉取数据,消息收到后清除消息。
    在这里插入图片描述
  • 发布/订阅模式:
    • 可以有多个topic主题。
    • 消费者消费数据后,不删除数据。
    • 每个消费者相互独立,都可以消费到数据。
      在这里插入图片描述

1.5、Kafka的基础架构

  • 为方便扩展,并提高吞吐量,一个topic分为多个partition。
  • 配合分区的设计,提出消费者组的概念,组内每个消费者并行消费。
  • 为提高可用性,为每个partition增加若干个副本。
  • ZK中记录谁是leader
    在这里插入图片描述
  • Producer:消息生产者,就是向 Kafka broker 发消息的客户端。
  • Consumer:消息消费者,向 Kafka broker 取消息的客户端。
  • Consumer Group(CG):消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个broker 可以容纳多个 topic。
  • Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic。
  • Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。
  • Replica:副本。一个 topic 的每个分区都有若干个副本,一个 Leader 和若干个Follower。
  • Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 Leader。
  • Follower:每个分区多个副本中的“从”,实时从 Leader 中同步数据,保持和Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader。

二、安装(需要安装zookeeper)

  1. 下载安装包Kafka官网下载地址
  2. 上传到服务器
  3. 解压
    tar -zxf /opt/install/kafka_2.12-2.8.0.tgz -C /opt/soft/
    
  4. 修改目录名
    mv /opt/install/kafka2_.12-2.8.0/ kafka212
    
  5. 修改配置文件(server.properties)(下面修改前面为第几行注意地址改为自己的地址)
    vim /opt/soft/kafka212/config/server.properties21 broker.id=036 advertised.listeners=PLAINTEXT://xsqone144:909260 log.dirs=/opt/soft/kafka212/data103 log.retention.hours=1680123 zookeeper.connect=xsqone144:2181/kafka137 delete.topic.enable=true
    
  6. 设置节点号
    echo "0">/opt/soft/kafka212/data/myid
    
  7. 修改配置文件
    vim /etc/profile# KAFKA_HOMEexport KAFKA_HOME=/opt/soft/kafka212export PATH=$PATH:$KAFKA_HOME/bin
    
  8. 重新加载配置文件
    source /etc/profile
    
  9. 测试(启动Kafka)
    # 先启动zookeeper
    zkServer.sh start
    kafka-server-start.sh -daemon /opt/soft/kafka212/config/server.properties
    
    在这里插入图片描述

三、常用命令行操作

3.1、主题命令行操作

  • 查看消息队列
kafka-topics.sh --bootstrap-server xsqone144:9092 --list

在这里插入图片描述

  • 创建消息队列
kafka-topics.sh --bootstrap-server xsqone144:9092 --create --topic taibai --replication-factor 1 --partitions 1

在这里插入图片描述

  • 查看消息队列详情
kafka-topics.sh --bootstrap-server xsqone144:9092 --describe --topic taibai

在这里插入图片描述

  • 修改分区数(注意:只能增加,不能减少)
kafka-topics.sh --bootstrap-server xsqone144:9092 --alter --topic taibai --partitions 3

在这里插入图片描述

  • 删除消息队列
kafka-topics.sh --bootstrap-server xsqone144:9092 --delete --topic taibai 

在这里插入图片描述

3.2、生产者命令行操作

  • 发送消息
kafka-console-producer.sh --bootstrap-server xsqone144:9092 --topic xsqone

在这里插入图片描述

  • 查看生产者者offset信息
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list xsqone144:9092 --topic xsqone

在这里插入图片描述

3.3、消费者命令行操作

  • 消费消息队列中的数据
kafka-console-consumer.sh --bootstrap-server xsqone144:9092 --topic xsqone

在这里插入图片描述

  • 消费消息队列中所有数据
kafka-console-consumer.sh --bootstrap-server xsqone144:9092 --from-beginning --topic first
  • 查看消费者的offset信息(最后的为消费者IDName)
kafka-consumer-groups.sh --bootstrap-server xsqone144:9092 --describe --group 5

第一列是groupid,第二列是主题名,第三列是分区,第四列是偏移量,第五列是生产者偏移量,第六列偏移量落后
在这里插入图片描述

相关文章:

Kafka——概述、安装及命令行操作

文章目录一、概述1.1、定义1.2、如何运作?1.3、传统消息队列的应用场景1.4、消息队列的两种模式1.5、Kafka的基础架构二、安装(需要安装zookeeper)三、常用命令行操作3.1、主题命令行操作3.2、生产者命令行操作3.3、消费者命令行操作一、概述…...

怎么控制ERP企业管理系统开发的价格

企业资源规划(ERP)是一种广泛使用的商业软件系统,用于管理企业的各个方面,包括财务、供应链、客户关系、人力资源等等。开发一个适合企业的ERP系统可能是一项昂贵的任务,但控制ERP企业管理系统开发的价格是可行的。以下…...

我在“Now In Android”中学到的 9 件事

我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序,完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践,旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…...

ChatGPT宝藏插件丨装上之后,上网、语音聊天、一键分享对话……简直让你爽到起飞!

今天分享4个让你的 ChatGPT 功能更强大的浏览器插件,装上就能用,每一个都是精挑细选。 1. WebChatGPT 很多小伙伴在用 ChatGPT查阅信息时,发现它有一个致命的问题: ChatGPT的知识库全部截止到 2021年9月,正常情况下…...

私有句柄表

私有句柄表 实验环境 win7 x86 什么是私有句柄表? 私有句柄表是操作系统内部的一种数据结构,用于存储一个进程所拥有的句柄(或称为句柄对象)的信息。在操作系统中,句柄是一个标识符,用于唯一标识一个对…...

Vue——类与样式绑定

目录 Class 与 Style 绑定​ 绑定 HTML class​ 绑定对象​ 绑定数组​ 在组件上使用​ 绑定内联样式​ 绑定对象​ 绑定数组​ 自动前缀​ 样式多值​ Class 与 Style 绑定​ 数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 styl…...

软考中项计算题总结

计算题在下午的考试属于重中之重,可以说得计算题得天下,先把计算题搞定,再看案例找错题,这2个是最容易得分的,所以对于进度、成本类的计算题一定要搞懂: 所属项目过程计算计算公式说明进度管理三点估算&am…...

如何使用基于GPT-4的Cursor编辑器提升开发效率

程序员最恨两件事情:一是别人代码不写文档,二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了,顺带可能连程序员都解决了。。。 之前一直觉得 AI 生成的代码也就写个面试题的水平,小打小闹,现在时代可变了。Curs…...

压箱底教程分享,手把手教会你如何注册target账号和下单

喜欢套利的朋友肯定都认识target这个平台吧,它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题,所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程,让也想注册target账号的…...

一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!

相信学习音乐制作的同学在混音阶段经常会碰到各种关于声音的单位,其中最具代表性的可能就是分贝家族的单位了,如dBSPL、dBm、dBu、dBV、dBFS等。 那么,这些单位分别表示什么,又有什么区别呢? 描述声音信号强弱的单位…...

漂亮实用的15个脑图模板,你知道哪些是AI做的吗?

对于很多第一次接触到思维导图的朋友,看到软件的时候往往找不到方向,不知道如何创作? 今天大家的好助手来了。 一是有大量的思维导图模板,大家看着模板做,慢慢就会做了。 二是ProcessOn 思维导图已经可以用AI 做思维…...

历代程序员都无法逃脱的诅咒 -- 低代码

1764年5月4日星期四 愤怒的纺织工人 纵火烧毁了哈格里夫斯的家 因为他发明的珍妮纺织机 让很多当地的手工纺织工人失业了 这也被认为是第一次工业革命的开端 由于事发的星期四 所以这一事件也被称作疯狂星期四 类似的变革 也一次次的出现在软件行业 他是历代程序员都无法逃脱的…...

14Exceptional Control Flow Exceptions and Process(异常控制流,异常和进程)

异常控制流 异常控制流出现的地方: 异常控制流(Exceptional Control Flow,ECF)是程序执行过程中由于某些特殊事件或条件而导致的控制流的改变。异常控制流通常出现在以下几种情况: 硬件异常和中断:硬件异…...

LeetCode - 两数之和

题目信息 源地址:两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不…...

Python 小型项目大全 31~35

三十一、猜数字 原文:http://inventwithpython.com/bigbookpython/project31.html 猜数字是初学者练习基本编程技术的经典游戏。在这个游戏中,电脑会想到一个介于 1 到 100 之间的随机数。玩家有 10 次机会猜出数字。每次猜中后,电脑会告诉玩…...

他又赚了一万美金

有一些学员真的挺能干的,收了一万刀,感到欣慰,毕竟在国外lead这条路,有很多人被骗,也有很多人赚钱。 但是大部分人跟着某一些所谓的大佬,最后自己却不动手操作。 ​ 从一开始怕跟我学习,到最后选…...

企业工程项目管理系统+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...

教你使用Apache搭建Http

Apache2默认采用的是80端口号,因此直接通过公网ip或域名就能访问。现实中,很多服务器本身就部署了许多其它服务,80端口号往往被占用,因此就需要将Apache2改成其它访问端口。 修改端口,首先需要修改/etc/apache2/ports…...

ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

文章目录一、集群环境准备二、搭建 ZooKeeper 集群和配置三、搭建 Kafka 集群对接zk四、搭建 ES 集群和配置五、部署 Logstash 消费 Kafka数据写入至ES六、部署 Filebeat 收集日志七、安装 Kibana 展示日志信息一、集群环境准备 1.1 因为资源原因这里我就暂时先一台机器部署多…...

数据结构初阶 - 总结

-0- 数据结构前言 什么是数据结构 什么是算法 数据结构和算法的重要性-1- 时间复杂度和空间复杂度 👉数据结构 -1- 时间复杂度和空间复杂度 | C 算法效率 时间复杂度大O的渐进表示法eg 空间复杂度 常见复杂度对比OJ 消失的数组 轮转数组-2- 顺序表 与 链表 &am…...

基于HTML5 Canvas的轻量级图像标注库visual-annotator集成指南

1. 项目概述:一个为开发者打造的视觉标注利器如果你做过图像识别、目标检测或者任何需要处理大量图片标注的计算机视觉项目,那你一定对标注工具不陌生。从早期的LabelImg到后来的CVAT、Label Studio,工具的选择往往决定了你项目前期数据准备的…...

嵌入式LED色彩校正:Gamma原理与Arduino NeoPixel实战

1. 项目概述:为什么你的NeoPixel灯带颜色总是不对劲?如果你玩过像NeoPixel、WS2812B这类可编程LED灯带,并且尝试过自己调色,大概率遇到过这样的困惑:你在代码里设定了一个“橙色”——比如红色满值255,绿色…...

2026杭州本地GEO优化公司排名,优质机构一站式推荐

AI 搜索时代,不少杭州企业踩过这样的坑:花大价钱找服务商做 GEO 优化,每天产出大量文章,结果在豆包、DeepSeek 等 AI 大模型里搜不到品牌信息,询盘没涨、获客成本反倒飙升。GEO 优化从来不是 “堆文章”,而…...

容器镜像深度解析与生产级部署实战指南

1. 项目概述:从容器镜像名到高效部署实践的深度解析最近在梳理内部容器镜像仓库时,一个名为containers/ramalama的镜像引起了我的注意。这个名字乍一看有些无厘头,甚至带点戏谑,但在容器化部署的实践中,这类看似随意的…...

codex features

这份列表是 OpenAI Codex 内部的功能开关,每个功能都处于特定的开发阶段。下面按稳定程度对这些功能进行了分类说明。 🟢 稳定版 (Stable) - 可以放心使用 这些功能已经过充分测试,适合在日常工作流中启用。功能名称功能说明apps支持 AI 直接…...

Agent 一接数据同步任务就开始造重复记录:从 Change Capture 到 Idempotent Sink 的工程实战

一、数据同步交给 Agent 后,为什么目标端会翻倍 💾 在很多 AI 团队的生产环境中,Agent 接管的数据同步任务运行数天后,目标表数据量常变成源端的数倍。这不是 SQL 写错,而是 Exactly-Once 保障缺失所致。一次网络抖动就…...

保姆级教程:用沁恒CH34xSerCfg工具自定义你的USB转串口设备(VID/PID/序列号)

从零玩转沁恒CH34x芯片:深度定制你的USB转串口设备全攻略 每次插入相同的USB转TTL模块,电脑却分配不同的COM端口号?团队协作时多个同型号设备互相干扰?这些困扰硬件开发者多年的痛点,其实通过沁恒CH34x系列芯片的深度配…...

RL78/G13单片机定时器外部事件捕获与中断控制LED实践

1. 项目概述与核心思路最近在折腾瑞萨的RL78/G13系列单片机,手头正好有块开发板,就想用它来实现一个基础的定时器功能。这听起来是个老生常谈的话题,但实际动手时,你会发现从选型、配置到调试,每一步都有不少细节值得琢…...

Arm Neoverse CMN-650架构与性能优化解析

1. Arm Neoverse CMN-650架构概览在现代多核处理器系统中,一致性互连网络扮演着至关重要的角色。作为Arm Neoverse平台的核心组件,CMN-650采用Mesh拓扑结构设计,为多核处理器集群提供高效的数据传输和缓存一致性管理。这种架构特别适合需要高…...

SLAM_TOOLBOX实战:从零到一构建长期可用的2D地图

1. SLAM_TOOLBOX入门:为什么选择它来构建2D地图? 第一次接触SLAM技术时,我被各种开源工具搞得眼花缭乱。直到在真实机器人项目里用了SLAM_TOOLBOX,才发现它简直是长期建图的"瑞士军刀"。这个基于ROS的工具包最打动我的地…...