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。