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

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

 5. 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 集群的数据。

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

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

相关文章

使用TensorRT对Yolov5进行部署【基于Python】

如果还未配置TensorRT,请看这篇博文:Win11下TensorRT环境部署 这里使用TensorRT对Yolov5进行部署流程比较固定:先将pt模型转换为onnx,再将onnx模型转为engine,所以在执行export.py时要将onnx、engine给到include。 P…

Linear Regression线性回归(一元、多元)

目录 介绍: 一、一元线性回归 1.1数据处理 1.2建模 二、多元线性回归 2.1数据处理 2.2数据分为训练集和测试集 2.3建模 介绍: 线性回归是一种用于预测数值输出的统计分析方法。它通过建立自变量(也称为特征变量)和因变…

【Redis】五、Redis持久化、RDB和AOF

文章目录 Redis持久化一、RDB(Redis DataBase)触发机制如何恢复rdb文件 二、AOF(Append Only File)三、扩展 Redis持久化 面试和工作,持久化都是重点! Redis 是内存数据库,如果不将内存中的数据…

微服务实战系列之ZooKeeper(实践篇)

前言 关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验&a…

uniapp 预览图片

preImg(index){let urls []this.images.map((item,i) > {if(indexi){urls.unshift(item.file_path)}else{urls.push(item.file_path)}})uni.previewImage({urls})}

linux之Samba服务器

环境:虚拟机CENTOS 7和 测试机相通 一、Samba服务器_光盘共享(匿名访问) 1.在虚拟机CENTOS 7安装smb服务,并在防火墙上允许samba流量通过 2. 挂载光盘 3.修改smb.conf配置文件,实现光盘匿名共享 4. 启动smb服务 5.在…

JVM基础扫盲

什么是JVM JVM是Java设计者用于屏蔽多平台差异,基于操作系统之上的一个"小型虚拟机",正是因为JVM的存在,使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次,在任何操作系统都可以以相…

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日,“凝心聚力,共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动,市场总监李甘来先生现场发表了题为《AI哨兵,为铁路安全运营站好第一道岗》的精彩主题演讲&…

1951 年以来的美国ACIS 气候地图数据集(5 公里空间分辨率)

应用气候信息系统 (ACIS) NRCC NN ACIS是Applied Climate Information System的缩写,是由美国国家气象局(NOAA)开发的一种气候信息系统。ACIS气候地图是通过收集和整理全球的气象数据,利用计算机技术和数据分析方法生成的气候图表…

计算机组成原理-选择语句和循环语句的汇编表示

文章目录 选择语句jmpjxx示例:选择语句的机器级表示扩展:cmp指令的底层原理 循环语句使用条件转移指令实现循环用loop指令实现循环 选择语句 不一定知道指令的位置,所以jmp直接跳转到指令的位置很难办 jmp 标号相当于位置,名字…

解决win11杀毒(不能安装破解软件的问题)

1、下载火绒APP,打开火绒APP软件 2、点击菜单,选择安全设置 3、选择病毒防护,修改病毒处理方式为询问我 4、这样在解压激活的软件就不会被windows的杀毒软件自动删除了 5、问题解决了就点击三连吧

永久删除的文件如何恢复?这3个简单方法可以帮到你!

“我在清理电脑的过程中,一不小心就删除了一些很重要的文件和数据,很想通过某种方法将这些数据找回来,但是不知道应该如何操作,有朋友可以分享一下文件找回的简单方法吗?” 在日常生活和工作中,我们时常会遇…

【JAVA基础(对象和封装以及构造方法)】----第四天

对象和封装以及构造方法 面向对象和面向过程面向过程面向对象 类与对象及其使用定义类创建一个对象,操作类补充(成员变量和局部变量) private 修饰类 封装练习编写类编写测试输出结果 面向对象和面向过程 面向过程 在了解面向对象之前先来了…

用户行为分析遇到的问题-ubantu16,hadoop3.1.3【更新中】

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小…

VR党建:VR全景技术如何助力党建知识传播

导语: 随着科技的不断发展,虚拟现实技术逐渐深入人们生活的方方面面。VR全景技术作为一种全新的沉浸式体验方式,被广泛应用于娱乐、教育、医疗等领域。而在党建学习中,VR全景技术也展现出了巨大的潜力,成为了一种创新…

「数据结构」二叉树1

🎇个人主页:Ice_Sugar_7 🎇所属专栏:C启航 🎇欢迎点赞收藏加关注哦! 文章目录 🍉树🍉二叉树🍌特殊二叉树🍌二叉树的性质🍌存储结构 🍉…

ffmpeg入门之Windows开发之二(视频转码)

添加ffmpeg windows编译安装及入门指南-CSDN博客 的头文件和依赖库如下&#xff1a; main 函数如下&#xff1a; extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <libavutil/timestamp.h> #in…

OpenCV-8RGB和BGR颜色空间

一. RGB和BGR 最常见的色彩空间就是RGB&#xff0c;人眼也是基于RGB的色彩空间去分辨颜色。 OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。 二.HSV, HSL和YUV 1.HSV(HSB) OpenCV用的最多的色彩空间是HSV. Hue&#xff1a;色相&…

【分享】5种方法将Excel设置为“只读”

将Excel表格设置以“只读方式”打开&#xff0c;可以提醒或者防止表格被随意改动&#xff0c;今天小编来分享一下将Excel设置为“只读”的5种方法。 方法一&#xff1a;通过“保护工作簿”设置 首先&#xff0c;打开Excel表格依次点击菜单选项卡【文件】→【信息】→【保护工作…

【无标题】CTF之SQLMAP

拿这一题来说 抓个包 复制报文 启动我们的sqlmap kali里边 sqlmap -r 文件路径 --dump --dbs 数据库 --tables 表