可以把 Kafka 的 Topic 理解成一个主题,把 Partition 理解成这个主题下面的多个有序分片。一个 Topic 被拆成多个 Partition,主要是为了扩展吞吐和支持并行消费。
Partition 解决什么问题
如果所有消息都塞进一个分区,写入和消费能力都会受限。拆成多个 Partition 后,生产者可以把消息分散写入,不同消费者也能并行处理。
它和 Broker 是什么关系
Partition 是逻辑分片,Broker 是物理节点。一个 Topic 的多个 Partition 可以分布在不同 Broker 上,也可以在多个 Broker 之间做副本。
消费时是不是要去不同 Broker 取数据
有可能。消费者最终会连接分区所在的 Leader 副本读取消息,所以当不同 Partition 落在不同 Broker 上时,消费端看到的连接目标也可能不同。
要点
Partition 的重点不是把消息“切开存”这么简单,而是让 Kafka 同时具备可扩展性、顺序性边界和消费者组并行能力。
正文完




