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

news2024/11/25 12:24:47

文章目录

  • 一、概述
    • 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.properties
    	21 broker.id=0
    	36 advertised.listeners=PLAINTEXT://xsqone144:9092
    	60 log.dirs=/opt/soft/kafka212/data
    	103 log.retention.hours=1680
    	123 zookeeper.connect=xsqone144:2181/kafka
    	137 delete.topic.enable=true
    
  6. 设置节点号
    echo "0">/opt/soft/kafka212/data/myid
    
  7. 修改配置文件
    vim /etc/profile
    	# KAFKA_HOME
    	export KAFKA_HOME=/opt/soft/kafka212
    	export 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,第二列是主题名,第三列是分区,第四列是偏移量,第五列是生产者偏移量,第六列偏移量落后
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python操作MySQL就是这么简单

Python操作MySQL就是这么简单下载MySQL 8.0安装MySQL 8.0步骤2:选择安装类型步骤3:选择安装位置步骤4:配置MySQL 8.0步骤5:安装MySQL 8.0步骤6:完成安装启动MySQL 8.0MySQL 8.0的常用命令python的 pymysql库操作方法安…

【C++】哈希的应用 -- 位图

文章目录一、位图的引入二、位图的实现三、bitset四、位图的应用五、哈希切割一、位图的引入 我们通过一道面试题来引入位图: 给定40亿个不重复的无符号整数,且没排过序,现在给一个无符号整数,如何快速判断一个数是否在这40亿个数…

ChatGPT想干掉测试人员,做梦去吧

很多人都发现ChatGPT可以做一些代码相关的工作,不仅可以写一些测试用例和自动化脚本,还可以做一定量的调优,于是就开始担忧起来,到哪天我的测试工作会不会被ChatGPT这个工具给取代了? 1. ChatGPT目前对哪些东西会有冲击…

Java:Arrays类

1、Arrays是啥&#xff1f; 数组操作工具类&#xff0c;专门用于操作数组元素的。 2.Arrays类的常用API 方法说明public static String toString(类型[] a)对数组进行排序public static void sort(类型[] a)对数组进行默认升序排序public static <T> void sort(类型[]…

图像分割——交叉熵损失

一、前言 写这篇博客的目的主要有两点&#xff0c;首先一点就是&#xff0c;以为对于交叉熵学过就会了&#xff0c;当初笔记也没有详细写过&#xff0c;但今天看论文发现里面的公式没有看懂才发现自己了解的还不够&#xff0c;平时用也是直接用的框架&#xff0c;原来一直认为会…

Java基础--数据结构

阅读目录 目录 数据结构 Java 集合框架 List Set Map 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类&#xff1a; 枚举&#xff08;Enumeration&#xff09;、位集合&#xff08;BitSet&#xff09;、向量&#xff08;Vector&a…

进阶C语言:程序环境和预处理

有关C语言的知识马上就要结束了&#xff0c;在学完了前面的基础之上我们就来深究一下程序底层的逻辑&#xff0c;关于程序的预处理编译指令&#xff0c;话不多说&#xff0c;我们直接开始&#xff1a; 目录 1.程序的翻译环境和执行环境 2. 详解编译链接 2.1翻译环境 2.2编译…

IT培训有靠谱的机构吗,长什么样的?

关于IT培训的问题&#xff0c;网上有一大波劝退的声音&#xff1a;现在的IT越来越卷&#xff0c;高校计算机专业毕业生每年那么多&#xff0c;作为小白转行的你竞争力又在哪里呢&#xff1f;而且去年互联网大厂那么多裁员&#xff0c;还有大幅度降薪等等&#xff0c;IT行业已经…

通达信破底翻选股公式,用缠论底分型进行优化

上次在写《通达信破底翻形态选股公式&#xff0c;选出破底之后再翻回的股票》这篇文章时&#xff0c;编写破底翻选股公式就考虑使用缠论底分型&#xff0c;但是底分型的包含关系较为复杂&#xff0c;不容易处理&#xff0c;只能暂时搁置&#xff0c;采用了一种简单的方式&#…

【PyTorch】第九节:Softmax 函数与交叉熵函数

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

低延迟流式语音识别技术在人机语音交互场景中的实践

美团语音交互部针对交互场景下的低延迟语音识别需求&#xff0c;提出了一种全新的低出字延迟流式语音识别方案。本方法将降低延迟问题转换成一个知识蒸馏过程&#xff0c;极大地简化了延迟优化的难度&#xff0c;仅通过一个正则项损失函数就使得模型在训练过程中自动降低出字延…

靶机精讲之Holynix

找不到ip 就设置两个网络适配器 再添加一个NAT 主机发现 nmap扫描 端口扫描 UDP扫描 服务扫描 脚本扫描 拒绝服务攻击 sql注入 枚举 web渗透 sql注入 证明有注入 sql注入语句 语句 ‘ or 11 --&#xff08;空格&#xff09; 目录结构像有文件包含 有报错但无法利用 调用系统…

从零开始学架构-计算高性能

一、概述 高性能是每个程序员的追求&#xff0c;无论做一个系统、还是写一组代码&#xff0c;都希望能够达到高性能的效果。而高性能又是最复杂的一环&#xff0c;磁盘、操作系统、CPU、内存、缓存、网络、编程语言、数据库、架构等&#xff0c;每个都可能影响系统的高性能&…

ChatGPT API接口使用+fine tune微调+prompt介绍

目录1 接口调用1.1 生成key1.2 接口功能1.2.1 图片生成 (image generation)1.2.2 对话(chat)1.2.3 中文纠错 (Chinese Spelling Correct)1.2.4 关键词提取 &#xff08;keyword extract)1.2.5 抽取文本向量 (Embedding)1.2.6 微调 (fine tune)2 如何写好prompt2.1分类任务2.2 归…

工业智能网关应用场景:高层楼宇智慧消防解决方案

随着城市化建设的飞速发展&#xff0c;人员聚集与土地资源稀缺的矛盾越来越明显。为了让有限的空间满足更多人的居住需求&#xff0c;高层楼宇越来越多&#xff0c;对于安全消防形成更大的挑战。 基于物联网和云计算平台的智慧消防在消防管理、火灾报警和实时监管方面发挥越来…

java内部类入门(接口)

我有一个玩具狗&#xff0c;有一个接口用于启动它&#xff0c;按照传统方法就是写一个类并实现该接口&#xff0c;且该类只使用一次&#xff08;在启动时使用&#xff0c;后面再不使用&#xff09; 但是如果我有一堆玩具&#xff0c;我每个玩具都要去写一个类来实现start这个接…

GPT-3.5还没研究明白,GPT-4又来了,chatGPT会进化成什么样?

基于GPT-3.5的chatGPT热度才稍稍减退没多久&#xff0c;GPT-4又来了&#xff0c;文新一言的发布会也槽点满满&#xff0c;差距似乎越来越大了。 chatGPT到底厉害在哪&#xff1f;为什么突然就爆火了呢&#xff1f; 它的爆火&#xff0c;一方面&#xff0c;和它的出现形态有关…

代码随想录第18天 | 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 var getMinimumDifference function (root) {//中序遍历法&#xff1a;左中右let res []if (!root) return res;const st [root] //栈&#xff0c;pop(),push()while (st.length) {let x st.pop()if (!x) {res.push(st.pop().val)continue}if (…

Linux环境下搭建composer私服及memory_limit问题

Composer是 PHP项目中用来管理依赖&#xff08;dependency&#xff09;关系的工具&#xff0c;允许声明项目所依赖的代码库 &#xff0c;然后在项目的某个目录中(默认是vendor目录) 中安装相关的依赖包。 在介绍如何安装私服之前&#xff0c;我们先熟悉下 composer 相关 compo…

对话框与子窗口控件(写给大忙人看的快速复习掌握)

对话框与子窗口控件&#xff08;写给大忙人看的快速复习掌握&#xff09;1、对话框的概念2、控件的概念我更喜欢称控件为预定义的窗口类3、我们一步一步写代码熟悉常用的预定义的窗口类3.1 什么叫模板呢&#xff1f;3.2 什么是资源文件4、消息处理函数&#xff08;有这么几个消…