kafka工作原理介绍

本文介绍了Kafka的工作原理,包括Kafka中的术语,如Broker、Topic、Partition、Producer和Consumer,以及消息发送语义、可用性和一致性。Kafka通过Partition实现消息有序,通过Consumer Group实现消息的并发消费。它采用pull模式消费消息,保证了消息的持久性和高可用性,同时也探讨了其一致性策略和数据持久化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两张图读懂kafka应用:



Kafka 中的术语

  •  broker:中间的kafka cluster,存储消息,是由多个server组成的集群。
  •  topic:kafka给消息提供的分类方式。broker用来存储不同topic的消息数据。
  •  producer:往broker中某个topic里面生产数据。
  •  consumer:从broker中某个topic获取数据。

Kafka 中的术语设计:

1、Broker

      中间的kafka cluster,存储消息,是由多个server组成的集群。


2、topic与消息

kafka将所有消息组织成多个topic的形式存储,而每个topic又可以拆分成多个partition,每个partition又由一个一个消息组成。每个消息都被标识了一个递增序列号代表其进来的先后顺序,并按顺序存储在partition中。



这样,消息就以一个个id的方式,组织起来。

  •  producer选择一个topic,生产消息,消息会通过分配策略append到某个partition末尾。
  •  consumer选择一个topic,通过id指定从哪个位置开始消费消息。消费完成之后保留id,下次可以从这个位置开始继续消费,也可以从其他任意位置开始消费。

上面的id在kafka中称为offset,这种组织和处理策略提供了如下好处:

  •  消费者可以根据需求,灵活指定offset消费。
  •  保证了消息不变性,为并发消费提供了线程安全的保证。每个consumer都保留自己的offset,互相之间不干扰,不存在线程安全问题。
  •  消息访问的并行高效性。每个topic中的消息被组织成多个partition,partition均匀分配到集群server中。生产、消费消息的时候,会被路由到指定partition,减少竞争,增加了程序的并行能力。
  •  增加消息系统的可伸缩性。每个topic中保留的消息可能非常庞大,通过partition将消息切分成多个子消息,并通过负责均衡策略将partition分配到不同server。这样当机器负载满的时候,通过扩容可以将消息重新均匀分配。
  •  保证消息可靠性。消息消费完成之后不会删除,可以通过重置offset重新消费,保证了消息不会丢失。
  •  
Kafka是一个开源分布式流处理平台,由LinkedIn开发并开源于2011年。它的核心是基于发布订阅模型的消息队列服务,主要用于实时数据处理和日志收集。以下是Kafka工作原理的详细介绍: 1. **消息生产者**(Producer):生产者将数据(通常是键值对或JSON等结构化的数据)发送到一个或多个主题(Topic)。生产者可以并发地向多个分区(Partition)推送消息,每个分区都有一个唯一的偏移量(Offset),用于跟踪消息的位置。 2. **消息主题**(Topic):主题是Kafka的核心概念,它类似于数据库表,存储一系列有序的消息。每个主题有多个分区,可以水平扩展以支持高吞吐量。 3. **消息分发**:生产者负责选择消息需要被发布的分区,并将消息序列化成二进制形式,然后推送到指定分区。Kafka使用一种叫做“复制因子”(Replication Factor)的设置,确保消息被多个副本保存,提高容错性和可靠性。 4. **消息消费者**(Consumer):消费者从主题中消费消息。它们可以是单线程或多线程的,甚至可以是异步的。消费者通过拉取(Polling)或事件驱动的方式获取最新的消息。 5. **消息持久化**:Kafka保证了消息至少被一个副本保存,即使生产者或消费者出现问题,消息也不会丢失。消息的持久化主要依赖于磁盘,但也支持内存级别的消息缓存。 6. **解耦与弹性**:由于消费者可以随时开始消费,而不需要等待所有的消息都被生产出来,因此Kafka提供了一种消费模式,即消息堆积(Changelog),使得系统能够快速恢复和处理延迟。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值