Kafka发送消息时如何选择分区的?

提问者:帅平 问题分类:面试刷题
Kafka发送消息时如何选择分区的?
1 个回答
Rae
Rae 管理员
主要有两种方式:
轮询,按照顺序消息依次发送到不同的分区
随机,随机发送到某个分区
如果消息指定key,那么会根据消息的key进行hash,然后对partition分区数量取模,决定落在哪个分区上,所以,对于相同key的消息来说,总是会发送到同一个分区上,也是我们常说的消息分区有序性。
很常见的场景就是我们希望下单、支付消息有顺序,这样以订单ID作为key发送消息就达到了分区有序性的目的。
如果没有指定key,会执行默认的轮询负载均衡策略,比如第一条消息落在P0,第二条消息落在P1,然后第三条又在P1。
除此之外,对于一些特定的业务场景和需求,还可以通过实现Partitioner接口,重写configure和partition方法来达到自定义分区的效果。
发布于:6个月前 (01-03) IP属地:四川省
我来回答