Kafka基本原理及使用

目录

基本概念

单机版

环境准备

基本命令使用

集群版

消息模型

成员组成

1. Topic(主题):

2. Partition(分区):

3. Producer(生产者):

4. Consumer(消费者):

5. Broker(代理服务器):

6. Zookeeper:

 成员关系


基本概念

Kafka 是一个分布式流处理平台,主要用于实时处理和传输大规模数据流。

基本MQ功能:

  • 异步
  • 削峰
  • 解耦

与RocketMq对比:

  • 高吞吐量和低延迟
  • 流式处理
  • 生态环境更好

适合业务场景:

  1. 日志聚合: Kafka 作为一个分布式消息传递系统,非常适合用于收集和存储系统和应用程序产生的大量日志数据。它提供了持久性存储和高吞吐量的写入,是构建日志聚合系统的理想选择。

  2. 实时数据处理: Kafka 可以与流处理框架(如 Apache Flink、Apache Storm、Spark Streaming)集成,用于实时处理和分析数据流。这使得 Kafka 在需要实时数据处理、计算和分析的场景中非常有用。

  3. 事件溯源: 对于需要记录系统每个状态变化的场景,例如金融交易、订单处理等,Kafka 支持事件溯源,帮助构建可追溯、可审计的系统。

  4. 消息队列: Kafka 作为分布式消息队列,可用于解耦生产者和消费者之间的通信。这在微服务架构中尤为重要,帮助构建松耦合的系统。

  5. 数据集成: Kafka 提供 Kafka Connect,一个用于数据集成的工具,用于连接 Kafka 与其他数据存储系统,支持构建端到端的数据流管道。

  6. 大数据管道: Kafka 可以作为大数据管道的核心组件,用于连接和传递大规模数据集,以支持数据湖、数据仓库等大数据处理场景。

单机版

环境准备

1. 从官网下载kafka, 这里选择3.4.0版本,官网:Apache Kafka

2. 解压压缩包

tar -zxvf kafka_2.13-3.4.0.tgz

3. 启动自带的zookeeper, jps检查是否启动成功

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

4. 修改kafka配置文件config/server.properties, 允许外网客户端连接

5. 启动kafka

nohup bin/kafka-server-start.sh config/server.properties &

 6. jps检查是否启动成功

基本命令使用

1. 创建topic

bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092

2. 查看topic

bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092

3. 发送消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

4. 消费消息

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

5. 从起点开始消费消息

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

6. 从指定地方消费消息

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

 7. 分组消费消息

示例:创建三个消费者A,B,C, 其中A和B属于testGrroup消费者组, C属于testGrroup2消费者组

#开一个终端1, 配置消费者组testGrroup 
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer-property group.id=testGrroup --topic test

#开一个终端2, 配置消费者组testGrroup 
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer-property group.id=testGrroup --topic test

#开一个终端3, 配置消费者组testGrroup2
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer-property group.id=testGrroup2 --topic test

#结果: 终端1和2会竞争消息, 一条只会被其中一个实例消费; 终端3独享消费群组, 每条消息能消费

集群版

==

消息模型

成员组成

1. Topic(主题):

  • 消息在 Kafka 中通过主题进行分类,每个主题都是一个消息的类别。
  • 生产者将消息发布到一个或多个主题,消费者订阅一个或多个主题。
  • 主题在 Kafka 集群中的分区上进行分布,每个分区可以看作是一个有序的日志文件。

2. Partition(分区):

  • Topic只是一个逻辑概念,而Partition就是实际存储消息的组件。每个Partiton就是一个queue队列结构。所有消息以FIFO先进先出的顺序保存在这些Partition分区中。
  • 每个主题可以划分为一个或多个分区,分区是 Kafka 消息的基本存储单元。
  • 分区允许水平扩展和并行处理,提高了整个系统的吞吐量。
  • 分区内的消息有序存储,保证了分区内的顺序性。

3. Producer(生产者):

  • 生产者负责将消息发布到指定的主题。
  • 生产者可以指定消息的键(key),Kafka 根据键将消息发送到特定的分区。
  • 生产者将消息发送到分区的 Leader 副本,并可以等待确认或异步发送。

4. Consumer(消费者):

  • 消费者订阅一个或多个主题,从中获取消息。
  • 消费者可以以消费者组(Consumer Group)的形式进行组织,每个组内的消费者共享订阅的主题的消息。
  • 每个分区只能由同一消费者组内的一个消费者进行消费,确保了消息在消费时的顺序性。

5. Broker(代理服务器):

  • Broker 是 Kafka 集群中的节点,负责存储和处理消息。
  • 每个分区在集群中有多个副本,其中一个是 Leader 副本,其余是 Follower 副本。Leader 负责处理读写请求,Follower 复制 Leader 的数据。

6. Zookeeper:

  • Kafka 使用 ZooKeeper 来进行集群管理和协调。
  • ZooKeeper 管理 Kafka 集群的节点、分区的分配,以及监视 Broker 的健康状态。

 成员关系

  • Topic 和 Partition:

    • 一个 Topic 包含一个或多个 Partition。
    • 每个 Partition 中的消息是有序的,可以保证 Partition 内的消息顺序性。
    • Partition 的数量和分布影响了 Kafka 集群的并发处理能力和水平扩展性。
  • Partition 和 Broker:

    • Partition 在 Kafka 集群中分布在多个 Broker 上,以实现水平扩展。
    • 每个 Partition 在任意时刻只有一个 Broker 的副本是 Leader,其余的是 Follower。
    • Leader 负责处理读写请求,Follower 负责复制 Leader 的数据,以实现高可用性和容错性。
  • Topic 和 Broker:

    • 一个 Topic 的多个 Partition 可以分布在多个 Broker 上。
    • Topic 的所有 Partition 的所有副本的集合构成了整个 Kafka 集群的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月20日学习总结

今日to do list: 学习kaggle中store sales中的dart forcasting🎯 大概搜集一个声纹识别的报告(老师给的新项目😭) 学习时不刷手机 okkkkkkkkkkkkkk 开始👍 1. 时间序列预测- a complete guide 总结一下这…

Vim:文本编辑的强大利器

Vim:文本编辑的强大利器 概述1. 工作模式1.1 普通模式1.2 插入模式1.3 可视模式 2. 代码示例2.1 移动光标2.2 复制和粘贴2.3 查找和替换 3. 应用场景结语 概述 Vim(Vi Improved)是一款强大的文本编辑器,广泛应用于Linux和Unix系统…

架构设计到底是什么?

文章目录 架构设计有哪些内容?架构原理与技术认知分布式技术原理与设计中间件常用组件的原理和设计问题数据库原理与设计问题分布式缓存原理与设计问题互联网高性能高可用设计问题 技术认知架构分析问题分析能力边界 架构设计,是中高级研发工程师逃不开的…

LabVIEW开发振动数据分析系统

LabVIEW开发振动数据分析系统 自动测试系统基于LabVIEW平台设计,采用了多种高级硬件设备。系统的硬件组成包括PCB振动加速度传感器,这是一种集成了传统压电加速度传感器和电荷放大器的先进设备,能够直接与采集仪器连接。此外,系统…

教师的职业素养有哪些

教师职业素养的重要性不言而喻。一个优秀的教师不仅需要具备专业知识,还需要具备一些基本的职业素养。 具备高尚的职业道德。作为教育工作者,教师应该以身作则,树立良好的榜样。他们应该尊重学生、关心学生、热爱学生,以自己的言行…

15 使用v-model绑定单选框

概述 使用v-model绑定单选框也比较常见,比如性别,要么是男,要么是女。比如单选题,给出多个选择,但是只能选择其中的一个。 在本节课中,我们演示一下这两种常见的用法。 基本用法 我们创建src/component…

测试自动化平台 | 测试开发工程师的进阶之路

一、测试工程师的现状 很多测试小伙伴在工作中有时会比较迷茫,不知该怎样突破瓶颈,更好的发展。 那么测试人员究竟该如何打破瓶颈继续向上提升呢?如果你苦于不知所措,又满怀斗志向上的话,不妨一起聊聊。测试职业发展…

(PC+WAP)装修设计公司网站模板 家装公司网站源码下载

(PCWAP)装修设计公司网站模板 家装公司网站源码下载 PbootCMS内核开发的网站模板,该模板适用于装修设计、家装公司类等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; PCWAP,同一个后台&#xff0c…

暴雨AI服务器:推动大模型算力底座发展

语言大模型作为人工智能领域的重要分支,其强大的自然语言处理能力和模仿人类的对话决策能力,正逐渐成为人们的关注焦点。近日,据央视新闻报道,工业和信息化部赛迪研究院数据显示,今年我国语言大模型市场规模实现较快提…

D : B DS二叉排序树_树中第k小的元素

Description 给定一个二叉排序树和一个整数k,要求输出树中第k个最小元素(k从1开始计数)。 Input 第一行输入t,表示有t个测试样例。 第二行起,首先输入n,接着输入n个整数表示一个二叉排序树,接着输入k。 以此类推共…

分段函数1_分支结构 C语言xdoj112

题目描述: 编写程序计算分段函数f(x)的值。 输入格式&#xff1a;输入实数x的值 输出格式&#xff1a;输出f(x)的值&#xff0c;结果保留两位小数。 示例&#xff1a; 输入&#xff1a;4 输出&#xff1a;2.00 #include <stdio.h> #include <math.h>//分段函数1_分…

Linux常用基础命令(二)

查看当前的工作目录的路径--pwd 列表显示目录内容--ls 切换工作目录--cd 1.切换用户--su 格式&#xff1a; su 用户名 注意&#xff1a;普通用户切换到管理员用户需要输入密码&#xff0c;管理员用户切换到普通用户不需要输入密码&#xff0c;普通用户之间切换也要输入密码…

【漏洞复现】Apache Struts CVE-2023-50164

Struts2 官方披露 CVE-2023-50164 Apache Struts 文件上传漏洞&#xff0c;攻击者可利用该漏洞污染相关上传参数导致目录遍历&#xff0c;在具体代码环境中可能导致上传 Webshell&#xff0c;执行任意代码。 漏洞描述 Apache Struts2 是一个开源的 Java Web 应用程序开发框架&a…

【目标检测实验系列】YOLOv5创新点改进:融合高效轻量级网络结构GSConv,减轻模型复杂度的同时保持检测精度!(内含源代码,超详细改进代码流程)

自我介绍&#xff1a;本人硕士期间全程放养&#xff0c;目前成果:一篇北大核心CSCD录用,两篇中科院三区已见刊&#xff0c;一篇中科院三区在投。如何找创新点&#xff0c;如何放养过程厚积薄发&#xff0c;如何写中英论文&#xff0c;找期刊等等。本人后续会以自己实战经验详细…

stable diffusion webui之lora调用

1.触发词底模lora效果最好&#xff08;分数不一定要取到1&#xff0c;0.8也行&#xff09;&#xff1b; 2.引用时一定要使用<lora:>&#xff0c;例如<lora:C4D_geometry_bg_v2.5:0.8>&#xff1b; "prompt": "(masterpiece:1.3), (best quality:1.…

浅谈棉纺织厂电气防火措施及电气防火限流式保护器的应用

摘要&#xff1a;棉纺织厂属于火灾危险场所&#xff0c;在进行电气设计时要考虑并采取一定的防火措施。本文从接线、熔断器的选用、中性点接地方式的选择和接地等问题&#xff0c;介绍了电气防火的一些措施。并就引发火灾较严重的线路短路故障问题&#xff0c;介绍了电气防火限…

系统分析师(软考)知识点整理(二)

会计相关 会计是指记录、分类、汇总、计量和报告发送在企业经济活动中的财务数据的行为 #mermaid-svg-YBI5YPWzqWhRB4kI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YBI5YPWzqWhRB4kI .error-icon{fill:#552222…

http -- 跨域问题详解(浏览器)

参考链接 参考链接 1. 跨域报错示例 Access to XMLHttpRequest at http://127.0.0.1:3000/ from origin http://localhost:3000 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header…

鸿蒙原生应用再添新丁!喜马拉雅入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;喜马拉雅入局鸿蒙 来自 HarmonyOS 微博12月20日消息&#xff0c; #喜马拉雅正式完成鸿蒙原生应用版本适配#&#xff0c;作为音频业巨头的喜马拉雅 &#xff0c;将基于#HarmonyOS NEXT#创造更丰富、更智慧的全场景“声音宇宙”&#xff01;#鸿…

实验4.2 默认路由和浮动静态路由的配置

实验4.2 默认路由和浮动静态路由的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.路由器的基本配置。2.配置默认路由&#xff0c;实现全网互通。3.配置浮动静态路由&#xff0c;实现链路备份。 六、任务验收七、任务小结八、知识链接1&#xff0e;默认路…