大数据之Kafka入门介绍、架构与工作流程

Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发并于2011年开源。它是一个高吞吐量、低延迟的消息系统,支持实时数据处理和大规模消息传递,并且在大数据生态系统中被广泛用于构建实时数据管道和流应用。

Kafka 架构:

  1. Broker(代理服务器)

    • Kafka 服务的核心是 Broker,它是运行 Kafka 服务的进程,多个 Broker 可以组成一个集群,每个 Broker 都可以保存一部分消息数据。
    • Broker 接受生产者发送的消息,并将这些消息持久化存储到磁盘上的日志文件中;同时,它也响应消费者对消息的读取请求。
  2. Topic(主题)

    • Kafka 中的消息按照 Topic 进行分类,每个 Topic 可以被划分为多个 Partition(分区),每个 Partition 在物理上对应一个有序的日志文件。
    • 分区的存在使得 Kafka 能够水平扩展并实现高效的并发写入和读取操作。
  3. Producer(生产者)

    • 生产者负责发布消息到指定的 Topic。它们可以选择将消息发送到某个 Topic 的具体 Partition,或者让 Kafka 自动决定。
  4. Consumer(消费者)

    • 消费者订阅 Topic 并从 Broker 中读取消息。消费者可以独立地消费来自 Topic 中不同 Partition 的消息,且可以根据 Group ID 归属于不同的消费组,从而实现消息的负载均衡和多实例间的容错性。
  5. ZooKeeper(协调服务)

    • 虽然 Kafka 0.9版本以后逐渐减少了对 ZooKeeper 的依赖,但在较早版本中,ZooKeeper 用于管理集群元数据、Broker 注册表、消费者的消费状态以及 Consumer Group 管理等。

Kafka 工作流程:

  1. 消息生产

    • 生产者将消息序列化后,选择或由 Kafka 分配一个 Partition,然后将其推送到对应的 Broker 上。
    • Broker 将接收到的消息添加到该 Partition 的末尾,并记录下消息的偏移量(offset)作为唯一标识。
  2. 消息存储

    • Kafka 使用磁盘进行消息存储,Partition 日志中的消息会定期进行压缩,提高存储效率。
    • 每个 Partition 的消息都是有序且不可变的,新消息总是追加到 Partition 的末端。
  3. 消息消费

    • 消费者通过拉取模式从 Broker 获取消息,而非 Broker 主动推送。
    • 消费者根据自己的消费速度和需求,从各个 Partition 中指定的偏移量开始读取消息。
    • 消费者可以通过提交 offset 到 Kafka 或 ZooKeeper 来跟踪自己已消费的位置。
  4. 消费组与分发策略

    • 多个消费者可以形成一个消费组,同一消费组内的消费者共同消费一个 Topic 的所有 Partition,但每个 Partition 的消息只会分配给该组内一个消费者,这样实现了消息的负载均衡。
    • 不同消费组之间则可以各自独立消费 Topic 的全部消息,实现发布/订阅模型。

总的来说,Kafka 提供了一个可伸缩、持久化且容错性强的消息队列解决方案,适用于海量实时数据的传输与处理场景。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值