02、Kafaka 简介

02、Kafka 简介

1、 Kafka 简介

Apache Kafka 是一个分布式的发布-订阅消息系统,最初由 LinkedIn 公司开发,并在 2010 年贡献给了 Apache 软件基金会,成为一个顶级开源项目。Kafka 设计之初是为了满足高吞吐量、可扩展性、持久性、容错性以及高并发的需求,它非常适合用于实时数据流的处理,包括日志聚合、事件源、流式处理等场景。

Kafka 的架构包括以下几个关键组件:

  1. 生产者(Producer):负责发布消息到 Kafka 的主题(Topic)。
  2. 消费者(Consumer):订阅一个或多个主题,并从 Kafka 集群中拉取(Pull)数据进行消费。
  3. Broker:Kafka 集群中的服务器,负责存储生产者写入的消息。
  4. 主题(Topic):Kafka 中的消息分类,每个主题可以分成多个分区(Partition)以支持数据的水平扩展和并行处理。
  5. 分区(Partition):是主题的一个子集,可以分布在不同的 Broker 上以实现负载均衡。
  6. 副本(Replica):为了保证数据的可靠性,每个分区都有多个副本,其中一个是领导者(Leader),其他的是追随者(Followers)。
  7. ZooKeeper:Kafka 集群依赖 ZooKeeper 来管理集群中的节点状态、分区状态以及副本状态。

Kafka 的主要特点包括:

  • 高吞吐量和低延迟:Kafka 能够以极低的延迟处理高吞吐量的数据。
  • 持久性和可靠性:消息被持久化到磁盘,并且支持数据备份以防止数据丢失。
  • 可扩展性:Kafka 集群支持热扩展,可以轻松添加更多的 Broker 来扩展系统。
  • 容错性:允许集群中的节点失败而不会丢失数据。
  • 高并发:支持数千个客户端同时读写。

Kafka 常用于以下场景:

  • 日志收集:集中收集各种服务的日志,提供统一的日志分析接口。
  • 消息系统:解耦生产者和消费者,提供异步处理能力。
  • 用户活动跟踪:记录用户的各种活动,如浏览、搜索、点击等,供实时监控分析或离线分析挖掘。
  • 流式处理:与如 Spark Streaming 和 Storm 等流处理系统结合使用。
  • 事件源:作为事件源,记录系统中发生的所有事件。

Kafka 的设计思想和架构使其成为了大数据处理领域中一个非常流行的工具。

2、 Kafka 的设计目标

Kafka 的设计目标主要围绕以下几个核心点:

  1. 高吞吐率:Kafka 旨在实现高吞吐量的消息处理,即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。
  2. 消息持久化:Kafka 提供了以时间复杂度为 O(1) 的方式进行消息持久化的能力,保证了对 TB 级以上数据也能保证常数时间复杂度的访问性能。
  3. 完全分布式:Kafka 支持消息分区以及分布式消费,并保证分区内的消息顺序,同时支持 Producer、Broker、Consumer 的水平扩展。
  4. 同时支持在线和离线数据处理:Kafka 能够同时满足实时数据处理和离线批处理的需求。
  5. 在线水平扩展(Scale out):Kafka 支持在线水平扩展,可以轻松地通过增加更多的服务器来扩展系统。
  6. 容错性:Kafka 通过副本和分区机制提供了容错性,能够在出现机器故障时保证系统的可靠性和数据的不丢失。
  7. 高并发:Kafka 支持数千个客户端同时读写,适合大规模分布式系统。
  8. 解耦和扩展性:Kafka 允许系统的不同组件以消息为中心进行通信,从而实现解耦,同时提供了系统的可扩展性。
  9. 端到端的精确处理:Kafka 通过与外部存储系统的协作,提供了端到端的精确一次处理语义(Exactly once),尽管这通常需要额外的机制来实现。
  10. 灵活性和峰值处理能力:Kafka 能够使关键组件顶住突发的访问压力,同时保持系统的灵活性。

Kafka 的设计哲学和目标使其成为了一个在大数据处理领域非常流行的工具,尤其适用于需要高吞吐量、数据持久化和分布式系统的场景。

3、 Kafka 的核心概念

image-20240506112254438

Kafka 的核心概念包括以下几个方面:

  1. 生产者(Producer)
    • 负责创建和发送消息到 Kafka 集群中的特定主题。
  2. 消费者(Consumer)
    • 从 Kafka 集群中的主题拉取(pull)消息进行处理。
  3. Broker
    • Kafka 集群中的一个节点,负责维护和管理消息数据。
  4. 主题(Topic)
    • 消息的分类单位,生产者将消息发送到主题,消费者从主题读取消息。
  5. 分区(Partition)
    • 主题可以被划分为一个或多个分区,以支持大规模数据的并行处理和负载均衡。
  6. 副本(Replica)
    • 为了提高消息的可靠性,每个分区都有多个副本,其中一个副本是领导者(Leader),其他副本是追随者(Followers)。
  7. 领导者(Leader)
    • 分区中的一个副本作为领导者,负责处理所有对该分区的读写请求。
  8. 追随者(Follower)
    • 分区中的其他副本作为追随者,复制领导者中的数据以提供冗余。
  9. ZooKeeper
    • Kafka 集群使用 ZooKeeper 来管理集群的元数据以及进行领导者选举等操作。
  10. 消费组(Consumer Group)
    • 消费者可以组成一个组,以便能够并行地消费消息。每个分区只能由消费组中的一个消费者消费。
  11. 消息(Message)
    • Kafka 中的基本数据单元,包含有效载荷(payload)和元数据(如键和时间戳)。
  12. 偏移量(Offset)
    • 消息在分区中的序列号,用于追踪消息的位置和确保消息顺序。
  13. 持久性(Durability)
    • Kafka 提供了持久化消息的机制,确保消息不会因为系统故障而丢失。
  14. 可扩展性(Scalability)
    • Kafka 支持在线水平扩展,可以通过增加更多的 Broker 来扩展系统。
  15. 流处理(Stream Processing)
    • Kafka 支持流处理,允许对实时数据流进行处理和分析。
  16. 消息保留策略(Retention Policy)
    • Kafka 允许设置消息的保留时间或大小,超过限制后,旧的消息将被删除。
  17. 高吞吐量(High Throughput)
    • Kafka 设计用于高吞吐量的消息处理,即使在廉价的硬件上也能实现高性能。

这些核心概念共同构成了 Kafka 强大的消息系统,使其在分布式系统中的数据传输和处理方面表现出色。

4、 Kafka 的核心 API

Kafka 提供了几个核心的 API,以支持不同类型的数据处理和应用场景:

  1. Producer API
    • 允许应用程序向一个或多个 Kafka 主题发送消息记录。生产者可以批次发送消息以提高效率。
  2. Consumer API
    • 允许应用程序订阅一个或多个主题并处理生成的记录流。消费者可以从主题读取数据。
  3. Streams API
    • 允许应用程序作为一个流处理器,从一个或多个主题中消费输入流,并为其生成输出流,有效将输入流转换为输出流。
  4. Connector API
    • 允许构建和运行可重用的生产者或消费者,将 Kafka 主题连接到现有的应用程序或数据系统,如关系型数据库。

这些 API 使得 Kafka 不仅可以作为简单的消息队列使用,还可以构建复杂的流处理应用程序。客户端和服务器之间的通信是通过简单、高性能、语言无关的 TCP 协议完成的,此协议已版本化并保持与旧版本的向后兼容性。Kafka 提供了多种语言的客户端库,以支持不同的编程环境。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VALSE 2024特邀报告内容解析|多模态视觉融合方法:是否存在性能极限?

2024年视觉与学习青年学者研讨会(VALSE 2024)于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道,方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

高频次的低价监测如何实现

品牌在做控价的过程中,需要对渠道中的低价数据进行监测,但价格数据变化快,涉及的促销信息也很多,如何将这些变化的数据监测到位,同时对于低价的凭证还要截图留证,以便有效的进行渠道治理,这就需…

python菜鸟级安装手册

python安装教程 电脑-右键-属性,确认系统类型和版本号,比如本案例系统是64位 win10 点击python官网,进行下载 适用于 Windows 的 Python 版本 |Python.org 选择第一个安装程序64位即可满足需要, 嵌入式程序包是压缩包版本&…

美国站群服务器的CN2线路在国际互联网通信中的优势?

美国站群服务器的CN2线路在国际互联网通信中的优势? CN2线路,或称中国电信国际二类线路,是中国电信在全球范围内建设的高速骨干网络。这条线路通过海底光缆系统将中国与全球连接起来,为用户提供高速、低延迟的网络服务。CN2线路在国际互联网…

检测服务器环境,实现快速部署。适用于CRMEB_PRO/多店

运行效果如图: 最近被好多人问,本来运行的好好的,突然swoole就启动不了了。 本工具为爱发电,如果工具正好解决了您的需求。我会很开心 代码如下: """本脚本为爱发电by:网前雨刮器 """…

websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步

文章目录 数据准备(阻塞和非阻塞)、数据读写(同步和异步)小总结(陈硕老师的总结) 知识拓展同步执行实例异步编程实例 八股 数据准备(阻塞和非阻塞)、数据读写(同步和异步) 无论是什么样的IO都包含两个阶段:数据准备和数据读写。 我们的网络IO…

Navicat for MySQL Mac:数据库管理与开发的理想工具

Navicat for MySQL Mac是一款功能强大的数据库管理与开发工具,专为Mac用户设计,旨在提供高效、便捷的数据库操作体验。 它支持创建、管理和维护MySQL和MariaDB数据库,通过直观的图形界面,用户可以轻松进行数据库连接、查询、编辑和…

第一批用AI绘画做设计的人,已经碾压同事了!

“上辈子作孽,这辈子作图。” 设计师的心累只有自己知道。熬夜肝图一个月,好不容易准时下班,饭刚送到嘴边,工作群消息开始疯狂轰炸,领导夺命连环催进度… 2年工作时间,等于别人工作了6年,疯狂加…

HTTP 多个版本

了解一下各个版本的HTTP。 上个世纪90年代初期,蒂姆伯纳斯-李(Tim Berners-Lee)及其 CERN的团队共同努力,制定了互联网的基础,定义了互联网的四个构建模块: 超文本文档格式(HTML) …

深度学习之基于Resnet50卷积神经网络脊柱骨折CT影像图片诊断系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 脊柱骨折是骨科中一种常见的损伤类型,准确的诊断对于患者的治疗和康复至关重要。传统的脊…

信创 | 2023年中国信创产业深度研究报告(完整版)

信创产业研究报告 免责声明:本文资料来源于“第一新声”,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将在第一时间协商版权问题或删除内容! 获取文中相关的PPT资料,请关注文末公众号“程序员…

【Java EE】多线程(三)线程状态

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

Win10彻底关闭Antimalware Service Executable解决cpu内存占用过高问题

1,win键R打开运行输入gpedit.msc,即可打开本地组策略编辑器 2.依次打开:管理模板----windows组件----windows Defender-----实时保护 3.然后鼠标双击右侧的“不论何时启用实时保护,都会启用进程扫描。勾选 已禁用,就可…

EPSON的温补晶振TG7050SKN

EPSON公司推出的温补品振(TCXO)TG7050SKN,尺寸大小为7.0x5.0x1.5 mm,具有高稳定性(105℃℃高温)等特点,可输出10MHz~54MHz的频率可应用在网络同步,BTS,微波,以及需要符合Stratum3、SyncE和IEEE1588等规范的…

JVM笔记3-经典的垃圾收集器

上图展示了7种,适用于不同分代中的收集器。如果两者之间由连线,说明可以搭配使用。 PS:在JDK8中将SerialCMS和ParNewSerial Old的组合声明为废弃,并且在JDK9中完全取消了这两种组合的支持。 1、Serial收集器 Serial收集器是JVM中…

护士节趣味互动h5小游戏的作用是什么

护士节也同样气氛满满,护士总量非常高,针对此群体不少行业都可借势营销,为自己的生意及品牌赋能,奖品吸引用户参与,趣味形式及控件达成多种效果。 在【雨科】平台拥有多款护士节互动小游戏类型,页面元素/背…

5000亿参数来了:微软将推出 MAI-1 模型硬刚谷歌和OpenAI|TodayAI

美国的科技巨头微软公司,正在积极扩展其人工智能(AI)技术的领域。最新消息显示,微软将推出一款名为MAI-1的全新AI模型,其规模巨大,预计将拥有5000亿个可调参数。这一开发工作由Inflection AI的CEO穆斯塔法苏…

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…

社交媒体数据恢复:抖音、火山版、极速版

抖音是一款非常受欢迎的短视频社交平台,在使用过程中,有时候我们会不小心删除了重要的聊天记录。那么,如何恢复抖音聊天记录呢?下面,我将为大家带来一份详细的抖音聊天记录数据恢复教程。 一、抖音聊天记录恢复方法 打…

Angular中组件之间的传值

Angular中组件之间的传值 文章目录 Angular中组件之间的传值前言一、父亲向儿子传值二、儿子向父亲传值三、爷爷向孙子传值四、兄弟之间的传值 前言 Angular的组件是构成应用的基础单元,它们封装了HTML模板、TypeScript代码以及CSS样式,以实现特定的功能…