13.2.22.2. 使用来自最接近副本的消息


机架意识也可以用于消费者从最接近的副本中获取数据。这可用于在 Kafka 集群跨越多个数据中心时减少网络负载,也可以在公共云中运行 Kafka 时降低成本。但是,它可能会导致延迟增加。

为了能够从最接近的副本中消耗,必须在 Kafka 集群中配置机架感知,并且必须启用 RackAwareReplicaSelector。副本选择器插件提供允许客户端使用最接近的副本的逻辑。默认实施使用 LeaderSelector 来始终为客户端选择领导副本。为 replica.selector.class Specify RackAwareReplicaSelector 从默认实现中切换。

使用启用副本感知选择器的机 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    config:
      # ...
      replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
    # ...

除了 Kafka 代理配置外,还需要在消费者中指定 client.rack 选项。client.rack 选项应当指定使用者运行的 机架 IDRackAwareReplicaSelectorbroker.rackclient.rack ID 匹配,以查找最接近的副本并从其中消耗。如果同一机架中有多个副本,RackAwareReplicaSelector 总是选择最新的副本。如果没有指定机架 ID,或者无法找到具有相同机架 ID 的副本,它将回退到领导副本。

图 13.1. 显示从同一可用区中的副本消耗的客户端示例

消耗同一可用区中的副本

在 Kafka Connect 中使用来自最接近的副本的信息也可以在使用信息的 sink 连接器中使用。当使用 AMQ Streams 部署 Kafka Connect 时,您可以使用 KafkaConnect 或 KafkaConnect S2I 自定义资源中的 rack 部分来自动配置 client.rack 选项。

Kafka Connect 的机 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
  kafka:
    # ...
    rack:
      topologyKey: topology.kubernetes.io/zone
    # ...

KafkaConnect 或 KafkaConnect S2I 自定义资源中启用 rack 识别功能不会设置任何关联性规则,但您也可以配置 关联性topologySpreadConstraints。如需更多信息,请参阅 第 2.7 节 “配置 pod 调度”

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.