作者回复: 你好呀,这个问题的答案在基础篇的《05 | 存储:消息数据和元数据的存储是如何设计的?》中可以找到。 核心考虑点事对读和写的性能要求。 第一种方案,单个文件读和写都是顺序的,性能最高。但是当文件很多且都有读写的场景下,硬盘层面就会退化为随机读写,性能会严重下降。 第二种方案,因为只有一个文件,不存在文件过多的情况,写入层面一直都会是顺序的,性能一直很高。但是在消费的时候,因为多个分区数据存储在同一个文件中,同一个分区的数据在底层存储上是不连续的,硬盘层面会出现随机读的情况,导致读取的性能降低。
作者回复: 你好,是有可能的。 默认情况下,5个partition会均匀分布在3台Broker上。 此时分区在Broker上的数量分布可能是:2、2、1。 但是分区在Broker上分布的算法实现是比较复杂的,考虑的情况更多。所以从理论上看,是有可能会出现一个Broker上放了3个分区的。此时分区数量分布就是:3,1,1。
作者回复: 你好~ 寻找的是分区Leader所在的 Broker 地址。因为在直连模式下,需要先知道分区的Leader是哪台,才能把数据写入到分区的Leader中。