Kafka最全详解(6大架构原理图解)

来源:mikechen的互联网架构


Kafka是非常重要的消息中间件,是构建高并发的基石,也是大厂重点考察内容,下面我就全面来详解Kafka



Kafka

Kafka是一个开源的分布式流处理平台,最初由LinkedIn开发并于2011年开源,它是一种高吞吐量、可扩展的消息队列系统,旨在处理大量的实时数据流。

Kafka的特点包括:

1.高吞吐量

Kafka被设计为一个高性能的消息队列系统,能够处理大规模的数据流,并提供低延迟的数据传输,它能够以每秒数十万条消息的速度进行读写操作。

2.分布式系统

Kafka是一个分布式系统,易于向外扩展,所有的producer、broker和consumer都会有多个,均为分布式的。

3.持久化存储

Kafka将所有的消息持久化地存储在磁盘上,因此即使在消息被消费之后,消息仍然可以被保留一段时间,这使得Kafka非常适合构建可靠的数据管道和进行数据回放。

4.可扩展性

Kafka支持横向扩展,机器不够加机器。


Kafka架构

Kafka架构,如下图所示:

Kafka的架构是分布式的,由多个组件组成,包括:生产者(Producers)、消费者(Consumers)、主题(Topics)、分区(Partitions)和代理(Brokers)。

以下是Kafka的典型架构组成:

1、主题(Topics)

Kafka主题:指的是消息的分类、或流的名称,主题用于逻辑上组织数据,使得相似类型的数据能够被集中在一起。

例如:一个电子商务应用程序可能有:一个主题用于订单数据,另一个主题用于用户行为数据,这就是主题。

Kafka主题中的数据是持久的,一旦数据被写入主题,它将被保存在 Kafka 集群中。

2、分区(Partitions)

每个主题,可以被分为多个分区,分区是数据的物理存储单位,每个分区都是一个有序的消息日志。

每个分区中的消息,按照其发布的顺序进行存储,并且每个消息都被分配了一个唯一的偏移量(Offset)。

通过增加分区的数量,可以水平扩展 Kafka 集群的处理能力。

每个分区可以在集群的不同节点上进行存储和处理,从而提高了系统的可扩展性。

3、代理(Brokers)

代理是Kafka集群中的服务器节点,每个代理都是一个独立的Kafka服务器,负责消息的存储和转发。

代理接收来自生产者的消息,并将其持久化到磁盘上的日志文件中。

除此之外,它还负责处理消费者的读取请求、和消息的复制。

4、生产者(Producers)

生产者:负责将消息发布到Kafka的主题。

它们将消息发送到特定的主题、和分区,并且可以选择指定消息的键(Key),以便控制消息的分区策略。

5、消费者(Consumers)

消费者订阅一个、或多个主题,并从相应的分区中读取消息。

消费者可以以不同的消费组(Consumer Group)的形式进行组织,每个消费组可以有多个消费者,每个消费者负责处理一个或多个分区。

消费者可以按照自己的速度消费消息,并且可以随时重新读取旧的消息。

6、ZooKeeper

ZooKeeper负责:管理代理的元数据、领导者选举、消费者组的协调等关键任务。

Kafka使用ZooKeeper来协调、和管理集群中的代理和消费者。


Kafka应用场景

Kafka的应用场景包括:日志收集、事件驱动架构、实时分析、指标监控等,主要用于构建实时流数据管道和流处理应用程序。

  1. 消息系统:Kafka可以作为一个高效的消息中间件,用于解耦生产者和消费者。

  2. 指标监控:Kafka可以用于实时监控和分析,将指标数据发送到Kafka,然后通过流处理工具(如Spark Streaming)进行处理和告警。

  3. 事件驱动架构:Kafka可作为事件驱动架构的一部分,用于收集和传递各种事件。

  4. 日志聚合:Kafka可以作为日志聚合的解决方案,将各种日志数据集中聚合到一个地方。

  5. 分布式追踪:Kafka可以用于分布式系统跟踪,将各种数据发送到Kafka中进行实时处理和分析。

总之,Kafka是一个分布式流处理平台,用于高性能、可靠地处理实时数据流,并提供了可靠的消息传递、持久化存储和容错机制。

以上


请使用浏览器的分享功能分享到微信等