参考上面的架构图,高可用的架构,搭建kafka集群,每个broker是一个节点,创建topic可以指定副本数,这里的详细知识不一一罗列了,回到咱们的面试问题:
Kafka 分布式的单位是 partition,同一个 partition 用一个 write ahead log 组织,可以保证 FIFO 的顺序,不同 partition 之间不能保证顺序。
但是绝大多数用户都可以通过 message key 来定义, 因为同一个 key 的 message 可以保证只发送到同一个 partition。
Kafka 中发送 1 条消息的时候, 可以指定(topic, partition, key) 3 个参数。 partiton 和 key 是可选的。如果你指定了 partition,那就是所有消息发往同 1 个 partition,就是有序的。并且在消费端,Kafka 保证,1 个 partition 只 能 被 1 个 consumer 消费。或者你指定 key( 比如 order id),具有同 1 个 key 的 所有消息, 会发往同 1 个 partition。



