美文网首页Kafka相关大数据开发
大数据开发:Kafka Consumer核心参数概述

大数据开发:Kafka Consumer核心参数概述

作者: 成都加米谷大数据 | 来源:发表于2021-07-26 18:04 被阅读0次

    Kafka 作为大数据技术生态当中必学的一个组件,尤其是作为消息队列而言,也是主流选择比较多的一种方案。学习kakfa,Consumer消费者是一个重要的概念,今天的大数据开发学习分享,我们先来讲讲Kafka Consumer核心参数。

    学习Kafka,要想深入了解Kafka Consumer的核心工作机制,从它的核心参数切入,为后续深入了解它的队列负载机制、消息拉取模型、消费模型、位点提交等机制打下基础。

    kafka Consumer的核心属性定义在ConsumerConfig中。

    1、基础功能参数

    group.id

    消费组名称。

    client.id

    客户端标识id,默认为consumer-序号,在实践中建议包含客户端IP,在一个消费组中不能重复。

    bootstrap.servers

    broker服务端地址列表。

    client.dns.lookup

    客户端寻找bootstrap地址的方式,支持如下两种方式:

    resolve_canonical_bootstrap_servers_only

    这种方式,会依据bootstrap.servers提供的主机名(hostname),根据主机上的名称服务返回其IP地址的数组(InetAddress.getAllByName),然后依次获取inetAddress.getCanonicalHostName(),再建立tcp连接。

    一个主机可配置多个网卡,如果启用该功能,应该可以有效利用多网卡的优势,降低Broker的网络端负载压力。

    use_all_dns_ips

    这种方式会直接使用bootstrap.servers中提供的hostname、port创建tcp连接,默认选项。

    enable.auto.commit

    是否开启自动位点提交,默认为true。

    auto.commit.interval.ms

    如果开启自动位点提交,位点的提交频率,默认为5s。

    partition.assignment.strategy

    消费端队列负载算法,默认为按区间平均分配(RangeAssignor),可选值:轮询(RoundRobinAssignor)

    auto.offset.reset

    重置位点策略,但kafka提交位点时,对应的消息已被删除时采取的恢复策略,默认为latest,可选:earliest、none(会抛出异常)。

    key.deserializer

    使用的key序列化类

    value.deserializer

    消息体序列化类

    interceptor.classes

    消费端拦截器,可以有多个。

    check.crcs

    在消费端时是否需要校验CRC,默认为true。

    2、网络相关参数

    send.buffer.bytes

    网络通道(TCP)的发送缓存区大小,默认为128K。

    receive.buffer.bytes

    网络通道(TCP)的接收缓存区大小,默认为32K。

    reconnect.backoff.ms

    重新建立链接的等待时长,默认为50ms,属于底层网络参数,基本无需关注。

    reconnect.backoff.max.ms

    重新建立链接的最大等待时长,默认为1s,连续两次对同一个连接建立重连,等待时间会在reconnect.backoff.ms的初始值上成指数级递增,但超过max后,将不再指数级递增。

    retry.backoff.ms

    重试间隔时间,默认为100ms。

    connections.max.idle.ms

    连接的最大空闲时间,默认为9s。

    request.timeout.ms

    请求的超时时间,与Broker端的网络通讯的请求超时时间。

    3、核心工作参数

    max.poll.records

    每一次poll方法调用拉取的最大消息条数,默认为500。

    max.poll.interval.ms

    两次poll方法调用的最大间隔时间,单位毫秒,默认为5分钟。如果消费端在该间隔内没有发起poll操作,该消费者将被剔除,触发重平衡,将该消费者分配的队列分配给其他消费者。

    session.timeout.ms

    消费者与broker的心跳超时时间,默认10s,broker在指定时间内没有收到心跳请求,broker端将会将该消费者移出,并触发重平衡。

    heartbeat.interval.ms

    心跳间隔时间,消费者会以该频率向broker发送心跳,默认为3s,主要是确保session不会失效。

    fetch.min.bytes

    一次拉取消息最小返回的字节数量,默认为1字节。

    fetch.max.bytes

    一次拉取消息最大返回的字节数量,默认为1M,如果一个分区的第一批消息大小大于该值也会返回。

    max.partition.fetch.bytes

    一次拉取每一个分区最大拉取字节数,默认为1M。

    fetch.max.wait.ms

    fetch等待拉取数据符合fetch.min.bytes的最大等待时间。

    metadata.max.age.ms

    元数据在客户端的过期时间,过期后客户端会向broker重新拉取最新的元数据,默认为5分钟。

    internal.leave.group.on.close

    消费者关闭后是否立即离开订阅组,默认为true,即当客户端断开后立即触发重平衡。如果设置为false,则不会立即触发重平衡,而是要等session过期后才会触发。

    关于大数据开发学习,Kafka Consumer核心参数,以上就为大家做了大致的介绍了。Kafka的消费者,是运行机制当中非常重要概念,而后续我们会持续对相关的知识点做讲解。

    相关文章

      网友评论

        本文标题:大数据开发:Kafka Consumer核心参数概述

        本文链接:https://www.haomeiwen.com/subject/voygmltx.html