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 组成。