Kafka核心技术与实战——07 | 最最最重要的集群参数配置(上)

  • 很多参数对系统的影响要比从文档上看更加明显
    • 严格来说这些配置并不单单指 Kafka 服务器端的配置,其中既有 Broker 端参数,
    • 也有主题(后面我用我们更熟悉的 Topic 表示)级别的参数、
    • JVM 端参数
    • 和操作系统级别的参数
  • Broker 端参数
    • 目前 Kafka Broker 提供了近 200 个参数,按照大的用途类别一组一组地介绍它们
    • 首先 Broker 是需要配置存储信息的,即 Broker 使用哪些磁盘。那么针对存储信息的重要参数有以下这么几个:
      • log.dirs:这是非常重要的参数,指定了 Broker 需要使用的若干个文件目录路径。要知道这个参数是没有默认值的,这说明什么?这说明它必须由你亲自指定。
      • log.dir:注意这是 dir,结尾没有 s,说明它只能表示单个路径,它是补充上一个参数用的
      • 这两个参数应该怎么设置呢?很简单,你只要设置log.dirs,即第一个参数就好了,不要设置log.dir。而且更重要的是,在线上生产环境中一定要为log.dirs配置多个路径,具体格式是一个 CSV 格式,也就是用逗号分隔的多个路径,比如/home/kafka1,/home/kafka2,/home/kafka3这样
      • 如果有条件的话你最好保证这些目录挂载到不同的物理磁盘上。
    • 下面说说与 ZooKeeper 相关的设置
      • 它是一个分布式协调框架,负责协调管理并保存 Kafka 集群的所有元数据信息,比如集群都有哪些 Broker 在运行、创建了哪些 Topic,每个 Topic 都有多少分区以及这些分区的 Leader 副本都在哪些机器上等信息。
      • Kafka 与 ZooKeeper 相关的最重要的参数当属zookeeper.connect。这也是一个 CSV 格式的参数,比如我可以指定它的值为zk1:2181,zk2:2181,zk3:2181。2181 是 ZooKeeper 的默认端口。
      • 多个 Kafka 集群使用同一套 ZooKeeper 集群
    • 第三组参数是与 Broker 连接相关的,即客户端程序或其他 Broker 如何与该 Broker 进行通信的设置。有以下三个参数:
      • listeners:学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
      • advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。
      • host.name/port:列出这两个参数就是想说你把它们忘掉吧,压根不要为它们指定值,毕竟都是过期的参数了
      • 经常有人会问主机名这个设置中我到底使用 IP 地址还是主机名。这里我给出统一的建议:最好全部使用主机名,即 Broker 端和 Client 端应用配置中全部填写主机名。 Broker 源代码中也使用的是主机名,如果你在某些地方使用了 IP 地址进行连接,可能会发生无法连接的问题
    • 第四组参数是关于 Topic 管理的。我来讲讲下面这三个参数:
      • auto.create.topics.enable:是否允许自动创建 Topic。
      • unclean.leader.election.enable:是否允许 Unclean Leader 选举。
      • auto.leader.rebalance.enable:是否允许定期进行 Leader 选举
    • 最后一组参数是数据留存方面的,即:
      • log.retention.{hour|minutes|ms}:这是个“三兄弟”,都是控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hour 最低。
      • log.retention.bytes:这是指定 Broker 为消息保存的总磁盘容量大小。
      • message.max.bytes:控制 Broker 能够接收的最大消息大小。
  • 小结
    • 今天我和你分享的所有参数都是那些要修改默认值的参数,因为它们的默认值不适合一般的生产环境
    • 在专栏的后面我们还会陆续提到其他的一些参数,特别是那些和性能息息相关的参数

猜你喜欢

转载自www.cnblogs.com/minimalist/p/12819948.html