Apache Kafka基础认知-Part1

  • 微信公众号:阿俊的学习记录空间
  • 小红书: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. 提交日志:用作分布式系统的外部提交日志,帮助节点之间的数据复制。
posted @   Arno_z  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示