【问题标题】:Kafka: a partition log VS clusterKafka:分区日志VS集群
【发布时间】:2018-06-25 23:09:54
【问题描述】:

我从这里读过,有点不确定分区日志。

他们首先说:

对于每个主题,Kafka 集群维护一个分区日志, 看起来像这样:

然后他们展示了一张图片:

他们也说

日志中的分区有多种用途。首先,他们允许 日志以超出适合单个服务器的大小。每个 单个分区必须适合托管它的服务器,但是一个主题 可能有许多分区,因此它可以处理任意数量的数据。 其次,它们充当并行单元——稍后会详细介绍。

我理解正确吗:

  1. 在一个集群上,一个topic只能有一个partition log?也就是说,同一个topic的两个partition不能在同一个cluster中?
  2. 一个集群可以有来自不同主题的多个分区日志?
  3. 关于一个话题的图片应该更像这样?

【问题讨论】:

  • 1.你的理解是不正确的。一个主题可以有许多分区,分布在集群中的不同机器(代理节点)上

标签: apache-kafka


【解决方案1】:

一个主题由 1 个或多个分区组成。您在创建主题时指定分区数,也可以在创建后添加分区。

Kafka 会将分区分布在集群中尽可能多的代理上。如果您只有一个经纪人,那么他们都将在这个经纪人上。

来自同一个主题的许多分区可以存在于同一个代理上。这种情况经常发生,因为大多数集群只有十几个代理,并且有 50 个分区并不少见,因此来自同一主题的多个分区将存在于同一个代理上。

文档说的是分区是一个不能拆分的单元。它要么在经纪人身上,要么不在经纪人身上。而主题只是具有相同名称和配置的分区的集合。

【讨论】:

    【解决方案2】:

    回答你的问题:

    1. 对于 b 个代理的 Kafka 集群和具有 p 个分区的主题,每个代理将大致持有 p/b 分区作为主副本。它们也可能保存副本分区,但这取决于您的复制因子。所以,例如如果你有一个 3 节点集群,以及一个有 6 个分区的主题 test,每个节点将有 2 个分区。

    2. 是的,当然可以。扩展上一点,如果你有两个主题 test1test2,每个都有 6 个分区,那么每个代理将总共拥有 4 个分区(每个主题 2 个)。

    3. 我猜你在图中错误地将代理标记为集群。

    【讨论】:

      猜你喜欢
      • 2019-12-22
      • 2020-10-08
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 2017-06-09
      相关资源
      最近更新 更多