Kafka
Kafka线上集群部署
操作系统
推荐Linux,以下三个方面优势:
- I/O模型的使用(epoll)
- 数据网络传输效率(零拷贝)
- 社区支持度
磁盘
Kafka大量使用顺序读写,使用机械磁盘即可
RAID(磁盘阵列):优势
Kafka在存储方面提供了便捷的高可靠性方案,故对RAID不是特别依赖,普通机械磁盘即可
磁盘容量
规划磁盘容量时需要考虑下面几个元素:
- 新增消息数
- 消息留存时间
- 平均消息大小
- 备份数
- 是否启用压缩
带宽
重要的集群配置参数
Broker端参数
文件路径相关
推荐配置:只设置log.dirs,不要设置log.dir
zk相关
-
zookeeper.connect CSV格式的参数,如:zk1:2181,zk2:2181,zk3:2181 Broker连接相关 -
listeners 监听器,告诉外部连接者通过什么协议访问指定主机名和端口开放的Kafka服务 -
advertised.listeners 这组监听器是Broker用于对外发布的 -
host.name/port 过期废弃
监听器–>三元组<协议名称, 主机名, 端口号>
第二个参数推荐使用主机名,而不使用IP
Topic管理相关
-
auto.create.topcs.enable 是否允许自动创建主题,推荐设为false -
unclean.leader.election.enable 关闭unclean Leader的选举,推荐设为false -
auto.leader.rebalance.enable 更换Leader,推荐设为false
数据保存相关
-
log.retention.{hours|minutes|ms} 一条数据的保存时间,ms优先级最高,通常使用hours;如log.retention.hours=168–>默认保留7天的数据 -
log.retention.bytes Broker为消息保存的总磁盘大小,默认为-1,不设大小限制 -
message.max.bytes 控制Broker能接受的最大消息大小,默认1M不到,太小,建议设置大一些 Topic级别参数
Topic级别参数会覆盖全局Broker参数,优先级更高。每个Topic也可以设置自己的参数
消息保存相关
-
retention.ms 规定该topic消息保存时长,默认7天,会覆盖Broker端参数 -
retention.bytes 为该Topic预留多大磁盘空间,默认-1,无限制。多租户Kafka集群中有用武之地 -
max.message.bytes 决定Broker能正常接收该topic的最大消息大小
Topic级别参数如何设置
JVM参数
Java7
- XX:+UseCurrentMarkSweepGC或-XX:UseParallelGC
Java8
操作系统参数
|