微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

【Kafka】Producer配置

kafka aide_941 9℃
名称 描述 类型 默认值
bootstrap.servers kafka集群地址,ip+端口,以逗号隔开。不管这边配置的是什么服务器,客户端会使用所有的服务器。配置的列表只会影响初始发现所有主机。配置的格式应该是:ip:port,ip:port,因为配置的内容只是用于服务集群的初始发现(集群地址可能会变化),配置可以不包含所有的服务器(你可能需要配置多于一个,防止某个服务挂掉) list
key.serializer 实现Serializer接口的序列化类键 class
value.serializer 实现Serializer接口的序列化类值 class
acks 生产者认为一个请求完成,所需要kafka集群主服务的应答次数。这个配置控制已发送消息的持久性。下面是这个配置可能的值。acks=0:如果设置为0,生产者不会等待kafka的响应。消息会被立刻加到发送缓冲通道中,并且认为已经发送成功。这种情况下,不能保证kafka接收到了这条消息,retries配置不会生效,每条消息的偏移量都是1;acks=1:这个配置意味着kafka会把这条消息写到本地日志文件中,但是不会等待集群中其他机器的成功响应。这种情况下,在写入日志成功后,集群主机器挂掉,同时从机器还没来得及写的话,消息就会丢失掉。acks=all:这个配置意味着leader会等待所有的follower同步完成。这个确保消息不会丢失,除非kafka集群中所有机器挂掉。这是最强的可用性保证。 string 1
buffer.memory 生产者等待发送到kafka的消息队列占用内容的大小。如果消息发送的速度比传输给kafka快,生产者会在抛出异常后,阻塞max.block.ms的时间。这个配置应该大体与生产者用到的内存差不多,但不全是,因为生产者使用的内存不全部用于消息队列。还有些内存会被用于压缩和保持长连接。 long 33554432
compression.type 生产者的数据压缩类型。默认是不压缩(no compression)。有效的配置可以是none,gzip,snappy或lz4。压缩是数据的批量压缩,所以批量的效果也就是压缩的比例(压缩的比例越好,数据量越小)。 string none
retries 配置为大于0的值的话,客户端会在消息发送失败时重新发送。重试等同于在发送有异常时重新发送消息。如果不把max.in.flight.requests.per.connection设为1,重试可能会改变消息的顺序。两条消息同时发送到同一个分区,第一条失败了,并在第二条发送成功后重新发送,那么第二条消息可能在第一条消息前到达。 int 0
ssl.key.password 存在文件中的私钥密码,对于生产者来说可选。 password null
ssl.keystore.location 存储私钥的文件地址,可以用于不同客户端的认证。 string null
ssl.keystore.password 私钥文件存储密码。只有当ssl.keystore.location配置了,才有用。 password null
ssl.truststore.location 信任存储文件路径。 string null
ssl.truststore.password 信任存储文件密码 password null
batch.size 当多条消息需要发送到同一个分区时,生产者会尝试合并网络请求。这会提高client和生产者的效率。如果消息体大于这个配置,生产者不会尝试发送消息。发送给kafka的消息包含不同的批次,每批发送给一个分区。批次大小太小的话可能会降低吞吐量。如果设为0,会禁用批处理功能。如果批次设置很大,可能会有些浪费内存,因为我们会预留这部分内存用于额外的消息。 int 16384
client.id 发送请求给kafka时带上的生产者标识。目的是为了在ip+端口之外,通过逻辑上的应用名称跟踪请求,以便记录在kafka日志中。 string “”
connections.max.idle.ms 在配置项的时间之后,关闭空闲的链接 long 540000
linger.ms 消息延迟发送的毫秒数,目的是为了等待多个消息,在同一批次发送,减少网络请求。 long 0
max.block.ms 这个配置控制KafkaProducer.send()和KafkaProducer.partitionsFor()的阻塞时间,当缓冲区空间不够或者源数据丢失时阻塞 int 60000
max.request.size 生产者一次请求的最大字节数,这也是一次消息体的最大值。注意到kafka集群有自己的消息限制,可能与这个值不一样。这个配置限制的是生产者一次发送消息的大小,为的是避免发送大的数据量。 int 1048576
partitioner.class 实现Partitioner接口的分区类 class class org.apache.kafka.clients.producer.internals.DefaultPartitioner
receive.buffer.bytes socket接收缓存空间的大小,读数据时用 int 32768
request.timeout.ms 生产者发送消息后等待响应的最大时间,如果在配置时间内没有得到响应,生产者会重试。 int 30000
timeout.ms kafka集群的leader等待follower响应的超时时间。 int 30000

转载请注明:SuperIT » 【Kafka】Producer配置

喜欢 (0)or分享 (0)