Kafka 架构

1 整体架构

在这里插入图片描述

1.1 Zookeeper

Zookeeper 是一个分布式协调服务,用于管理 Kafka 的元数据。它负责维护 Kafka 集群的配置信息、Broker 列表和分区的 Leader 信息。
Zookeeper 确保了 Kafka 集群的高可用性和可靠性。
但 Zookeeper 已经成为 Kafka 性能瓶颈,Kafka 正在逐渐去 Zookeeper 化。

1.2 Broker

每个kafka server称为一个Broker,多个borker组成kafka cluster。

1.3 Topic

Topic 是 Kafka 中用于组织数据的逻辑单元,类似于数据库中的表。
一个Broker上可以创建一个或者多个Topic。同一个topic可以在同一集群下的多个Broker中分布

1.4 Partition

Partition 是 Topic 的子单元,用于实现数据的分布式存储和并行处理。每个 Partition 是一个有序的、不可变的消息队列,新的消息追加到队列末尾。
Kafka 会为每个 Topic 维护了多个 Partition。
每个 Partition 有一个 Leader 和多个 Follower 副本。Leader 负责处理所有读写请求,Follower 副本被动地从 Leader 同步数据。如果 Leader 发生故障,Zookeeper 会选举一个新的 Leader 以保证高可用性。比如图中,Broker 1 是 Topic 1 的 Partition 1 的 Leader,是 Partition 2、3 的 Follower。

2 生产者与消费者

在这里插入图片描述

2.1 生产者

生产者是向 Kafka 发送数据的客户端应用程序。生产者将消息发送到特定的 Topic 和 Partition 中。

向 Partition 发送数据的过程:

  • 生产者根据分区策略(如轮询、哈希分区键)选择目标 Partition
  • 生产者将消息发送到选定的 Partition,Leader 接收到消息后将其追加到日志中。
  • 生产者可以选择等待 Leader 确认消息已写入并复制到一定数量的 Follower 后再继续发送下一个消息,以确保数据可靠性。

2.2 消费者

消费者是从 Kafka 中读取数据的客户端应用程序。消费者订阅一个或多个 Topic,并从中消费消息。
消费者组

  • 消费者组是 Kafka 的一项功能,允许多个消费者共同消费一个 Topic 的消息。
  • 每个消费者组中的消费者都会从一个或多个 Partition 中读取消息,但同一 Partition 的消息只会被一个组内的消费者读取,以实现负载均衡。
  • 如果一个消费者挂掉,组内的其他消费者会自动接管它的分区,以确保消息不会丢失。

消费数据的过程:

  • 消费者启动时连接到Kafka集群并订阅一个或多个主题。
  • 通过poll方法,消费者从分配的分区中拉取消息并进行处理。
  • 处理完成后,消费者会提交偏移量以标识已处理的位置。
  • Kafka会在消费者数量变化时触发分区再均衡,确保每个分区都有消费者进行消费,避免数据丢失或重复消费。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 12:34:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 12:34:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 12:34:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 12:34:04       20 阅读

热门阅读

  1. 自动化测试文档

    2024-06-10 12:34:04       9 阅读
  2. 网络编程之XDP技术应用

    2024-06-10 12:34:04       8 阅读
  3. 机器学习笔记——循环神经网络

    2024-06-10 12:34:04       9 阅读
  4. docker是什么?和kubernetes(k8s)是什么关系?

    2024-06-10 12:34:04       10 阅读
  5. C++进阶教程

    2024-06-10 12:34:04       16 阅读
  6. B3637 最长上升子序列

    2024-06-10 12:34:04       10 阅读
  7. Spring知识点总结

    2024-06-10 12:34:04       11 阅读
  8. 矩阵练习1

    2024-06-10 12:34:04       8 阅读
  9. Sass详细介绍

    2024-06-10 12:34:04       13 阅读