kafka的配置

server.properties

server.properties模板

bash 复制代码
# broker id,多个broker服务器的话,每个broker id必须不同
broker.id=1

# kafka broker所在节点的
hostnamehostname=10.1.1.1.3:9092

#  处理网络请求的线程数
num.network.threads= 8

# 执行磁盘IO的线程数
num.io.threads=8

# server使用的send buffer大小。
socket.send.buffer.bytes=1048576

# server使用的recive buffer大小。
socket.receive.buffer.bytes=1048576

# 接受的最大请求大小(防止OOM)
socket.request.max.bytes=104857600

#-------------added by Kaim ---------------
# 加入队列的最大请求数(超过该值,network thread阻塞)
queued.max.requests=16

# purgatory(炼狱)是个容器,用来存放不能马上答复的网络请求。如果能答复请求则从炼狱删除。这个是fetch炼狱保存的最大请求数。设置的比默认值小是据说因为这里有个BUG,不知道0.10.x中解决没

# BUG说明见:http://blog.csdn.net/stark_summer/article/details/50203133fetch.purgatory.purge.interval.requests=100

# 生产者炼狱保存的最大请求数
producer.purgatory.purge.interval.requests=100

############################# 日志配置#############################
# 可以设置多个日志存放的路径
log.dirs=~/kafka-logs

# 默认每个主题的分区数,生产环境建议值:
8num.partitions= 8

# 启停时做日志恢复每个目录所需的线程数,采用RAID的时候可以增大该值
num.recovery.threads.per.data.dir=1

# 写入磁盘的消息批大小
log.flush.interval.messages=10000

# 强制刷新消息到磁盘的时间阈值
log.flush.interval.ms=10000

# 日志保留的最少时间 由于做压测,防止占用磁盘太多,保留时间为1ms# 
log.retention.hours=168log.retention.minutes=5

# 每个日志段大小,超过该值会生成新日志段
log.segment.bytes=1073741824

# 检查日志分段文件的间隔时间,以确定是否文件属性是否到达删除要求。
log.retention.check.interval.ms=300000

# --------------added by kami--------------
# 自动创建主题
auto.create.topics.enable=true

# 当执行一次fetch后,需要一定的空间扫描最近的offset,设置的越大越好,一般使用默认值就可以
log.index.interval.bytes=4096

# 每个log segment的最大尺寸。注意,如果log尺寸达到这个数值,即使尺寸没有超过log.segment.bytes限制,也需要产生新的log  segment。log.index.size.max.bytes=10485760

# 检查是否需要fsync的时间间隔
log.flush.scheduler.interval.ms=2000

# 即使文件没有到达log.segment.bytes,只要文件创建时间到达此属性,就会创建新文件。
log.roll.hours=168

# server可以接收的消息最大尺寸。重要的是,consumer和producer有关这个属性的设置必须同步,否则producer发布的消息对consumer来说太大。默认值均为一百万
message.max.bytes=1000000

############################# Zookeeper #############################
# zookeeper server地址,如果有多个则用逗号分隔
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181

# Timeout in ms for connecting to zookeeper

# zk连接的超时时间
zookeeper.connection.timeout.ms=6000

# zk follower的同步延迟时间
zookeeper.sync.time.ms = 2000

############################ replication configuration added by KamiWan##############

# 从leader备份数据的线程数
num.replica.fetchers=4

# 备份时每次fetch的最大值
replica.fetch.max.bytes=1048576

# follwer执行fetcher请求时的最大等待时间
replica.fetch.wait.max.ms=500

# 默认的replication数量,可以根据所需要的可靠性要求来配置
default.replication.factor=2

# 性能调优
#处理网络请求的线程数
num.network.threads=3
#处理I/O操作的线程数
num.io.threads=8
#单个消息的最大大小
message.max.bytes=1000000

#安全配置
#代理间通信使用的协议
security.inter.broker.protocol=SASL_PLAINTEXT
#启用的SASL认证机制
sasl.enabled.mechanisms=PLAIN
#代理间通信使用的SASL机制
sasl.mechanism.inter.broker.protocol=

# 日志保留策略
log.retention.hours=168
 
# 控制器和集群相关配置
#控制器监听的名称
controller.listener.names=PLAINTEXT
#是否允许未同步的副本被选为领导者
unclean.leader.election.enable=false
#:写入消息时需要的最小同步副本数
min.insync.replicas=3

#Kafka 集群优化设置的参数
num.network.threads=9 (CPU数+1)默认是3
num.io.threads=16 (CPU数2到3倍)默认是8
# 每当producer写入10000条消息时,刷数据到磁盘
log.flush.interval.messages=10000
# 每间隔1秒钟时间,刷数据到磁盘
log.flush.interval.ms=1000
#默认是16384,有点小
batch.size = 100000
#加快备份的复制速度
num.replica.fetchers=4


#消息从内存中写入磁盘是时候使用的线程数量。
#用来处理磁盘IO的线程数量
num.io.threads=8
 
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
 
#接受套接字的缓冲区大小
socket.receive.buffer.bytes=102400
 
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600


#我们知道segment文件默认会被保留7天的时间,超时的话就
#会被清理,那么清理这件事情就需要有一些线程来做。这里就是
#用来设置恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
 
#segment文件保留的最长时间,默认保留7天(168小时),
#超时将被删除,也就是说7天之前的数据将被清理掉。
log.retention.hours=168
 
#滚动生成新的segment文件的最大时间
log.roll.hours=168
 
#日志文件中每个segment的大小,默认为1G
log.segment.bytes=1073741824
 
#上面的参数设置了每一个segment文件的大小是1G,那么
#就需要有一个东西去定期检查segment文件有没有达到1G,
#多长时间去检查一次,就需要设置一个周期性检查文件大小
#的时间(单位是毫秒)。
log.retention.check.interval.ms=300000
 
#日志清理是否打开
log.cleaner.enable=true
 
#broker需要使用zookeeper保存meta数据
zookeeper.connect=zk01:2181,zk02:2181,zk03:2181
 
#zookeeper链接超时时间
zookeeper.connection.timeout.ms=6000
 
#上面我们说过接收线程会将接收到的消息放到内存中,然后再从内存
#写到磁盘上,那么什么时候将消息从内存中写入磁盘,就有一个
#时间限制(时间阈值)和一个数量限制(数量阈值),这里设置的是
#数量阈值,下一个参数设置的则是时间阈值。
#partion buffer中,消息的条数达到阈值,将触发flush到磁盘。
log.flush.interval.messages=10000
 
#消息buffer的时间,达到阈值,将触发将消息从内存flush到磁盘,
#单位是毫秒
log.flush.interval.ms=3000

.index 文件:

描述:这是 Kafka 的偏移量索引文件。它用于快速查找消息在日志文件中的位置。

命名格式:00000000000000000000.index

作用:通过这个索引文件,Kafka 可以快速定位消息在日志文件中的物理位置,以便更快地读取消息。
.log 文件:

描述:这是 Kafka 的日志文件,存储实际的消息数据。

命名格式:00000000000000000000.log

作用:包含了生产者发送的消息内容。每个日志文件是一个分区的一部分,日志文件的命名表示消息的起始偏移量。
.timeindex 文件:

描述:这是 Kafka 的时间戳索引文件,存储消息的时间戳索引。

命名格式:00000000000000000000.timeindex

作用:通过这个文件,Kafka 可以根据时间戳快速查找消息。这个文件对于实现基于时间的消息查找非常重要。
.snapshot 文件:

描述:这是 Kafka 的快照文件,记录了日志段的元数据快照。

命名格式:00000000000000000016.snapshot

作用:用于恢复日志段的元数据,保证在崩溃恢复时能够正确地重建索引和时间戳数据。
leader-epoch-checkpoint 文件:

描述:这是 Kafka 用于记录 leader 选举周期的检查点文件。

作用:记录了分区的 leader 副本在不同的选举周期中的偏移量信息,帮助 Kafka 在故障恢复时确定正确的 leader 和消息偏移量。

partition.metadata 文件

  • 描述:这是 Kafka 的分区元数据文件。
  • 作用:存储分区的基本元数据信息,如分区的 leader、replica 列表等,用于分区的管理和协调
相关推荐
计算机毕设定制辅导-无忧学长14 分钟前
RabbitMQ 快速上手:安装配置与 HelloWorld 实践(二)
分布式·rabbitmq·ruby
啾啾Fun44 分钟前
【Java微服务组件】分布式协调P1-数据共享中心简单设计与实现
java·分布式·微服务
梦想画家4 小时前
Scrapy进阶实践指南:从脚本运行到分布式爬取
分布式·scrapy·数据工程
东阳马生架构5 小时前
Seata源码—5.全局事务的创建与返回处理二
分布式·seata·分布式事务
张伯毅6 小时前
Flink SQL 将kafka topic的数据写到另外一个topic里面
sql·flink·kafka
掘金-我是哪吒6 小时前
分布式微服务系统架构第133集:运维服务器6年经验,高并发,大数据量系统
运维·服务器·分布式·微服务·系统架构
尘世壹俗人9 小时前
hadoop.proxyuser.代理用户.授信域 用来干什么的
大数据·hadoop·分布式
白露与泡影9 小时前
基于Mongodb的分布式文件存储实现
分布式·mongodb·wpf
追风赶月、10 小时前
【Redis】redis用作缓存和分布式锁
redis·分布式·缓存
boring_11111 小时前
Apache Pulsar 消息、流、存储的融合
分布式·后端