Apache Kafka基础认知-Part1

news2024/11/24 10:31:23
  • 微信公众号:阿俊的学习记录空间
  • 小红书:ArnoZhang
  • wordpress:arnozhang1994
  • 博客园:arnozhang
  • CSDN:ArnoZhang1994

Apache Kafka® 是一个分布式流处理平台,具备以下三大核心功能:
在这里插入图片描述

  1. 记录流的发布和订阅,类似于消息队列或企业消息系统。
  2. 以容错和持久化的方式存储记录流。
  3. 实时处理记录流。

Kafka 通常用于两类场景:

  1. 构建实时数据管道,可靠地在系统或应用之间传输数据。
  2. 构建实时流处理应用程序,对数据流进行转换或响应。

核心概念

Kafka 以集群形式运行在一个或多个服务器上,并支持跨数据中心部署。集群中,记录流被存储在“主题”(topics)中,每条记录包含一个键(key)、值(value)和时间戳(timestamp)。Kafka 提供四个核心 API:

  1. Producer API:允许应用将记录流发布到一个或多个主题。
  2. Consumer API:允许应用订阅一个或多个主题并处理记录流。
  3. Streams API:支持应用作为流处理器,消费多个主题的输入流并生成输出流。
  4. Connector API:用于构建生产者或消费者,将 Kafka 主题连接到外部系统,如关系数据库的每次变更。

Kafka 采用简单、高性能且与语言无关的 TCP 协议,支持向后兼容。除了 Java 客户端,Kafka 还支持多种语言客户端。

主题和日志

Kafka 的核心抽象是“主题”,即记录流的类别。一个主题可以被多个消费者订阅,并在集群中维护为分区日志。每个分区是一个有序且不可变的记录序列,且每条记录有唯一的偏移量标识。Kafka 集群持久保存所有已发布的记录,并根据配置的保留策略管理日志。

分布与容错

Kafka 将日志的分区分布到集群的多个服务器上,每个分区可复制到多个服务器,以实现容错。每个分区有一个“主节点”负责处理读写请求,当主节点故障时,从节点接管。

地理复制

Kafka 的 MirrorMaker 支持跨数据中心或云区域的地理复制,可用于数据备份或本地化需求。

生产者与消费者

生产者向指定的主题发布数据,并决定将记录分配到哪个分区。消费者通过消费者组名标记自己,主题的每条记录会发送给消费者组中的一个实例。

多租户与资源控制

Kafka 支持多租户,通过配置来控制哪些主题可以产生或消费数据。管理员还可以设置请求配额,以控制客户端的资源使用。

保证

Kafka 提供以下重要的保证:

  1. 生产者发送到特定主题分区的消息将按顺序追加到日志中。
  2. 消费者实例按日志中的存储顺序接收记录。
  3. 对于复制因子为 N 的主题,Kafka 可在最多 N-1 个服务器故障时不丢失已提交的记录。

Kafka 的多功能性

Kafka 同时具备队列和发布-订阅模式的功能。每个主题既支持负载均衡的处理,也支持多订阅者的扩展。Kafka 的消费者组概念实现了队列和发布-订阅模式的结合,使其既能进行并行处理,又能保持记录顺序。

Kafka 作为存储系统

Kafka 的数据持久性由磁盘存储和复制保证,能高效处理从 50KB 到 50TB 的数据。Kafka 不仅充当传输中的消息存储系统,还能以高性能、低延迟存储日志,提供类似分布式文件系统的功能。

Kafka 作为流处理平台

Kafka 的流处理器能够从输入主题中连续读取数据,进行处理并输出到目标主题。Kafka 提供的 Streams API 支持构建复杂的流处理应用,能够处理乱序数据、执行状态计算等复杂任务。

使用场景

Kafka 具有广泛的应用场景,包括:

  1. 消息传递:替代传统消息代理系统,具备高吞吐量、分区、复制和容错功能,适合大规模消息处理。
  2. 网站活动跟踪:用于构建用户活动跟踪管道,将数据实时发布到中心主题,供后续处理或分析。
  3. 度量指标:汇聚分布式应用的运行数据,提供集中的操作数据流。
  4. 日志聚合:抽象服务器日志数据为消息流,支持低延迟处理和多源数据聚合。
  5. 流处理:用于流水线中的多阶段数据处理,将原始数据转化为后续使用的新数据。
  6. 事件溯源:记录系统状态变化,为事件驱动应用设计提供支持。
  7. 提交日志:用作分布式系统的外部提交日志,帮助节点之间的数据复制。

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

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

相关文章

Java项目: 基于SpringBoot+mybatis+maven+vue共享汽车管理系统(含源码+数据库+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenvue共享汽车管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操…

持续领先,从IDC报告看联想企业级全栈能力如何加速智能化转型

作者 | 曾响铃 文 | 响铃说 如果问智能化转型浪潮中,哪个行业受到的关注最多?毫无疑问,与产业升级、宏观导向密切相关的制造业一定会是答案之一,智能制造已经成为普遍共识。 这其中,面向制造业的智能化基础设施承担…

PHP 学生成绩在线发布系统-计算机毕业设计源码81780

摘 要 计算机科学技术的飞速发展也更好地促进了高校信息化建设。为了适应新形势下更好地培养人才,高校在发展的过程中开始推进信息系统的建设。随着我国教育模式的不断改革和发展,越来越多的高校正在开展校园信息工程建设,以更好地提高高校…

dy弹幕 新版abogus 180+长度 signature分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…

初始操作系统篇(2)—— 操作系统的运行环境与体系结构

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 操作系统 目录 操作系统的运行环境 操作系统的运行机制 中断 系统调用 操作系统的体系结构 大内核 微内核 优点 缺点 操作系统的运行…

PostgreSql的备份和升级

目录 版本概述: 跨大版本数据迁移 QProcess 调用相关进程进行备份和恢复 版本概述: 该数据库版本主要分为主要版本和次要版本,大版本基本每年发布一次,小版本则每几个月即发布,更新较快。在10.0之前所使用的数据库版…

YOLOv11全网最新创新点改进系列:一文读懂YOLOv11算法!!!

YOLOv11全网最新创新点改进系列:免费送!!!改进且跑通的源码!!融入CBAM注意力,将通道注意力和空间注意力相结合,嘎嘎提升V11算法,叫叫首,改进速度遥遥领先&…

字符串拼接方法性能对比和分析

对字符串进行拼接主要有三种方法: 1.加号 2.concat方法 3.StringBuilder或者StringBuffer的append方法 下面看下性能对比,测试方法为各循环十万次,对比耗费时间。 测试性能 1.”"拼接 long start System.currentTimeMillis();String …

如何通过钢筋计来优化施工安全

在现代建筑工程中,施工安全一直是首要关注的问题。特别是在高层建筑、桥梁和地下工程等复杂结构中,确保钢筋的正确安装和稳定性能,直接关系到工程的整体安全性和耐久性。钢筋计作为一种专门用于测量和监测钢筋应力和应变的设备,其…

信号完整性分析概论

随着时钟频率的提高,发现并解决信号完整性问题成为产品开发的关键。成功的秘诀是精通信号完整性分析技术,并能采取高效设计过程以消除这些问题。只有熟地运用新的设计规则、新的技术和新的分析工具,才能实现高性能设计,并日益缩短…

第二份代码:PointNet++

参考的依然是Pytorch的实现,PointNet里面的主要实现部分都在utils.py里,里面从微小模块逐渐的,搭建出网络中的几个主要模块结构,包括sampling&group等,所以我们主要分析的就是这个utils.py里面的内容 这份Pytorch实…

PE结构之绑定导入表

打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…

LLM | Tokenization 从原理与代码了解GPT的分词器

声明:以上内容全是学习Andrej Karpathy油管教学视频的总结。 --------------------------------------------------------------------------------------------------------------------------------- 大家好。在今天我们学习llm中的Tokenization,即分…

快收藏!超实用标签title属性重写,让同事对你刮目相看

原生title属性的弊端 日常开发中,我们经常会遇到hover文本,显示其全部内容的需求。但是原生的title属性有两个很大的缺点 样式丑陋,无法更改 windows下的样式 mac下的样式 不够智能,属性显影只能人为控制 只要写了title属性&a…

使用Provide和Inject设计Vue3插件

使用provide和inject的Vue依赖项注入非常适合构建Vue3插件或避免prop多层传递。 尽管不经常使用它,但是您可以仅使用两个内置方法来实现依赖项注入:provide和inject。 查看Composition API文档,在Vue 3.0中,使用Provide和Inject进…

【笔记】Day2.5.1查询运费模板列表(未完

(一)代码编写 1.阅读需求,确保理解其中的每一个要素: 获取全部运费模板:这意味着我需要从数据库中查询所有运费模板数据。按创建时间倒序排序:这意味着查询结果需要根据模板的创建时间进行排序&#xff0…

汉语言文学做大数据七年实际工作经验分享普通人快来围观

(一)没有人带你 社会上,都很现实。就是进了公司,有师傅,师傅也没空带你,最多就是有空的时候帮你解决问题。 无论是做啥工作,都要靠自己努力。努力不会成为笑话,不努力就是笑话。就…

Crypto虐狗记---”你“和小鱼(五)

前言:剧情五 提示: 一种食物? 一种食物——培根:(A B 也暗示是培根加密) cyberpeace{attackanddefenceworldisinteresting} 密码学笔记——培根密码 - ILK - 博客园 (cnblogs.com)

Windows如何手动编辑右键上下文菜单 - 注册表通用方法

通过注册表编辑右键菜单的方法 文章目录 前言文件夹空白位置右键列表文件夹选中右键列表,有两个不同的路径:单个文件选中右键列表如何手动创建新的右键快捷按键: 前言 右键菜单有三类(具体可以自己分别按下面的类型点击尝试&…

uniapp 设置 tabbar 的 midButton 按钮

效果展示&#xff1a; 中间的国际化没生效&#xff08;忽略就行&#xff09; 示例代码&#xff1a; 然后在 App.vue 中进行监听&#xff1a; <script>export default {onLaunch(e) {// #ifdef APPuni.onTabBarMidButtonTap(()>{console.log("中间按钮点击回调…