Kafka部分集群参数设置(上)

Broker端参数设置:

kafka broker端参数也被称为静态参数,所谓静态参数,是指你必须在kafka的配置文件serve.properties中进行设置的参数,只要有修改,就必须重启broker进程才能令它们生效。

存储信息相关参数:

log.dirs:指定了broker需要使用的若干个文件目录路径。

log.dir:表示单个路径。

一般你只要设置log.dirs就可以,多个的话采用csv格式,即用逗号隔开。如果有条件的话最好将这些目录挂载到不同的物理磁盘上,这样有两个好处:

1、提升读写性能:比起单块磁盘,多块物理磁盘同时读写数据有更高的吞吐量。

2、能够实现故障转移:即Failover。坏掉的磁盘上的数据会自动地转移到其他正常的磁盘上,而且broker还能正常工作。

ZooKeeper相关的设置:

zookeeper.connect:是一个csv格式的参数,比如zk1:2181,zk2:2181,zk3:2181

多个kafka使用同一套ZooKeeper集群,如两套集群kafka1和kafka2可以指定为zk1:2181,zk2:2181,zk3:2181/kafka1和zk1:2181,zk2:2181,zk3:2181/kafka2

Borker连接相关的配置

listeners:监听器,指定外部连接者要通过什么协议访问指定主机名和端口开放的kafka服务。若干个逗号分隔的三元组,每个三元组的格式为<协议名称,主机名,端口号>,

比如CONTROLLER: //localhost:9092。一旦自己定义了协议名称,还必须指定listener.security.protocol.map参数告诉这个协议底层使用了哪种安全协议,比如:listener.security.protocol.map=CONTROLLER:PLAINTEXT表示CONTROLLER

这个自定义协议底层使用明文不加密传输数据。

advertised.listeners:Advertised的含义表示宣称的,公布的,就是说这组监听器是broker用于对外发布的。

host.name/port:这两个参数key用设置,过期的参数。

最好全部用主机名,即broker端和client端应用配置中全部填写主机名。broker源代码中也使用的是主机名,如果在某些地方使用了IP地址进行连接,可能会发现无法连接问题。

Topic管理相关参数:

auto.create.topic.enable:是否允许自动创建topic。建议设置成false,即不允许自动创建Topic。

unclean.leader.election.enable:是否允许Unclean Leader选举。设置成false,坚决不能让那些落后太多的副本竞选Leader。这个做的后果就是这个分区不可用了,因为没有leader。设置成true,那么kafka允许你从那些“跑得慢”的副本中选一个出来

当leader。这样做的后果是数据可能丢失,因为这些副本保存的数据本来就不全,这个参数在最新版的kafka中默认就是false,建议设置成false。

auto.leader.rebalance.enable:是否允许定期进行leader选举。设置成true表示允许kafka定期对一些topic分区进行leader重选举,它不是选leader,而是换leader!比如leaderA一直表现很好,但若这个参数设置成true,那么有可能一段时间后leaderA就要被强行卸任换成leaderB。换一次leader的代价很高,原本向A发送请求的所有客户端都要切换成向B发送请求,而且换leader本质上,没有任何性能收益,因此建议设置成false。

数据留存参数设置

log.retention.{hours|minutes|ms}:从优先级上来说ms设置最高、minutes次之、hours最低。比如log.eatention.hours=7表示默认保存7天的数据。

log.retention.bytes:这是指定broker为消息保存的总磁盘容量大小。默认为-1,表示你想在这条broker上保存多少数据都可以。这个参数真正发挥作用的场景其实是在云上构建kafka集群:设想你要做一个云上的卡夫卡服务,每个租户只能使用100GB的磁盘空间,为了避免有个“恶意”使用过多的磁盘空间,设置这个参数就显得至关重要。

message.max.bytes:控制broker能够接收的最大消息大小。

猜你喜欢

转载自www.cnblogs.com/lincf/p/11978343.html