ITPub博客

首页 > 数据库 > 数据库开发技术 > kafka 有哪些重要的参数了?

kafka 有哪些重要的参数了?

原创 数据库开发技术 作者:lixiaoya84 时间:2023-03-23 20:00:00 0 删除 编辑

kafka 有哪些重要的参数了?

Kafka 有很多参数,以下是一些常用的和重要的参数:

1. bootstrap.servers: 元数据服务器的地址列表,客户端在连接 Kafka 集群时要使用该地址列表。 

2. group.id: 消费者所在的组ID,从而确定该消费者属于哪个消费者组。 

3. enable.auto.commit: 这个参数决定了消费者在读取消息后是否自动提交偏移量。

4. auto.offset.reset: 当消费者订阅的主题中没有初始偏移量或者当前偏移量无效时,消费者应该重置到最新的偏移量还是最早的偏移量。

5. session.timeout.ms: 消费者与 Broker 之间的会话超时时间,如果消费者在超时时间内没有发送心跳,则会被认为已挂掉。 

6. max.poll.records: 每次拉取消息的最大数量,一次拉取多条消息时有助于降低消费者的延迟。 

7. partition.assignment.strategy: 消费者分配分区的策略,可以采用默认策略(RoundRobinAssignor)、轮询策略(RoundRobinAssignor)、范围策略(RangeAssignor)等。

8. buffer.memory: 生产者缓冲区可用于缓存数据的内存大小,当缓冲区的数据量达到一定阈值时,生产者将自动刷新缓冲区。 

9. compression.type: 消息压缩类型,支持 GZip、Snappy、LZ4 等多种压缩算法。 

10. acks: 生产者的确认策略,可以设置为 0、1、all 等,控制了生产者发送消息的可靠性。 

这些参数都是 Kafka 集群和消费者在运行过程中需要用到的重要参数,需要根据实际需求进行配置。

kafka的key参数作用是什么?

Kafka 中的 key 参数的作用与其它键值对数据库类似,用于标识消息并且在发送时使用哈希算法将它分配到某个分区上。 Kafka 的消息被分为多个分区 (Partition) 存储,分区的目的是平衡并发消费。发送一条消息时,如果不指定分区,则 Kafka 会根据默认哈希算法从主题的多个分区中随机选择一个分区存储,但是如果应用程序希望消息被路由到特定的分区中,则必须通过在发送消息时设置键来实现。 具体地,发送消息时,可以使用 ProducerRecord 的构造函数指定 topic,key 和 value。Kafka 在接收到消息后,首先使用 hash 算法计算 key 的 hash 值,然后将其与系统中已经存在的分区数取模得到该消息需要发送到的分区,这样就可以将相同 key 的消息发送到同一个分区上,从而确保相同 key 的消息被顺序处理。 总之,key 参数指定消息的键,使用哈希算法将消息分配到某个分区上,并确保相同 key 的消息被顺序处理,这是 Kafka 消息分发和排序的关键所在。

kafka 的offset 参数的作用是什么?

在 Kafka 中,offset 是一个由 Kafka Consumer 管理的标记位,标识了 Consumer 已经消费的消息数量。

当 Consumer 消费消息时,每消费一条消息,就会将该消息的 offset 值保存到 ZooKeeper 或者 Kafka Topic __consumer_offsets 中。

当 Consumer 进行下一次消费时,会先获取上次消费的 offset 值,然后从该 offset 开始继续消费。

 offset 的作用如下: 1. 消费者断开连接后,可以帮助消费者识别已经消费的消息,避免对重复消息进行消费。 

2. 可以控制消费者所消费的起始位置,从而可以实现从特定位置消费消息。

 3. 可以跨越 Kafka 分区,因为每个分区的偏移量是单独管理的。 

4. 可以实现消息消费的可重现性,即使 Consumer 宕机,也能够保证消息被完整消费。 offset 的保存方式分为两种,一种是以文件形式保存到磁盘上,也就是 Kafka 0.9 版本之前的版本使用的方式,称为旧版 Offset 存储;另一种是保存到内部 Topic __consumer_offsets 中,称为新版 Offset 存储。新版 Offset 存储的方式更加健壮,可以避免由于 Consumer 故障导致的数据丢失,并且支持自定义位置提交 Offset。 在 Consumer 中,可以通过参数 auto.offset.reset 来控制 offset 的起始位置,如果设置为 smallest,则 Consumer 将从最早的消息开始消费;如果设置为 largest,则 Consumer 将从最新的消息开始消费;如果没有设置,则 Consumer 将从上一次提交的 offset 开始消费。

kafka 的group id 的作用是什么

Kafka 的 group id 是消费者所在的消费者组的标识符。一个 Kafka Consumer 对象必须要被分配到一个消费者组中才能消费 Kafka 集群中的消息。一个消费者组中可以有多个 Consumer,且一个 Consumer 只能属于一个消费者组。Kafka 将消息发送到消费者组的所有 Consumer 中,这些 Consumer 通过均衡地分配分区来共同消费这些消息。 

group id 的作用如下:

 1. 将消费者按照一定规则分成不同的组,通过消费者组可以实现消息的负载均衡和水平扩展。

 2. 当一个 Consumer 加入或退出一个消费者组时,Kafka 会重新进行分区的再平衡,在各个 Consumer 之间均衡地重新分配分区,以实现在消费过程中的数据负载均衡。 

3. 消费者组可以更好地实现消息的消费可靠性,比如在一个消费者宕机时,其他消费者可以接管其消费的分区,从而保证消息不被丢失。 需要注意的是,一个消费者组中只有一个消费者能够消费一个分区。如果一个 Consumer Group 中的每个 Consumer 订阅了相同的 topic,那么该 Consumer Group 中的每个 Consumer 只会消费它所分配的分区。另外,在多个 Consumer Group 中,例如不同应用程序的消费者,则每个 Consumer Group 都将完全独立地消费相同的数据。


原文作者:Ruby的数据漫谈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-06-18

  • 博文量
    252
  • 访问量
    132834