kafka系列(14):kafka物理存储机制、分区分配

物理存储机制

       Kafka 的基本存储单元是分区。分区无法在多个 broker 间进行再细分,也无法在同一个 broker 的多个磁盘上进行再细分。

        在配置 Kafka的时候, 管理员指定了一个用于存储分区的目录清单——也就是log.dirs参数的值 (不要把它与存放错误日志的目录混淆了, 日志目录是 配置在 1og4j.properties 文件里的)。 该参数一般会包含每个挂载点的目录。

 

分区分配

       在创建主题时, Kafka 首先会决定如何在 broker 间分配分区。假设你有 6 个 broker, 打算创建一个包含 10 个分区的主题,并且复制系数为 3(确保至少 有 3 台 broker)。那么 Kafka 就会有 30 个分区副本, 它们可以被分配给 6 个 broker。 在进行分区分配时, 我们要达到如下的目标。

       • 在 broker 间平均地分布分区副本。对于我们的例子来说, 就是要保证每个 broker 可以分到 5 个副本。

       • 确保每个分区的每个副本分布在不同的 broker 上。假设分区 0 的首领副本在 broker2 上,,那么可以把跟随者副本放在 broker3 和 broker4 上, 但 不能放在 broker2 上,也不能两个都放在 broker3 上。

       • 如果为 broker 指定了机架信息,那么尽可能把每个分区的副本分配到不同机架的 broker 上 。 这样做是为了保证一个机架的不可用不会导致整体 的分区不可用 。

       为了实现这个目标, 我们先随机选择一个 broker(假设是 4) , 然后使用轮询的方式给每个 broker 分配分区来确定首领分区的位置。于是,首领分区 0 会在 broker4 上,首领分区 1 会在 broker5 上, 首领分区 2 会在 broker 0 上(只有 6 个 broker), 并以此类推。然后, 我们从分区首领开始,依次分配跟随者副 本。如果分区 0 的首领在 broker4 上,那么它的第一个跟随者副本会在 broker5 上,第二个跟随者副本会在 broker 0 上。分区 1 的首领在 broker5 上,那么它 的第一个跟随者副本在 broker0 上,第二个跟随者副本在 broker1 上。

        为分区和副本选好合适的 broker 之后, 接下来要决定这些分区应该使用哪个目录。 我们单独为每个分区分配目录, 规则很简单: 计算每个目录里的 分区数量, 新的分区总是被添加到数量最小的那个目录里。 也就是说, 如果添加了一个新磁量, 所有新的分区都会被创建到这个磁盘上。因为在完成分配 工作之前,新磁盘的分区数量总是最少的。 (最少使用原则)

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值