14.5. 优化目标概述


优化目标是在 Kafka 集群间对工作负载重新分配和资源利用率的限制。为重新平衡 Kafka 集群,Cruise Control 使用优化目标来生成 优化建议

14.5.1. 目标顺序

Red Hat Enterprise Linux 上的 AMQ Streams 支持在 Cruise Control 项目中开发的所有优化目标。支持的目标按优先级的默认降序排列,如下所示:

  1. 机架感知性
  2. 每个代理的最小领导副本数用于一组主题
  3. 副本容量
  4. 容量:磁盘容量、网络入站容量、网络出站容量
  5. CPU 容量
  6. 副本分发
  7. 潜在的网络输出
  8. 资源分布:磁盘使用分发、网络入站使用分布、网络出站使用分布
  9. 领导字节速率分发
  10. 主题副本分发
  11. CPU 用量分发
  12. 领导副本分发
  13. 首选领导选举机制
  14. Kafka 分配器磁盘用量发行版本
  15. intra-broker 磁盘容量
  16. intra-broker 磁盘用量

有关每个优化目标的更多信息,请参阅 Cruise Control Wiki 中的 Goals

14.5.2. Cruise Control 属性文件中的目标配置

您可以在 cruise-control/config/ 目录中的 cruisecontrol.properties 文件中设置优化目标。Cruise Control 具有对必须满足的硬优化目标的配置,以及主要、默认和用户提供的优化目标。

您可以在以下配置中指定以下类型的优化目标:

  • Main goals — cruisecontrol.properties 文件
  • Hard goals — cruisecontrol.properties 文件
  • Default goals — cruisecontrol.properties 文件
  • User-provided goals — runtime 参数

另外,用户提供的 优化目标会在运行时设置为请求到 /rebalance 端点的参数。

优化目标取决于代理资源的任何 容量限制

14.5.3. 硬和软优化目标

硬目标就是在优化建议中 必须满足 的目标。没有作为硬目标配置的目标被成为软目标。您可以将软目标视为 best effort 目标:它们不需要在优化建议方面满足,但包含在优化计算中。

Cruise Control 将计算满足所有硬目标以及尽可能多的软目标(按优先级顺序)的优化建议。满足所有硬目标的优化方法由 Analyzer 拒绝,不会向用户发送。

注意

例如,您可能有一个软目标来在集群间平均分配主题的副本(主题分布目标)。如果这样做可让所有配置的硬目标满足,则 Cruise Control 将忽略这个目标。

在 Cruise Control 中,以下 主要优化目标 作为硬目标预设:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
Copy to Clipboard Toggle word wrap

要更改硬目标,请编辑 cruisecontrol.properties 文件的 hard.goals 属性,并使用其完全限定的域名指定目标。

增加硬目标数量可减少计算并生成有效优化建议的可能性。

14.5.4. 主要优化目标

主要优化目标可供所有用户使用。在 Cruise Control 操作中,无法列出主要优化目标的目标。

以下主要优化目标在 cruisecontrol.properties 文件 的目标 属性中以降序排列:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
Copy to Clipboard Toggle word wrap

为降低复杂度,建议不要更改预先设定的主要优化目标,除非需要完全排除一个或多个目标来生成优化建议。在进行默认优化目标的配置时,可以修改主要优化目标的优先级顺序。

要修改预设主要优化目标,以降序在 goals 属性中指定目标列表。使用 cruisecontrol.properties 文件中显示的完全限定域名。

您必须至少指定一个主要目标,否则 Cruise Control 将崩溃。

注意

如果更改了预先设置的主要优化目标,您必须确保配置的 hard.goals 是您配置的主要优化目标的子集。否则,生成优化建议时会出现错误。

14.5.5. 默认优化目标

Cruise Control 使用默认优化 目标列表来生成 缓存的优化建议。更多信息请参阅 第 14.6 节 “优化建议概述”

您可以通过设置 用户提供的优化目标,在运行时覆盖默认的优化目标

以下默认优化目标是在 cruisecontrol.properties 文件的 default.goals 属性中以降序排列:

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal
Copy to Clipboard Toggle word wrap

您必须至少指定一个默认目标,否则 Cruise Control 将崩溃。

要修改默认的优化目标,以降序为 default.goals 属性指定目标列表。默认目标必须是主要优化目标的子集 ; 使用完全限定的域名。

14.5.6. 用户提供的优化目标

用户提供的优化目标 可缩小为特定优化者配置的默认目标。您可以根据需要设置它们,作为 HTTP 请求中的参数到 /rebalance 端点。更多信息请参阅 第 14.9 节 “生成优化建议”

用户提供的优化目标可针对不同的场景生成优化建议。例如,您可能希望在不考虑磁盘容量或磁盘利用率的情况下优化 Kafka 集群中的领导副本分布。因此,您要向 /rebalance 端点发送一个请求,其中包含领导副本分布的一个目标。

用户提供的优化目标必须:

要忽略在优化器中配置的硬目标,请为请求添加 skip_hard_goals_check=true 参数。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat