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的消费者,是运行机制当中非常重要概念,而后续我们会持续对相关的知识点做讲解。
网友评论