kafka的基础知识及概念

news2024/11/23 22:23:10

介绍

kafka在过去几年获得了巨大的普及。在微服务架构中,它起着举足轻重的作用。它使数据能够从一项服务转移到另一项服务。我开始这个系列是为了帮助初学者深入了解 Kafka。但是,在我们深入之前,了解一些基础知识很重要。因此,在这篇文章中,我们将学习基础知识,并最终深入探讨。

基本

“Kafka 是一个高度可扩展、持久、容错的分布式流媒体平台。” 这是我们从Kafka官网看到的定义。这些行话可能会吓到新人。让我们先了解一下这些的含义。

高度可扩展:如果 Kafka 的传入消息不断增加,您可以通过向集群添加更多代理来扩展系统。您可以通过添加更多机器或通过添加更多磁盘空间来垂直扩展它。

耐用:耐用性是持续时间更长的能力。发送到 Kafka 主题的消息会保存在磁盘中。除非您将它们配置为删除,否则它们不会被删除。

容错:首先,容错是指系统在一个或多个节点发生故障时仍能运行的能力。在 Kafka 集群中,即使一个 broker 挂了,系统仍然可以运行,因为有复制。我们将在以后的帖子中了解这一点。

分布式流媒体平台:流是连续的流。在 Kafka 中,生产者生产消息,消费者消费。此流从未停止。这就是为什么我们称 Kafka 为流媒体平台。

简而言之,Kafka 在传统的客户端-服务器架构上工作。服务器是Kafka,生产者(发送数据的)和消费者(接收数据的)是客户端。客户端和服务器之间的通信通过Kafka 团队实现的定制高性能 TCP 协议进行。大多数编程语言都有许多可用的客户端库。

事件

事件描述发生的事情。例如,在电子商务系统中,事件的例子可以是“订单已创建”、“商品已添加到购物车”、“订单已送达”。在 Kafka 中,我们以事件的形式读取或写入数据。事件数据的示例ORDER_CREATED如下所示。我们可以用 XML、JSON 或 Avro 发送这些数据。

{
  "order_id": "abcd-1234",
  "order_amount": "50.00",
  "created_by": "lokesh",
  "created_on": "2022-02-09T22:02:00Z"
}

基本架构

生产者是将数据“发送”到 Kafka 的实体。消费者是“消费”来自 Kafka 的数据的实体。在 Kafka 中,这两个实体都是松散耦合的。这意味着,生产者只生产而不管消费者的存在。同样,消费者的责任是在不依赖生产者的情况下消费来自 Kafka 的数据。

卡夫卡流程.png

主题和分区

事件按主题分类。主题包含相关信息。在设计数据管道时,主题是基于语义创建的。每个主题都有其意义和目的。例如,“支付”是接收支付相关事件的主题。每个主题分为多个分区。主题是 Kafka 中的逻辑实体,这意味着它在物理上不存在,而分区存在。当您创建一个包含“n”个分区的主题时,下面是幕后发生的事情。

  1. Kafka 创建了 ‘n’ 个名称为topic-1topic-2…的文件夹topic-n
  2. 在每个文件夹中,都会有存储事件的文件。

我们将在接下来的帖子中进入内部。现在,谈到分区,它是最小的存储单元和仅附加数据结构,其中事件附加到末尾。分区允许用户获得并行性。分区数越多,并行度越高。

kafka主题分区.png

分区键

当生产者向 Kafka broker 发送消息时,他们会去哪个分区?好吧,如果没有发送分区键,它们将转到一个随机分区。什么是分区键?它是发送时的可选参数,Kafka 确保具有相同分区键的消息写入同一个分区。让我们用下图来说明它。带有分区键“lokesh、john & kate”的消息被发送到partition 1。与其他键相同。在幕后,Kafka 计算分区键的哈希值,并对总分区应用模运算以获得分区。分区键解决了一些需要根据分区键聚合消息的用例。

分区键.png

消费者如何工作?

当您启动消费者时,会发生以下情况。

  1. 我们向消费者指定 Kafka 引导程序 URL(或 zookeeper URL,当提供 Kafka 代理时将自动发现)。
  2. 消费者打开与代理的 TCP 连接并注册自己。
  3. 消费者询问经纪人它在哪里,经纪人返回偏移量。Kafka 代理在一个名为__consumer_offsets.
  4. 消费者不断轮询并从偏移量开始消费消息。
  5. 消费者完成工作并将偏移量提交回代理。
  6. 消费者移动到下一条消息并且该过程继续。

如果您的消费者需要更多时间来处理每条消息,那么您可以将配置max.poll.interval.ms更改为更高的值。默认情况下,它设置为 5 分钟。您还可以调整max.poll.records,它指定消费者可以在单个轮询调用中获取的最大记录数。

抵消

在计算机科学中,维基百科对偏移量的定义如下。在 Kafka 的上下文中也是如此。它告诉消息位置。

偏移量是一个整数,指示对象的开始与给定元素或点之间的距离(位移),大概在同一对象内。

消费者群体

顾名思义,消费组就是一群消费者。每个消费者组都有一个名称。您可以拥有任意数量的消费者群体。当您启动一个消费者组时,它将向 Kafka 代理注册,这意味着该组中的所有消费者也将被注册。

卡夫卡消费者.png

与传统的发布-订阅系统的比较。

此外,如果您熟悉像 rabbitmq 这样的传统 pub-sub 消息传递系统,您可能会发现一些不同之处。

  1. 消息一旦被消费,就会从 rabbitmq 中删除。但是,在 Kafka 中,它们不会被删除。它们保存在磁盘中。这个特性使 Kafka 可以充当流媒体平台。
  2. 在 pub-sub 系统中,您不能让多个服务消费相同的数据,因为消息在被一个消费者消费后就会被删除。而在 Kafka 中,您可以使用多个服务。这为许多机会打开了大门,例如Kafka 流、Kafka 连接。

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

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

相关文章

《智能新工厂规划白皮书》:新工厂发展趋势一览

在经济下行压力、人口红利消失、消费结构升级、疫情冲击等多种因素推动下,传统工厂的寒冬已至,必须要变革才能顺应未来的发展趋势。伴随着5G、工业互联网、AI、工业大数据、工业软件等技术或产品的发展融合,许多企业纷纷规划建设智能新工厂&a…

【Web服务器集群】Nginx网站服务

文章目录 一、Nginx 概述1.什么是 Nginx2.Nginx 的特点3.Nginx 应用场景 二、Nginx 服务基础1.编译安装 Nginx 服务1.1 布置环境1.2 安装依赖包1.3 创建运行用户、组1.4 编译安装 2.Nginx 的运行控制2.1 检查配置文件2.2 启动、停止 Nginx2.3 日志分割以及升级 Nginx 服务2.4 添…

Linux - 第18节 - 网络基础(传输层一)

目录 1.传输层 1.1.再谈端口号 1.2.端口号范围划分 1.3.认识知名端口号 1.4.两个问题 1.5.netstat命令 1.6.pidof命令 2.UDP协议 2.1.UDP协议格式 2.2.UDP协议的特点 2.3.面向数据报 2.4.UDP的缓冲区 2.5.UDP使用注意事项 2.6.基于UDP的应用层协议 3.TCP协议 3…

抖音seo源码开发代码分享

抖音seo优化,抖音seo源码开发,抖音排名系统源码开发展示实例: 思路:抖音seo源码,抖音seo矩阵系统底层框架上支持了从ai视频混剪,视频批量原创产出,云存储批量视频制作,账号矩阵&…

如何制作一个连杆组简易四足机器人

1. 运动功能说明 本文示例将实现R296样机连杆组简易四足机器人前进的功能。 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino Uno)‍ 扩展板 Bigfish2.1扩展板‍ 电池7.4V锂…

STM32F105RBT6 -- RCC 系统时钟

1. STM32F105RBT6 系统时钟树 2. 使用外部时钟给系统提供时钟HSE,外接一个8Mhz的晶振 3. 系统在启动的时候就会调用系统初始化函数,配置RCC 时钟系统,在调用main函数之前调用SystemInit函数 startup_stm32f10x_hd.s ; Reset handler Reset_…

电脑重装系统 / 系统迁移

1. 台式机太卡了,在网上买了个固态硬盘:250G, Kingston的,把C盘(系统盘)迁移到固态硬盘上去 2. 下载软件 https://www.diskgenius.cn/download.php3. 使用DiskGenius软件,可以方便地将系统从一…

【MySQL】- 04 MVCC 概要

MVCC 概要 事务概念事务的特性:ACID事务的操作隔离性引发的并发问题事务的隔离级别 LBCC&MVCCLBCC记录锁(Record Locks)间隙锁(GAP Locks)临键锁(Next-Key Locks)总结当前读什么是MVCC?什么…

[QT_055]设置QT源码调试(qtc+vs/mingw+msvc)

在开发过程中,我们经常用到调试功能,这样方便查找Bug;Qt是一个开源的框架,可以看到源码。虽然但大部分情况下,我们开发时,只是使用,并没有调试它的源码,但如果想深入了解Qt的一些机制…

对于创业者而言,租赁传统办公室和共享办公室有何不同

租办公室和创业密切相关。创业公司需要一个专业、高效、协作的工作环境来促进业务的开展,提升团队的工作效率和形象。租办公室可以为创业公司提供必要的场所和资源,方便团队成员之间的交流和合作,同时也可以作为公司的品牌形象和实力展示。此…

【IDEA】IntelliJ IDEA的使用 和 配置相关

idea安装后首次使用 新建项目 选择项目框架 下一步: 选择文件夹 隐藏文件不必要显示文件 在setings设置: 设置隐藏页面: 输入后回车 快捷键的配置 1.解决输入法冲突 关闭输入法系统功能快捷键 2.把eclipse的快捷键复用 常用快捷键&#…

Java学习(Tomacat)—— web的 请求request (post和get请求)和 响应response

引出 web的 请求request (post和get请求)和 响应response 请求request 请求:一切从浏览器发往服务器的都叫请求,包括从浏览器地址栏和网页上输入发出的。响应:一切从服务器发给浏览器的都叫响应 1.带数据的请求初步…

django读取csv文件数据生成可视化系统

Django是一个高效、灵活的Python Web框架,它可以快速地构建Web应用程序。在本篇文章中,我们将介绍如何使用django读取csv文件生成数据可视化系统。 1.使用虚拟环境创建项目 pip install virtualenv pip install virtualenvwrapper2.安装django模块,可使…

Oracle19C数据库迁移DM8库

Oracle19C数据库迁移DM8库 一、前期准备... 3 二、数据库信息查询... 3 三、DTS迁移... 6 Oracle数据库:... 6 达梦数据库... 7 1、新建工程... 8 2、新建迁移... 8 3、填写源库信息,使用指定驱动并自定义URL连接... 9 4、填写目标库信息... 10 …

书单 | IPD的12本书

随着IPD(集成产品开发)在IBM、华为等企业取得了巨大的成功,IPD逐渐被人们所知晓。诸多实践证明,IPD既是一种先进思想,也是一种卓越的产品开发模式,随着人们对IPD认识和探索,未来将会被应用到更多…

同步阻塞与异步非阻塞

同步阻塞消息处理 假如有这样一个系统功能,客户端提交Event至服务器,服务器接收到客户请求之后开辟线程处理客户请求,经过比较复杂的业务计算后将结果返回给客户端 以上设计存在几个显著的缺陷,具体如下。同步Event提交&#xf…

nginx(七十九)rewrite模块指令再探之(一)变量漫谈

一 set与变量 ① 知识回顾 rewrite模块 1) 关注一些易错点、难点的案例场景2) 本文内容很杂,建议读者选取感兴趣的阅读3) 重点关注: nginx.conf中的脚本类指令、本节关注if和set rewrite功能 ② 带着问题学习 1) 变量的作用域2) 变量的声明周期3) nginx变量…

《操作系统》by李治军 | 实验5 - 基于内核栈切换的进程切换

目录 一、实验目的 二、实验内容 三、实验准备 (一)TSS 切换 (二)基于堆栈的进程切换流程 四、实验过程 (一)实现 switch_to() 1、修改 schedule() 中的 switch_to() 2、实现 switch_to() 的汇编代…

企业网站架构部署与优化之LAMP

LAMP LAMP概述1、各组件的主要作用2、各组件安装顺序 编译安装Apache http服务编译安装MySQL服务编译安装PHP解析环境安装论坛 LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供静态和动态Web站点服务…

REST API和GraphQL API的比较

REST API REST(表述性状态传输)API 是一种应用程序接口 (API) 的架构风格,它使用 HTTP 请求来访问和使用数据。该数据可用于GET、PUT、POST和DELETE数据类型,指的是对资源的读取、更新、创建和删除操作。 RESTful API 使用 HTTP 方…