kafka详解及应用场景介绍

Kafka架构

Kafka架构,由多个组件组成,如下图所示:

主要会包含:Topic、生产者、消费者、消费组等组件。

服务代理(Broker)

Broker是Kafka集群中的一个节点,每个节点都是一个独立的Kafka服务器。

它负责存储和处理发布到Kafka的消息,消息以主题(topic)的形式进行分类和组织。

如下图所示:

每个Broker可以承载多个主题的分区(partition),并使用日志文件(log)来持久化存储消息。 

Topic(主题) 

Topic可以理解为一个队列,Topic是消息的分类单元,一个 Topic 又分为一个或多个分区。

每个Topic可以被分成多个分区,每个分区在不同的Broker节点上进行存储。

Topic主题的数据以一系列有序的消息进行组织。

生产者(Producer)

Producer是向Kafka发送消息的客户端应用程序,它将消息发布到指定的主题。

可以选择将消息发送到特定分区,或让Kafka自动选择分区。

如下图所示:

生产者负责将消息进行缓冲和批量发送,以提高性能和吞吐量。

消费者(Consumer)

Consumer是从Kafka订阅和接收消息的客户端应用程序,它订阅一个或多个主题,并从指定的分区中拉取消息。

如下图所示:

消费者可以以不同的消费组(consumer group)形式组织,每个消费组内的消费者共同消费主题中的消息,以实现负载均衡和容错。

Consumer Group(消费组)

消费组是一组具有相同消费者组ID的消费者的集合,在同一个消费组内,每个分区只能由一个消费者进行消费,以实现负载均衡。

如果消费者组中的消费者数量多于主题分区的数量,那么一些消费者将处于空闲状态。

Kafka应用场景

Kafka的应用场景包括:日志收集、事件驱动架构、实时分析、指标监控等,主要用于构建实时流数据管道和流处理应用程序。

  1. 消息系统:Kafka可以作为一个高效的消息中间件,用于解耦生产者和消费者。

  2. 指标监控:Kafka可以用于实时监控和分析,将指标数据发送到Kafka,然后通过流处理工具(如Spark Streaming)进行处理和告警。

  3. 事件驱动架构:Kafka可作为事件驱动架构的一部分,用于收集和传递各种事件。

  4. 日志聚合:Kafka可以作为日志聚合的解决方案,将各种日志数据集中聚合到一个地方。

  5. 分布式追踪:Kafka可以用于分布式系统跟踪,将各种数据发送到Kafka中进行实时处理和分析。

kafka 为什么会那么快?

一共有四个原因

  1. 磁盘顺序读写

  2. PageCache 页缓存技术

  3. 零拷贝技术

  4. kafka 分区架构

磁盘顺序读写

生产者发送数据到 kafka 集群中,最终会写入到磁盘中,会采用顺序写入的方式。消费者从 kafka 集群中获取数据时,也是采用顺序读的方式。无论是机械磁盘还是固态硬盘 SSD,顺序读写的速度都是远大于随机读写的。

  • 机械磁盘顺序读写省去了磁头频繁寻址和旋转盘片的开销

  • 固态硬盘SSD以Page为单位做读写,以Block为单位做垃圾回收。写相同数据量的情况下,顺序写制造更少的垃圾Block,所以比随机写有更高的性能。

PageCache 页缓存技术

  • 当 kafka 有写操作时,先将数据写入PageCache中,然后在顺序写入到磁盘中。

  • 当读操作发生时,先从PageCache中查找,如果找不到,再去磁盘中读取。

零拷贝技术 

一般性能的瓶颈都是网络io、磁盘io。我们来看下从磁盘读取数据到网卡场景下,传统 IO 的整个过程:

DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。

传统 IO 模型下,从磁盘读取数据,写到网卡设备中,经历了 4 次用户态和内核态之间的切换和数据的拷贝。红色箭头为数据拷贝。 那能不能让拷贝次数发送的少一点呢?但是kafka 采用了 sendfile 的零拷贝技术

所谓的零拷贝技术不是指不发生拷贝,而是在用户态没有进行拷贝。

总之,Kafka是一个分布式流处理平台,用于高性能、可靠地处理实时数据流,并提供了可靠的消息传递、持久化存储和容错机制。

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

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

相关文章

反激Flyback从逆向到初步设计(UC2844)

一.Flyback基本拓扑 国标gb/t 12325-2008《电能质量供电电压偏差》规定:220v单向供电电压偏差为标称电压的-10%,7%。 对应220V的标称电压,其浮动范围是在198~235.4V。以下运算均基于此规定进行。 首先220V进入EMI模块,消除差模干扰…

【Docker】Windows11环境下的安装

前置依赖环境配置 确保虚拟化开启 搜索栏直接搜索如下功能 勾选下面两个选项,确定 重启电脑,以管理员身份打开PowerShell wsl --status wsl --update打开微软应用商店选择一个Ubuntu版本下载并打开 输入一个用户名和密码 然后就可以在Windows下使…

FlowUs与生成式AI结合的未来展望:智能助手问问AI chat与自主代理Agent的应用

生成式AI在对话系统(Chat)和自主代理(Agent)中的应用将会带来显著的技术进步和商业机会。 对话系统(Chat) 对话系统是一种人工智能软件,它能够模拟人类对话,通过自然语言处理&…

go-kratos 学习笔记(7) 服务发现服务间通信grpc调用

服务发现 Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc,放到data层,实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…

2024安全大模型技术与市场研究报告

大模型驱动的AIGC引发技术革命,国资委强调国企需加大AI投入。大模型解决网络安全行业攻防不对等问题,国内外企业纷纷推出基于大模型的网络安全产品,AI将改变网络安全产品格局。 自 2022 年底开始,以 LLM(大语言模型,简…

PHP基础语法-Part2

if-else语句、switch语句 与其他语言相同 循环结构 for循环while循环do-while循环foreach循环,搭配数组使用 foreach ($age as $avlue) //只输出值 {xxx; } foreach ($age as $key > $avlue) //键和值都输出 {xxx; }foreach ($age as $key >…

k8s核心知识总结

写在前面 时间一下子到了7月份尾;整个7月份都乱糟糟的,不管怎么样,日子还是得过啊, 1、7月份核心了解个关于k8s,iceberg等相关技术,了解了相关的基础逻辑,虽然和数开主线有点偏,但是…

系统架构设计师②:操作系统

系统架构设计师②:操作系统 操作系统作用 ①管理系统的硬件、软件、数据资源 ②控制程序运行 ③人机之间的接口 ④应用软件与硬件之间的接口 进程管理 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、…

qt表格模型视图

Qt 提供了一套强大的模型/视图框架,允许你以一种非常灵活和高效的方式显示和处理数据。在 Qt 中,表格视图(TableView)和模型(TableModel)是这种框架的一部分,常用于显示和编辑表格数据。 以下是…

利用Java调用银行卡二要素接口

一、什么是银行卡二要素? 银行卡二要素验证接口是一种 API 接口,主要用于验证用户提供的银行卡号与姓名这两个要素是否一致。 二、银行卡二要素作用及场景有哪些? 其作用是通过核验用户的身份信息,判断是否为目标用户本人操作&…

Apache Spark:深度解析

文章目录 引言Apache Spark 官网链接Spark 的原理1. 核心组件2. 弹性分布式数据集(RDD)3. 执行模型 基础使用1. 环境搭建2. 示例代码 高级功能1. DataFrame 和 Dataset2. 机器学习3. 流处理 优缺点优点缺点 结论 引言 Apache Spark 是一个快速、通用、可…

[Github] Github网络错误,与VPN代理相关

报错类型: OpenSSL SSL_connect: Connection was reset in connection to http://github.com:443 前提:计算机已经开了VPN代理,造成无法正常通过github完成push/pull等操作 解决方法: 在终端中输入: git config -…

Lua 复数计算器

Lua复数计算器 主要包括复数的加减乘除操作,以及打印 编写复数类 -- ***** 元类 ***** Complex {real 0, imag 0}-- 构造函数 function Complex:new(real, imag)local o o or {}o.real real or 0o.imag imag or 0setmetatable(o, self)self.__index selfr…

【初阶数据结构】8.二叉树(3)

文章目录 4.实现链式结构二叉树4.1 前中后序遍历4.1.1 遍历规则4.1.2 代码实现 4.2 结点个数以及高度等4.3 层序遍历4.4 判断是否为完全二叉树4.5层序遍历和判断是否为完全二叉树完整代码 4.实现链式结构二叉树 用链表来表示一棵二叉树,即用链来指示元素的逻辑关系…

space desk设备屏幕拓展软件

在正常开发的时候一般采用多个屏幕的方式来提高效率,这时就采用hdmi和vga拓展的形式,前提是屏幕但往往有电源以及续航不够的问题,不太方便出门在外的话 这时我就推荐大家使用软件无线连接的形式 进行软件下载下图为投影端可以在pc端下载 我…

如何保护您的 WordPress 不被黑?

明月可以说是见到过太多 WordPress 网站被黑的示例了,加上平时明月也会接一些 WordPress 疑难杂症的解决服务订单,所以这方面绝对是专业对口了。作为一个资深 WordPress 博客站长,谁都有被黑过的经历,都是一步步走过来的&#xff…

【数据结构】搜索二叉树

二叉搜索树 二叉树的博客 在之前的数据结构的文章中已经基本对二叉树有一定的了解,二叉搜索树也是一种数据结构,下面将对二叉搜索树进行讲解。 二叉搜索树的概念 二叉搜索树又称为二叉排序树,它或者是一棵空树,或者是具有下面性…

ObservableCollection新增数据前判断数据是否存在

public class MyDataModel {public int Id { get; set; }public string Name { get; set; }}public static void Main(){// 创建 ObservableCollectionObservableCollection<MyDataModel> myDataCollection new ObservableCollection<MyDataModel>{new MyDataMode…

[运维]解决Docker拉取镜像失败问题

问题描述 Docker 拉取镜像失败&#xff0c;报错如下&#xff1a; error pulling image configuration: download failed after attempts6: read tcp 192.168.10.2:55372->104.16.99.215:443: read: connection reset by peer一开始是xxx: Pulling fs layer&#xff0c;随后…

外贸SOHO如何选择企业邮箱

外贸SOHO&#xff08;Small Office Home Office&#xff09;企业正以前所未有的速度崛起&#xff0c;然而&#xff0c;要在这片竞争激烈的蓝海中立足&#xff0c;高效的全球通信能力、坚实的安全防线、成本效益的考量以及专业的品牌形象塑造&#xff0c;缺一不可。本文旨在为外…