kafka 消息发送到哪个分区

partition:分区

主题会由多个分区组成,通常每个分区的消息都是按照顺序读取的,不同的分区无法保证顺序性

分区也就是我们常说的数据分片sharding机制,主要目的就是为了提高系统的伸缩能力

通过分区,消息的读写可以负载均衡到多个不同的节点上

 

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

主要有两种方式:

1 轮询,按照顺序消息依次发送到不同的分区

 

2 随机,随机发送到某个分区

 

如果消息指定key,那么会根据消息的key进行hash,然后对partition分区数量取模,决定落在哪个分区上

所以,对于相同key的消息来说,总是会发送到同一个分区上,也是我们常说的消息分区有序性。

 

很常见的场景就是我们希望下单、支付消息有顺序,这样以订单ID作为key发送消息就达到了分区有序性的目的。

如果没有指定key,会执行默认的轮询负载均衡策略,比如第一条消息落在P0,第二条消息落在P1,然后第三条又在P1。

 

 

除此之外,对于一些特定的业务场景和需求,还可以通过实现Partitioner接口,重写configurepartition方法来达到自定义分区的效果。

 

 

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值