问下kafka集群下生产者发topic消息到分区的问题

1、问下关于kafka的问题,这个图是什么意思呀?为什么图里面生产者发送消息,按照轮询分配策略,不是应该在单个broker的分区里面进行轮流放吗?我的意思是,比如单个broker的topic有3个分区,分别是partition0-2,那按照轮询策略,不应该是按顺序往这几个里面partition0到partition1到partition2这样的顺序存吗?其他broker也是重复这个操作。
2、但图片这里为啥第一条消息放在broker0的partition0,第二条消息就放到了broker1的partition1??
3、因为我目前的理解,三个broker,每个broker配置topic的分区为3,那就是每个新进来的topic都有3个分区。那生产者发同一个topic的消息到这个集群,那每个broker都收到topic的消息,然后每个broker都按照自己的分区策略找某个分区去存这个消息,不应该是这样吗??是我理解哪里有误,求解!!

img

意思就是一个group中的两个consumer同时订阅了两个topic,这两个topic都有3个分区,其中一个consumer被分配到了t0p0, t0p2, t1p1,另一个consumer被分配到了t0p1, t1p0, t1p2,那么为什么会这样分配呢?
这是因为轮询分配策略是基于所有可用的消费者和所有可用的分区的,与range策略最大的不同就是它不再局限于某个主题,如果所有的消费者实例的订阅都是相同的,那么这样最好了,可用统一分配,均衡分配。
假设,组中每个消费者订阅的主题不一样,分配过程仍然以轮询的方式考虑每个消费者实例,但是如果没有订阅主题,则跳过实例。当然,这样的话分配肯定不均衡。
什么意思呢?也就是说,消费者组是一个逻辑概念,同组意味着同一时刻分区只能被一个消费者实例消费,换句话说,同组意味着一个分区只能分配给组中的一个消费者。事实上,同组也可以不同订阅,这就是说虽然属于同一个组,但是它们订阅的主题可以是不一样的。
看个例子:
这里我们首先假设有三个topic:t0、t1和t2,这三个topic拥有的分区数分别为1、2和3,那么总共有六个分区,这六个分区分别为:t0-0、t1-0、t1-1、t2-0、t2-1和t2-2。这里假设我们有三个consumer:C0、C1和C2,它们订阅情况为:C0订阅t0,C1订阅t0和t1,C2订阅t0、t1和t2。
然后依次以按顺序轮询的方式将这六个分区分配给三个consumer,如果当前consumer没有订阅当前分区所在的topic,则轮询的判断下一个consumer:
尝试将t0-0分配给C0,由于C0订阅了t0,因而可以分配成功;
尝试将t1-0分配给C1,由于C1订阅了t1,因而可以分配成功;
尝试将t1-1分配给C2,由于C2订阅了t1,因而可以分配成功;
尝试将t2-0分配给C0,由于C0没有订阅t2,因而会轮询下一个consumer;
尝试将t2-0分配给C1,由于C1没有订阅t2,因而会轮询下一个consumer;
尝试将t2-0分配给C2,由于C2订阅了t2,因而可以分配成功;
同理由于t2-1和t2-2所在的topic都没有被C0和C1所订阅,因而都不会分配成功,最终都会分配给C2。
从上面的步骤分析可以看出,轮询的策略就是简单的将所有的partition和consumer按照字典序进行排序之后,然后依次将partition分配给各个consumer,如果当前的consumer没有订阅当前的partition,那么就会轮询下一个consumer,直至最终将所有的分区都分配完毕。但是从上面的分配结果可以看出,(缺点:)轮询的方式在这种情况下会导致每个consumer所承载的分区数量不一致,从而导致各个consumer压力不均一。
这个图画的不是很清楚没有具体的解释