Kafka顺序消费与多分区是否不能共存?

√锋²º¹8ヾ/❤ 发表于: 2018-08-23   最后更新时间: 2018-08-26 22:48:35   6,016 游览

场景:
假设我有一个参数设置系统,设置完之后,结合mysql的canal,将数据封装好之后,调用kafka的生产者进行发送。
如果只有一个分区的情况下,按正常来讲,终端消费者最终还是能得到【与参数设置系统最后一次保存】的参数值。也就是顺序消费。

但是,如果仅仅只有一个分区,使用多线程去修改一个参数值的时候,假如10万次,这样就不停的往kafka发送消息。会不会严重影响性能?

如果多个分区,那么kafka按照自身的机制,就会将消息分发到不同的分区上,那这个时候消费者拉取的消息就是“无序”了。

我在另外的资料中看到:
一个解决办法是,一个topic只用一个partition,但这样很显然限制了灵活性。

另一个办法就是,所有发送的消息,用同一个key,这样同样的key会落在一个partition里面。

测试只用一个partition 的,好像确实是能顺序发送,顺序消费。

那么当一个topic ≥ 2 个partition的时候,如果指定了key,是不是真的能保证在broker重启、增加、减少的情况下,发送的消息都只会落在那个最初选定的那个分区之上?1

发表于 2018-08-23
添加评论

kafka默认是随机写的。你可以自己覆盖分区派发规则的。

你的答案

查看kafka相关的其他问题或提一个您自己的问题