25.2. 使用来自最接近的副本的消息
机架感知也可用于消费者从最接近的副本获取数据。当 Kafka 集群跨越多个数据中心时,这可用于减少网络上的负载,并可在公有云中运行 Kafka 时降低成本。但是,可能会导致延迟增加。
为了能够从最接近的副本使用,必须在 Kafka 集群中配置机架感知,且必须启用 RackAwareReplicaSelector
。replica selector 插件提供逻辑,使客户端能够从最接近的副本使用。默认实现使用 LeaderSelector
始终为客户端选择领导副本。为 replica.selector.class
指定 RackAwareReplicaSelector
来从默认的实现中切换。
带有启用副本感知选择器的 rack
配置示例
除了 Kafka 代理配置外,您还需要在消费者中指定 client.rack
选项。client.rack
选项应该指定运行使用者的 机架 ID。RackAwareReplicaSelector
关联匹配的 broker.rack
和 client.rack
ID,以查找最接近的副本并从其使用。如果同一机架中有多个副本,RackAwareReplicaSelector
始终选择最新的副本。如果没有指定机架 ID,或者找不到具有相同机架 ID 的副本,它将回退到领导副本。
图 25.1. 在同一可用区中显示来自副本的客户端示例
您还可以配置 Kafka Connect、MirrorMaker 2 和 Kafka Bridge,以便连接器使用最接近的副本的消息。您可以在 KafkaConnect
、KafkaMirrorMaker2
和 KafkaBridge
自定义资源中启用机架感知。配置不会设置关联性规则,但您也可以配置 affinity
或 topologySpreadConstraints
。如需更多信息,请参阅配置 pod 调度。
当使用 Streams for Apache Kafka 部署 Kafka Connect 时,您可以使用 KafkaConnect
自定义资源中的 rack
部分自动配置 client.rack
选项。
Kafka Connect 的 rack
配置示例
当使用 Apache Kafka 的 Streams 部署 MirrorMaker 2 时,您可以使用 KafkaMirrorMaker2
自定义资源中的 rack
部分自动配置 client.rack
选项。
MirrorMaker 2 的 rack
配置示例
当使用 Streams for Apache Kafka 部署 Kafka Bridge 时,您可以使用 KafkaBridge
自定义资源中的 rack
部分自动配置 client.rack
选项。
Kafka Bridge 的 rack
配置示例