第二节 kafka 重要配置

2.1 Broker 端参数

  • log.dirs:日志文件目录,多个路径,用逗号分隔,比如/home/kafka1,/home/kafka2,/home/kafka3``。
  • log.dir:日志文件目录,单个路径。

多路径配置好处:
1)提升读写性能:比起单块磁盘,多块物理磁盘同时读写数据有更高的吞吐量。
2)能够实现故障转移:即 Failover。这是 Kafka 1.1 版本新引入的强大功能。要知道在以前,只要 Kafka Broker 使用的任何一块磁盘挂掉了,整个 Broker 进程都会关闭。但是自 1.1 开始,这种情况被修正了,坏掉的磁盘上的数据会自动地转移到其他正常的磁盘上,而且 Broker 还能正常工作。

  • zookeeper.connect :ZooKeeper链接地址,负责协调管理并保存 Kafka 集群的所有元数据信息,比如集群都有哪些 Broker 在运行、创建了哪些 Topic,每个 Topic 都有多少分区以及这些分区的 Leader 副本都在哪些机器上等信息。

  • listeners: 监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。

  • advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。

  • host.name/port:列出这两个参数就是想说你把它们忘掉吧,压根不要为它们指定值,毕竟都是过期的参数了。

  • auto.create.topics.enable:是否允许自动创建 Topic。

  • unclean.leader.election.enable:是否允许 Unclean Leader 选举。-- auto.leader.rebalance.enable:是否允许定期进行 Leader 选举。

  • log.retention.{hours|minutes|ms}:这是个“三兄弟”,都是控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hours 最低。

  • log.retention.bytes:这是指定 Broker 为消息保存的总磁盘容量大小。

  • message.max.bytes:控制 Broker 能够接收的最大消息大小,默认的 1000012 太少了,还不到 1MB

2.2 Topic 级别参数:

Topic 级别参数会覆盖全局 Broker 参数的值,而每个 Topic 都能设置自己的参数值,这就是所谓的 Topic 级别参数

  • retention.ms: Topic 消息保存的时长。默认是 7 天,即该 Topic 只保存最近 7 天的消息。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值。
  • retention.bytes: Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间。
  • max.message.bytes。它决定了 Kafka Broker 能够正常接收该 Topic 的最大消息大小。

Topic 级别参数的有两种方式可以设置:

  • 创建 Topic 时进行设置:
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880
  • 修改 Topic 时设置:
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760 

2.3 JVM 参数

  • KAFKA_HEAP_OPTS:指定堆大小。
  • KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 参数。

$> export KAFKA_HEAP_OPTS=--Xms6g  --Xmx6g
$> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
$> bin/kafka-server-start.sh config/server.properties

2.4 操作系统参数

  • 文件描述符限制:建议设置一个超大值,例如: ulimit -n 1000000
  • 文件系统类型:XFS 的性能要强于 ext4,所以生产环境最好还是使用 XFS
  • Swappiness:建议设置接近于0的值,例如:1
  • 提交时间

你可能感兴趣的:(第二节 kafka 重要配置)