Kafka架构和工作流程深入解析

本文详细解析Kafka的架构、消息写入流程、文件存储机制、分区策略、数据可靠性保证、消费方式及分区分配策略。Kafka通过Zookeeper管理集群,使用Pull模式消费,提供 Exactly Once 语义,确保数据一致性。通过顺序写入、内存映射文件和零拷贝技术,实现高吞吐率。
摘要由CSDN通过智能技术生成

Kafka中的常用术语

  • Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker
  • Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)
  • Partition:parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件
  • Producer:负责发布消息到Kafka broker
  • Consumer:消费消息。每个consumer属于一个特定的consumer group(可为每个consumer指定group
    name,若不指定group name则属于默认的group)。使用consumer high level
    API时,同一topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer
    group可同时消费这一消息。

Kafka架构图示例

在这里插入图片描述
一个典型的kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行rebalance。producer使用push模式将消息发布到broker,consumer使用pull模式从broker订阅并消费消息。

生产者写入消息流程

在这里插入图片描述

  1. producer先从zookeeper的 "/brokers/…/state"节点找到该partition的leader;
  2. producer将消息发送给该leader;
  3. leader将消息写入本地log;
  4. followers从leader pull消息,写入本地log后向leader发送ACK;
  5. leader收到所有ISR中的replication的ACK后,增加HW(high watermark,最后commit 的offset)并向producer发送ACK。

文件存储机制

Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。
topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。
在这里插入图片描述
由于生产者生产的消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment。每个segment对应两个文件——“.index”文件和“.log”文件。“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中message的物理偏移地址。
在这里插入图片描述
index和log文件以当前segment的第一条消息的offset命名。下图为index文件和log文件的结构示意图:
在这里插入图片描述

Kafka分区策略

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值