kafka集群重要的参数配置(三)

Broker端的参数

  • log.dirs:这是非常重要的参数,指定了 Broker 需要使用的若干个文件目录路径。要知道这个参数是没有默认值的,这说明什么?这说明它必须由你亲自指定。
  • log.dir:注意这是 dir,结尾没有 s,说明它只能表示单个路径,它是补充上一个参数用的。
    只要设置log.dirs,即第一个参数就好了,不要设置log.dir。而且更重要的是,在线上生产环境中一定要为log.dirs配置多个路径,具体格式是一个 CSV 格式,也就是用逗号分隔的多个路径,比如/home/kafka1,/home/kafka2,/home/kafka3这样。最好保证这些目录挂载到不同的物理磁盘上。这样做有两个好处:提升读写性能:比起单块磁盘,多块物理磁盘同时读写数据有更高的吞吐量。能够实现故障转移:即 Failover。
  • auto.create.topics.enable:是否允许自动创建 Topic,设置为fasle因为一般生产环境产生很没见过的topic就是应为这个参数导致的
  • unclean.leader.election.enable 当同步数据比较多的副本都宕机了,而只剩下几个同步数据不多的副本选举是否进行leader选举的开关,由于kafka的有几个版本对这几个值的设置不一样,有的是默认fasle 有的是true。所以我们在使用的时候默认给false。如果开着就会产生数据丢失的问题
  • auto.leader.rebalance.enable: 是否定期对kafka的topic分区进行leader重选举,如果是true 就会导致leader A在这段时间表现很好但是由于要leader重选举将B换上来,这个是相当耗费性能的。所以还是设置为fasle
  • log.retention.{hours|minutes|ms}: 控制一条消息被保存的得时间。如log.retention.hours=168表示消息被存储的时间,这个时间根据自己的实际需求来设置。
  • log.retention.bytes: 这是指定 Broker 为消息保存的总磁盘容量大小这个值默认是 -1意思是保存多大的数据都是OK。看自己需求定
  • message.max.bytes:控制 Broker 能够接收的最大消息大小。默认的 1000012 太少了,还不到 1MB。实际场景中突破 1MB 的消息都是屡见不鲜的,因此在线上环境中设置一个比较大的值还是比较保险的做法。毕竟它只是一个标尺而已,仅仅衡量 Broker 能够处理的最大消息大小,即使设置大一点也不会耗费什么磁盘空间的。
  • listeners:学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
  • advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。

我们具体说说监听器的概念,从构成上来说,它是若干个逗号分隔的三元组,每个三元组的格式为<协议名称,主机名,端口号>。这里的协议名称可能是标准的名字,比如 PLAINTEXT 表示明文传输、SSL 表示使用 SSL 或 TLS 加密传输等;也可能是你自己定义的协议名字,比如CONTROLLER: //localhost:9092。

一旦你自己定义了协议名称,你必须还要指定listener.security.protocol.map参数告诉这个协议底层使用了哪种安全协议,比如指定listener.security.protocol.map=CONTROLLER:PLAINTEXT表示CONTROLLER这个自定义协议底层使用明文不加密传输数据。

至于三元组中的主机名和端口号则比较直观,不需要做过多解释。不过有个事情你还是要注意一下,经常有人会问主机名这个设置中我到底使用 IP 地址还是主机名。这里我给出统一的建议:最好全部使用主机名,即 Broker 端和 Client 端应用配置中全部填写主机名。 Broker 源代码中也使用的是主机名,如果你在某些地方使用了 IP 地址进行连接,可能会发生无法连接的问题。

参考极客时间: kafka技术核心和实战 https://time.geekbang.org/column/intro/191

原创文章 92 获赞 11 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40413961/article/details/105985367
今日推荐