0


Kafka

1. 什么是 Kafka?

Kafka 是一个 分布式流处理平台,主要用来处理 实时数据流。它最初由 LinkedIn 开发,现在是 Apache 软件基金会的一个开源项目。

Kafka 通常被用作 消息队列数据流处理系统,提供高吞吐量和高可靠性的实时数据分发能力。

Kafka特性:

  • 发布/订阅 模型。
  • 持久化数据存储。
  • 高吞吐量、低延迟。
  • 横向扩展能力。

2. Kafka 的核心概念

2.1 核心组件

组件描述Topic生产者将消息发送到指定的 Topic,消费者订阅 Topic 接收消息。Partition每个 Topic 被分成若干分区,分区是 Kafka 中的存储单元。Offset分区内消息的唯一标识,消费者通过 Offset 跟踪消息的位置。BrokerKafka 的服务器节点,负责存储和分发消息,一个 Kafka 集群由多个 Broker 组成。Producer消息生产者,将消息发送到 Kafka。Consumer消息消费者,从 Kafka 的分区中读取消息。Consumer Group消费者组,多个消费者可以协作消费一个 Topic,确保分区被唯一消费。ZooKeeperKafka 的元数据管理工具。

2.2 Kafka 的消息架构图

生产阶段:
producer将消息发送到Topic分区中去,写入leader目录中去

存储阶段:

每个leader会复制多个副本Segment 文件存储消息,支持高效的顺序写入和查询。

消费阶段:
Consumergroup 从分区的 Leader 拉取消息,按 Offset 跟踪消费进度。

2.3消息流转的详细流程

Producer发送消息:

1.选择一个目标Topic:

  • Producer将消息发送给Topic分区
  • Producer会指定一个Topic 进行发送

2.进行分区:

  • Kafka使用分区策略进行分区
  • 指定一个Partition来分配分区作为存储单元
  • 没有指定的时候则采用轮询方式分配分区

3.将消息发送给分区下的leader:

  • Producer通过Kafka与leader进行交互
  • Producer将消息发送给分区下的leader

4.状态确认机制:

Producer可以配置状态来确认消息状态:

  • 0:producer发送给broker就结束(速度最快,但是安全性最低)
  • 1:producer发送给leader写入确认之后返回 (速度中等,安全性中等)
  • all:所有的副本确认写入之后返回 (速度最慢,安全性最高)
Broker存储消息:

1.Leader写入消息:

分区里面的Leader负责接受producer发送的消息,分为三个文件.index .log .timeindex文件

其中.log是正真的消息存储文件,.index是索引文件,.timeindex是时间索引文件

2.复制Follower副本:

Follower副本会复制Leader里面的所有内容,作为同步,副本跟Leader是在同一个分区下面,但是分布在分布在不同的broker里面,Leader跟Follower副本是通过选举来实现的,如果当leader宕机的时候,会重新选取一个同步过的Follower副本来重新成为Leader然后在同步给其他Follower副本,这也是为什么Leader跟Follower副本没有在一个Broker下的原因,防止当一个Broker宕机的时候,消息丢失

3.消息持久化:

  • 消息会写入磁盘的Segment文件进行存储
  • 消息按照offset进行存储,支持快速检索

4.消息清理策略:

  • 通过时间进行清理,默认超过7天之后会进行清除
  • 通过大小进行清理,默认超过1G之后会进行清除
  • 可以通过配置来设定具体的时间或者大小
Cusomer拉取消息:

Cusomer订阅Topic:

  • Cusomergroup订阅一个或多个Topic
  • Kafka会将分区分配给消费者组中的每一个消费者
  • 每个分区只能被一个消费者消费

Cusomer消费消息:

  • Cusomer从分区中的leader拉取消息
  • 拉取的消息通过offset标识,cusomer可以通过offset指定从哪个消息开始拉取

消费策略:

  • Cusomer会只消费最新的消息
  • Cusomer从分区起始的offset开始消费消息
  • Cusomer从指定的offset开始消费消息

3.Kafka的优缺点

优点:

  • 高吞吐量:顺序写磁盘、批量处理消息。
  • 持久化存储:消息可以保留指定时间,允许消费者重复读取。
  • 分布式架构:支持水平扩展,轻松处理海量数据。
  • 灵活消费模型:支持广播和分布式消费。

缺点:

  • 存储占用较大,需合理规划存储资源。

4.kafka的使用场景

在电商系统中,kafka主要可以应用于记录用户行为,电商的访问量大的时候,用户行为量每天将会成倍增加,使用RabbitMQ进行订单用户的消息处理还可以,但是在应对大量的用户行为的时候,RabbitMQ就显得有些捉襟见肘了

标签: kafka 分布式

本文转载自: https://blog.csdn.net/weixin_43169845/article/details/144076115
版权归原作者 沉淀小伙子 所有, 如有侵权,请联系我们删除。

“Kafka”的评论:

还没有评论