Kafka系列之kafka参数配置

 参数名称参数说明
broker参数broker.idbroker的唯一标示,可以使任意值,但是必须在整个kafka集群中唯一
portbroker的端口,建议设置在1024以上
zookeeper.connectzookeeper地址
log.dirs用于存放kafka消息的文件路径,可以指定多个,用“,”分割
num.recovery.threads.per.data.dir

kafka线程池数量,注意:此配置指定的数字是针对log.dirs的单个目录,如果此配置设置为8,log.dirs为3,则会启动24个线程

kafka会在以下3中情况使用此配置来处理消息:

  • 服务器正常启动,用于打开每个分区的日志片段
  • 服务器崩溃后重启,用于检查和截取每个分区的日志片段
  • 服务器正常关闭,用于关闭日志片段
auto.create.topics.enable

默认为true,默认在以下几种情形自动创建主题:

  • 当一个生产者开始往主题写入消息时
  • 当一个消费者开始从主题读取消息时
  • 当任意一个客户端向主题发送元数据请求时
主题配置num.partitions

主题分区的个数,默认值是1

注意:如果想要一个主题的分区数小于此参数值,需要手动创建主题

log.retention.ms

kafka数据的过期时间,超过此时间日志消息将被删除,默认是168小时(一周)

注意此时间是从日志文件关闭后算起的。

log.retention.bytes

kafka中数据保留的大小,作用在每一个分区上,如果有8个分区,此参数设置的是1G,那么此主题最多可以保留8G的数据

如果同时指定了log.retention.ms和log.retention.bytes,只要任意一个条件满足就会删除数据。

log.segment.bytes每个日志文件的大小,默认是1G。
log.segment.ms

指定了每个日志文件多长时间之后关闭。默认情况下不设置此值

log.segment.ms和log.segment.bytes只要有任意一个条件满足日志文件就会关闭

message.max.bytes此参数限制单个消息的大小,也就是生产者每次发到kafka的消息的大小。默认情况下是1MB
生产者参数bootstrap.servers

该属性指定broker的地址清单,以逗号分隔,地址格式是host:port,不需要包含集群中所有broker的地址。

在生产者往kafka写消息时此参数必须指定

key.serializer

往kafka写消息时通过key/value的方式,broker只能接收字节数组,所有需要对消息序列化,此参数指定了key的序列化方式。

kafka客户端默认提供了ByteArraySerializer、StringSerializer、IntegerSerializer。

也可是使用自定义的序列化接口org.apache.kafka.common.serialization.Serializer

建议使用通用的序列化框架,如Apachede Avro

在生产者往kafka写消息时此参数必须指定

value.serializer

此参数指定了vaue的序列化方式。

在生产者往kafka写消息时此参数必须指定

acks

此参数指定了必须要有多少个分区副本收到消息,生产者才会认为消息写入是成功的。有如下选项

  • acks=0,生产者不需要等kafka的响应就认为是消息写入成功,就算是消息丢失了生产者也不知道。这个配置能达到最大的吞吐量
  • acks=1,只要kafka集群中的首领收到消息,生产者就会收到一个成功的响应,这时才认为消息时写入成功的。
  • acks=all,只有当所有参与复制的节点全部都收到消息,生产者才会认为消息写入成功。
buffer.memory该参数指定了生产者内存缓冲区的大小。如果应用程序发送速度超过发送到服务器的速度,回导致生产者空间不足,这个时候send()方法要么被阻塞,要么抛出异常。
compression.type该参数指定了消息被发送到broker之前使用哪一种压缩算法,默认消息时不会压缩。该参数可以设置为snappy、gzip、lz4
retries生产者的重发次数,当消息发送失败时生产者通过此参数来决定是否重发,重发几次。
retry.backoff.ms指定重发间隔,默认情况下是100ms.
batch.size当有多个消息被发送到同一个分区时,生产者会把他们放到同一个批次中。该参数指定了一个批次可以使用的内存大小,按照字节计算。
linger.ms该参数指定了生产者在发送批次之前等待更多的消息加入批次的时间。默认情况先只要有可用的线程,就算批次中只有一条消息,生产者也会把消息发出去。linger.ms设置成比0大的数,生产者在发送批次之前会等待一会,使更多的消息加入进来,虽然这样会增加延时,但是会提高吞吐量。
max.in.flight.requests.per.connection该参数指定了生产者在收到服务器响应之前可以发多少个消息。
client.id该参数可以是任意的字符串,服务器会用它来识别消息的来源
timeout.ms该参数指定了broker等待同步副本返回消息确认的时间。与acks的值相匹配
request.timeout.ms该参数指定了生产者在发送数据时等待服务器的响应时间。
metadata.fetch.timeout.ms该参数指定了生产者在获取元数据时等待服务器的响应时间。
max.block.ms该参数指定了在调用send()方法或者使用partitionsFor()方法获取元数据时生产者的阻塞时间
max.request.size该参数用于控制生产者发送的请求大小。
receive.buffer.bytes该参数指定了socket接受数据包的缓存区大小。如果设置成-1则使用操作系统的默认值
send.buffer.bytes该参数指定了socket发送数据包的缓存区大小。如果设置成-1则使用操作系统的默认值
消费者参数bootstrap.servers

该属性指定broker的地址清单,以逗号分隔,地址格式是host:port,不需要包含集群中所有broker的地址。

在生产者往kafka写消息时此参数必须指定

 key.serializer

往kafka写消息时通过key/value的方式,broker只能接收字节数组,所有需要对消息序列化,此参数指定了key的序列化方式。

kafka客户端默认提供了ByteArraySerializer、StringSerializer、IntegerSerializer。

也可是使用自定义的序列化接口org.apache.kafka.common.serialization.Serializer

建议使用通用的序列化框架,如Apachede Avro

在生产者往kafka写消息时此参数必须指定

 value.serializer

此参数指定了vaue的序列化方式。

在生产者往kafka写消息时此参数必须指定

 

group.id

此参数指定了kafkaconsumer属于哪一个消费者

不通的group.id可以重复消费同一个topic的message

 fetch.min.bytes该属性制定了消费者从服务器获取记录的最小字节数
 fetch.max.wait.ms该属性指定了broker的等待时间,默认是500ms
 max.partition.fetch.bytes该属性指定了服务器从每个分区里返回给消费者的最大字节数,默认是1MB
 session.timeout.ms

该属性指定了消费者在认为被死亡之前可以与服务器断开连接的时间,默认是3S,也就是说消费者多久可以不发送心跳

和heartbeat.interval.ms结合使用。

 heartbeat.interval.ms发送心跳的频率,一般是session.timeout.ms的三分之一
 auto.offset.reset该属性指定了在读取一个没有偏移量的分区或者偏移量无效的情况下该做如何处理。它的默认值是latest,意思是说,在偏移量无效的情况下,消费者将从最新的记录开始读取数据。另一个是earliest,意思是说在偏移量无效的情况下从最起始位置开始读取分区记录。
 enable.auto.commit该属性指定了消费者是否自动提交偏移量,默认是true
 auto.commit.interval.ms该属性用于控制提交的频率
 partition.assignment.strategy该属性指定了选择分区的策略
 client.id该属性可以是任意字符串,broker用它来标示从客户端发送过来的消息
 max.poll.records该属性用于控制单次调用call()方法时能够返回的记录数。
 receive.buffer.bytes该参数指定了socket接受数据包的缓存区大小。如果设置成-1则使用操作系统的默认值
 send.buffer.bytes该参数指定了socket发送数据包的缓存区大小。如果设置成-1则使用操作系统的默认值
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

未完待续。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值