搜索

第 4 章 Kafka 消费者配置调整

download PDF

使用配置属性来优化 Kafka 用户的性能。在调整您的消费者时,您的主要关注将确保他们能够高效地处理数据量。与生成者调优一样,准备好进行增量更改,直到消费者按预期工作。

在调整消费者时,仔细考虑以下方面,因为它们会对其性能和行为有严重影响:

扩展
消费者组通过将负载分布到多个消费者,从而提高可扩展性和吞吐量,从而并行处理消息。主题分区数量决定了您可以实现的最大并行级别,因为一个分区只能分配给消费者组中的一个消费者。
消息排序
如果主题中的绝对排序非常重要,请使用单分区主题。消费者按照提交到代理的顺序在单个分区中观察信息,这意味着 Kafka 只为单一分区中的消息提供排序保证。也可以维护特定于各个实体(如用户)的消息排序。如果创建新实体,您可以创建一个新的主题,专用于该实体。您可以使用唯一 ID,如用户 ID,作为消息密钥,并将具有相同键的所有消息路由到主题内的单个分区。
偏移重置策略
设置适当的偏移策略可确保消费者消耗来自所需起点的消息,并相应地处理消息处理。默认 Kafka reset 值 是最新的,它从分区的结尾开始,因此根据消费者的行为和分区状态,可能会丢失一些信息。将 auto.offset.reset 设置为 earliest 可确保连接新 group.id 时,所有消息都会从日志开始检索。
保护访问
通过设置用户帐户来管理对 Kafka 的安全访问,为身份验证、加密和授权实施安全措施。

4.1. 基本消费者配置

每个消费者都需要 connection 和 deserializer 属性。通常,为跟踪添加客户端 ID 是不错的做法。

在消费者配置中,无论后续配置是什么:

  • 消费者从给定的偏移中获取,并按顺序消耗消息,除非将偏移更改为跳过或重新读取消息。
  • 代理不知道消费者是否处理响应,即使将偏移提交到 Kafka,因为偏移可能会发送到集群中的不同代理。

基本消费者配置属性

# ...
bootstrap.servers=localhost:9092 1
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer  2
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer  3
client.id=my-client 4
group.id=my-group-id 5
# ...

1
(必需)告诉消费者使用 Kafka 代理的 host:port bootstrap 服务器地址连接到 Kafka 集群。消费者使用地址来发现并连接到集群中的所有代理。如果服务器停机,请使用逗号分隔的列表来指定两个或三个地址,但不需要提供集群中所有代理的列表。如果您使用 loadbalancer 服务公开 Kafka 集群,则只需要该服务的地址,因为可用性由 loadbalancer 处理。
2
(必需) Deserializer 将从 Kafka 代理获取的字节数转换为消息密钥。
3
(必需) Deserializer 将从 Kafka 代理获取的字节数转换为消息值。
4
(可选)客户端的逻辑名称,用于日志和指标来识别请求源。id 也可以根据处理时间配额来节流消费者。
5
(条件)消费者 需要 组 id 才能加入消费者组。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.