Kafka详解以及常见kafka基本操作

news2024/9/20 14:57:39

1、 kafka 是什么,有什么作用

Kafka是一个开源的高吞吐量的分布式消息中间件,对比于缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。

kafka作用:

  1. 解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。
  2. 冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。
  3. 健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。
  4. 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

2、Kafka 的基本概念

1.消息队列(Message Broker)
Kafka 是一个消息队列系统,负责接收、存储和传递消息。它可以作为多个系统之间的数据传输中介。
2.主题(Topic)
Kafka 中的消息按主题进行组织。生产者将消息发布到特定的主题,消费者从这些主题中读取消息。一个主题可以包含多个分区(Partition)。
3.分区(Partition)
每个主题可以分成多个分区,分区是 Kafka 中数据的基本存储单元。分区提供了数据的并行处理能力,提高了吞吐量和性能。
4.生产者(Producer)
生产者是向 Kafka 主题发送消息的客户端。生产者将消息发布到一个或多个主题的分区中。
5.消费者(Consumer)
消费者是从 Kafka 主题中读取消息的客户端。消费者可以组成消费者组(Consumer Group),以实现负载均衡和高可用性。
6.代理(Broker)
Kafka 集群由多个代理节点组成,每个代理节点负责处理和存储消息。代理节点的集合形成了 Kafka 集群。
7.Zookeeper
Kafka 使用 Zookeeper 来进行集群管理、节点协调以及元数据存储。Zookeeper 确保 Kafka 集群的一致性和可靠性。

3、Kafka 的常见使用场景

1.实时数据流处理
Kafka 能够处理高吞吐量的数据流,适合用于实时数据处理和分析。例如,监控系统实时收集和处理系统日志。
2.日志聚合
将来自不同来源的日志集中到 Kafka 中进行统一管理和分析。可以将日志数据推送到数据仓库或分析系统中。
3.事件驱动架构
使用 Kafka 作为事件传递和处理的核心组件,支持构建基于事件的系统架构。这可以用来实现微服务之间的解耦和异步通信。
4.数据湖和数据管道
Kafka 可以作为数据管道的核心,将实时数据流送入数据湖或其他存储系统。它还可以用作 ETL(提取、转换、加载)过程的一部分。
5.网站活动追踪
追踪用户在网站上的行为,并将这些数据实时送入 Kafka。随后,这些数据可以用于个性化推荐和用户行为分析。
6.消息系统
Kafka 作为企业级的消息系统,可以用于处理各种业务事件和消息,替代传统的消息队列系统。
总之,Kafka 的高吞吐量、低延迟和高可扩展性使其成为处理大规模数据流的理想选择,适合用于各种实时数据处理和传输场景。

3、Kafka为什么这么快

利用Partition 实现并行处理。不同 Partition 可位于不同机器,因此可以充分利用集群优势,实现机器间的并行处理。另一方面,由于Partition 在物理上对应一个文件夹,即使多个Partition位于同一节点,也可通过配置让同一节点上的不同Partition 置于不同的磁盘上,从而实现磁盘间的并行处理,充分发挥多磁盘的优势。

  • 利用了现代操作系统分页存储 Page Cache 来利用内存提高I/O效率
  • 顺序写kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能,由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。顺序读写不需要磁盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写
  • Zero-copy零拷技术减少拷贝次数
  • 数据批量处理,合并笑的请求,然后以流的方式进行交互,直顶网络上限。在很多情况下,系统的瓶颈不是 CPU 或磁盘,而是网络IO。因此,除了操作系统提供的低级批处理之外,Kafka 的客户端和 broker 还会在通过网络发送数据之前,在一个批处理中累积多条记录 (包括读和写)。记录的批处理分摊了网络往返的开销,使用了更大的数据包从而提高了带宽利用率。
  • Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
  • 数据压缩 Kafka还支持对消息集合进行压缩,Producer可以通过GZIP、Snappy、LZ4格式对消息集合进行压缩,数据压缩一般都是和批处理配套使用来作为优化手段的。压缩的好处就是减少传输的数据量,减轻对网络传输的压力 Producer压缩之后,在Consumer需进行解压,虽然增加了CPU的工作,但在对大数据处理上,瓶颈在网络上而不是CPU,所以这个成本很值得

4、Kafka架构及名词解释

简易架构图如下:
在这里插入图片描述
详细架构图如下:
在这里插入图片描述

  • Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
  • Producer:消息生产者,向kafka broker发送消息的客户端。
  • Consumer:消息消费者,向kafka broker取消息的客户端。
  • Topic:队列,生产者和消费者通过此进行对接。
  • Consumer Group(CG):若干个Consumer组成的集合。这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个CG只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。
  • Partition:分区,为了实现扩展性,一个topic可以分布在多个broker上,一个topic可以分为多个partition,每个partition都是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证同一个partition中的消息顺序,不保证一个topic的整体(多个partition之间)的顺序。生产者和消费者使用时可以指定topic中的具体partition。
  • 副本:在kafka中,每个主题可以有多个分区,每个分区又可以有多个副本。这多个副本中,只有一个是leader,而其他的都是follower副本。仅有leader副本可以对外提供服务。多个follower副本通常存放在和leader副本不同的broker中。通过这样的机制实现了高可用,当某台机器挂掉后,其他follower副本也能迅速”转正“,开始对外提供服务。
  • offset:消费偏移量,topic中的每个分区都是有序且顺序不可变的记录集,并且不断地追加到结构化的log文件。分区中的每一个记录都会分配一个id号来表示顺序,我们称之为offset,offset用来唯一的标识分区中每一条记录。可以设置为“自动提交”与“手动提交”。

5、kafka常见操作

创建topic

使用shell新开一个node01的窗口

kafka-topics.sh --bootstrap-server node01:9092 --create --topic topic-test --partitions 2 --replication-factor 1

解释:

–replication-factor 1 #复制两份

–partitions 2 #创建1个分区

–topic #主题为topic-test

查看topic

查看所有的topic

kafka-topics.sh --bootstrap-server node001:9092 --list

查看某一个topic

kafka-topics.sh --describe --bootstrap-server node001:9092 --topic topic-test

删除topic

kafka-topics.sh --bootstrap-server node001:2181 --delete --topic aa   # 删除aa这个topic

启动控制台生产者

kafka-console-producer.sh --broker-list node001001:9092 --topic topic-test

启动控制台消费者
使用shell再开一个node002的窗口

kafka-console-consumer.sh --bootstrap-server node001:9092 --topic topic-test --from-beginning

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

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

相关文章

Qt项目——文本编辑器(Bug/疑问)

项目地址:GitHub - Outlier9/CatEditor: Cat文本编辑器--Qt 有帮助的话各位点点 star 啦,感谢! 如果有需要学习该项目的人,觉得看文档较为困难,可以加我联系方式,给github点个star后可免费提供学习视频&…

红酒与烹饪:美食的灵感之源

在烹饪的广阔天地中,红酒常常作为一道神秘的佐料,为菜肴带来别样的风味与深度。当定制红酒洒派红酒(Bold & Generous)与烹饪艺术相遇,一场美食的灵感之旅便悄然展开。 一、红酒与烹饪的浪漫邂逅 在烹饪的世界里&…

12月长沙学术会议:EI检索,机器人、自动化与智能控制方向

在春意盎然、生机勃勃的四月,全球科技界的目光聚焦于中国长沙,这里即将迎来一场科技与智慧碰撞的盛宴——第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)。本次盛会由历史悠久、文化底蕴深厚的湖南第一师范学院荣耀主办&am…

正点原子imx6ull-mini-Linux驱动之platform设备驱动实验(14)

我们在前面几章编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作像I2C、 SPI、LCD 等这些复杂外设的驱动就不能这么去写了,Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生…

QtQuick Text-文本样式

属性 Text项目的style属性可以设置文本的样式。 支持的文本样式有: Text.Normal(默认)Text.OutlineText.RaisedText.Sunken 示例 import QtQuickRow{spacing: 10padding: 10Text {font.pointSize: 40text: "Normal"}Text {font…

太阳光大约8分钟到达地球?太阳光:我一瞬间就到了!

我们常常听说,太阳光从太阳出发,需要8分钟才能抵达地球。这个时间听起来并不长,但它却是光子在宇宙空间中以惊人速度穿行的见证。 不过,这个8分钟的时间概念,实际上是站在我们地球观察者的角度来说的。如果我们换一个角度,比如说,从光子自己的视角来看待这段旅程,又会是…

2-53 基于matlab的15种图像纹理特征计算

基于matlab的15种图像纹理特征计算。纹理特征包括小梯度优势 T1、大梯度优势 T2、 灰度分布的不均匀性 T3、 梯度分布的不均匀性 T4 、能量 T5、灰度平均 T6、梯度平均 T7、灰度均方差 T8 、梯度均方差 T9、相关 T10 、灰度熵 T11、梯度熵 T12 、 混合熵 T13、惯性 T14 、 逆差…

字符专用输入输出函数 getchar() putchar()

文章目录 一、字符专用接收函数1.1 scanf实现字符接收1.2 字符专用接收函数getchar1.3 练习1.4 利用循环使字符接收函数接收字符串的元素 二、字符专用输出函数2.1 printf实现打印字符2.2 字符专用输出函数putchar 提示:以下是本篇文章正文内容,下面案例…

iOS 系统提供的媒体资源选择器(UIImagePickerController)

简介 图片或者视频的选择功能几乎是每个APP必不可少的,UIImagePickerController 是 iOS 系统提供的一个方便的媒体选择器,允许用户从照片库中选择图片或视频,或者使用相机拍摄新照片和视频。 它的页面简单易用,代码稳定可靠&…

基于STC8H系列单片机的比较器功能调试

基于STC8H系列单片机的比较器功能调试 STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC8H系列单片机管脚说明STC8H系列单片机I/O口STC8H系列单片机I…

八股文真的有作用吗?

八股文在实际工作中的作用:助力、阻力还是空谈? 无论如何讨论,八股文都是面试中不可或缺的一环。一般来说,准入门槛是由“招聘”这个“游戏”的设计者设计的,旨在快速高效地筛选出合适的人选。 但是我还是要说&#x…

buu做题(12)

[CISCN 2019 初赛]Love Math <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("太长了不会算");…

【重磅推出】★全部CFA FRM CAIA ESG原創資料整理[2024版+2025版更新中]

【重磅推出】★全部CFA FRM原創資料整理[2024版2025版更新中] 申明&#xff1a;大部分資料都是本人整理原創內容&#xff0c;最新資料有參考CFA FRM協會&#xff08;有征求協會同意&#xff0c;是可以分享到網上給大家使用的&#xff09;&#xff0c; 去年收集整理了一個帖子&…

抖音小店新宠儿成都夏光汝网络科技

在当今这个数字化时代&#xff0c;电商平台的兴起为无数商家和个人创业者提供了前所未有的机遇&#xff0c;而抖音小店作为抖音平台上的重要电商板块&#xff0c;更是以其庞大的用户基数和高度活跃的社交属性&#xff0c;成为了众多品牌与商家争相入驻的热门选择。其中&#xf…

理学、工学、农学、医学、哲学、经济学、法学、教育学、文学、军事学、管理学、艺术学、历史学等学科的核心思想和基本理论

以下是以表格形式列出的理学、工学、农学、医学、哲学、经济学、法学、教育学、文学、军事学、管理学、艺术学、历史学等学科的核心思想和基本理论&#xff1a; 晓北斗推荐-多学科知识体系 学科核心思想基本理论理学探索自然、社会和人类思维的本质和规律物理学、化学、生物学、…

Flink 实时数仓(四)【DWD 层搭建(二)流量域事实表】

前言 昨天刚搬到新校区&#xff0c;新校区小的可怜&#xff0c;好在之后出去实习交通可以方便点&#xff1b;待在学院太受限了&#xff0c;早点离开&#xff01; 今天开始完成 DWD 层剩余的需求&#xff0c;上一节我们把日志数据根据不同类型分流写入到了不同的主题&#xff1b…

LangChain +Streamlit+ Llama :将对话式人工智能引入您的本地设备成为可能(上篇)

&#x1f99c;️ LangChain Streamlit&#x1f525; Llama &#x1f999;&#xff1a;将对话式人工智能引入您的本地设备&#x1f92f; 将开源LLMs和LangChain集成以进行免费生成式问答&#xff08;不需要API密钥&#xff09; 在过去的几个月中&#xff0c;大型语言模型(LLMs)得…

云计算学习——5G网络技术

系列文章目录 提示&#xff1a;仅用于个人学习&#xff0c;进行查漏补缺使用。 Day1 网络参考模型 Day2 网络综合布线与应用 Day3 IP地址 Day4 华为eNSP网络设备模拟器的基础安装及简单使用 Day5 交换机的基本原理与配置 Day6 路由器的原理与配置 Day7 网络层协议介绍一 Day8 …

【Pyhton】数据类型之详讲字符串(上)

本篇文章将详细讲解字符串&#xff1a; 1、定义 定义字符串时&#xff0c;字符串的内容被双引号&#xff0c;单引号&#xff0c;三单引号&#xff0c;三双引号中的其中一个被括住。 例如&#xff1a; 双引号&#xff1a; v1"haha" 单引号&#xff1a; v1hahah…

数据结构-1.初始包装类与泛型

本节目标:学习包装类与泛型为阅读java集合源码打下基础. 1.包装类 在 Java 中&#xff0c;由于基本类型不是继承自 Object &#xff0c;为了在泛型代码中可以支持基本类型&#xff0c; Java 给每个基本类型都对应了一个包装类型. 1.1基本数据类型对应包装类 基本数据类型包装类…