kafka的分区模式?

Posted 牵牛花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka的分区模式?相关的知识,希望对你有一定的参考价值。

当别人问这个问题的时候,别人肯定是想你是否看过源码。是否针对不同场景改过kafka的分区模式
这是别人最想知道的是,你的message如何负载均衡的发送给topic的partition
我们用kafka的时候,可以动态指定partition,也可以不指定partition
当我们动态指定了partition的时候,kafka会将消息发送到指定的partition
如果没有指定partition
这就是关键了,
如何让这些消息,均衡的发送给每个partition
先看看发送消息的方式

kafka首先判断partition,如果有partition就发送到指定的partition
如果没有,就看有没有key
如果有key就将,key弄成字节,然后用个算法,搞成整数,然后除以partition的个数,最后的余数就是partition的所在
如果partition,和key都没有的时候,源码弄了一个int类型的counter,从0开始,每来一条消息就累加,用counter除以partition的个数的余数就是partition的所在
这样就打到了每个partition的均衡了
【大侠】   ?? 2017/8/25 14:02:17
当然了,我们也可以自己定义partition
 某些人用partition指定分区数发消息,如果又有人不指定partition,key,就会发生负责不均衡
你设置了Key,只能保证你自己均衡了
但是要是有其他人指定某个partition发消息呢
【大侠】   ?? 2017/8/25 14:09:14
别个是,1,2,3,4,这是Key的kafka的分的partition,你指定了就变成了1111
【大侠】   ?? 2017/8/25 14:09:40
很多公司,都重写了kafka的分区

 

以上是关于kafka的分区模式?的主要内容,如果未能解决你的问题,请参考以下文章

kafka学习笔记 & 面经分享

kafka学习笔记 & 面经分享

Kafka分组消费的那些事儿

kafka主题分区的数量和数据中不同键的数量

kafka学习

kafka学习