Kafka: Concept: Core

31st August 2021 at 6:36pm

Message

一条 message 是 Kafka 的最小纪录单位。

Kafka 并不关心 message 的内容。message 的内容格式是任意的,只要生产者和消费者都理解这个格式。

Message 可以带一个可选的元数据 key,可以被用来判断 msg 应该被写入哪个分区。

为了性能,多条 message 会被攒成一批次(batch)再被写入。

Topic 及 partition

Topic 像是 DB 中的 table,其下的 msg 的 schema 应该是一致的。(当然 schema 也会演变出新的。)

Partition 则是个 append-only 的日志文件。Msg 会以 append-only 形式写进来,然后按顺序被消费。

一个 topic 往往会有多个分区。不同分区可以存储在一个 Kafka 集群的不同 broker 中,以此提供了数据的冗余性(redundancy)和可扩展性(scalability)。

流(stream) 一般被认为是指一个 topic。

Broker

一个 broker 指的是一个 Kafka server。一个 Kafka 集群可以由多个 broker 组成。

Producer 及 consumer