kafka详解及应用场景介绍

embedded/2024/9/22 21:31:44/

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.ppmy.cn/embedded/87218.html

相关文章

android13 Settings动态显示隐藏某一项

总纲 android13 rom 开发总纲说明 目录 1.前言 2.确定目标设置项 3.修改参考 3.1 方法1 3.2 方法2 4.编译测试 5.彩蛋 1.前言 在Android 13系统中,动态显示或隐藏Settings应用中的某一项通常涉及到对Settings应用的内部逻辑进行修改。由于Settings应用是一个系统应用…

【微信小程序实战教程】之微信小程序 WXML 语法详解

WXML语法基础 从本章开始,我们就正式进入到了小程序项目开发学习的初级阶段,本章将介绍小程序的界面构成。有过网页开发学习经历的同学都知道,网页开发所使用的技术是HTML、CSS和JS,其中HTML用于描述整个网页的结构,也…

sql-libs通关详解

1-4关 1.第一关 我们输入?id1 看回显,通过回显来判断是否存在注入,以及用什么方式进行注入,直接上图 可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下&…

ProxmoxPVE虚拟化平台--安装PVE虚拟机

Proxmox 虚拟机 Proxmox是一个基于Debian Linux和KVM的虚拟化平台,‌它提供了虚拟化的环境,‌允许用户在同一台物理机上运行多个虚拟机。‌Proxmox虚拟环境(‌PVE)‌是一个开源项目,‌由Proxmox Server Solutions Gmb…

一种线性方程约束下生成随机数修正的一般性方法(下)

目录 修正方法MATLAB代码linear_equations_constraints_correction函数Problem 1Problem 2Problem 3Problem 4 研究目标 本文内容接续博客 《一种线性方程约束下生成随机数修正的一般性方法(中)》 修正方法 情况2.2.2.2.2.2.1:当 ∑ j 1 , …

仕考网:公务员可以报考军队文职吗?

公务员可以报考军队文职考试,但是需要满足前提条件。 对于已经与国家、地方的用人单位建立劳动关系的社会人才,在获得当前用人单位的许可后才可以申请报考。 在面试过程中,考生必须出示一份由其用人单位出具的且加盖公章的同意报考证明。一…

路由表与IP数据报的转发

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、相关知识 1、路由类型 路由表中有3类路由:直连路由、静态路由、动态路由 直连路由:一般指去往路由器接口直接连接网络的…

MySQL练习05

题目 步骤 触发器 use mydb16_trigger; #使用数据库create table goods( gid char(8) primary key, name varchar(10), price decimal(8,2), num int);create table orders( oid int primary key auto_increment, gid char(10) not null, name varchar(10), price decima…