14、如何控制消费的位置
kafka 使用 seek(TopicPartition, long)指定新的消费位置。用于查找服务器保留
的最早和最新的 offset 的特殊的方法也可用(seekToBeginning(Collection) 和
seekToEnd(Collection))
15、kafka 分布式(不是单机)的情况下,如何保证消息的顺
序消费?
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。
16、kafka 的高可用机制是什么?
这个问题比较系统,回答出 kafka 的系统特点,leader 和 follower 的关系,消息
读写的顺序即可。