kafka的配置

一、生产者配置

NAME DESCRIPTION TYPE DEFAULT VALID VALUES IMPORTANCE
bootstrap.servers host/port列表,用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,…,无需添加所有的集群地址,kafka会根据提供的地址发现其他的地址(你可以多提供几个,以防提供的服务器关闭) list high
key.serializer 实现 org.apache.kafka.common.serialization.Serializer 接口的 key 的 Serializer 类。 class high
value.serializer 实现 org.apache.kafka.common.serialization.Serializer 接口的value 的 Serializer 类。 class high
acks 生产者需要leader确认请求完成之前接收的应答数。此配置控制了发送消息的耐用性,支持以下配置: string 1 [all, -1, 0, 1] high
acks=0 如果设置为0,那么生产者将不等待任何消息确认。消息将立刻添加到socket缓冲区并考虑发送。在这种情况下不能保障消息被服务器接收到。并且重试机制不会生效(因为客户端不知道故障了没有)。每个消息返回的offset始终设置为-1。
acks=1,这意味着leader写入消息到本地日志就立即响应,而不等待所有follower应答。在这种情况下,如果响应消息之后但follower还未复制之前leader立即故障,那么消息将会丢失。
acks=all 这意味着leader将等待所有副本同步后应答消息。此配置保障消息不会丢失(只要至少有一个同步的副本或者)。这是最强壮的可用性保障。等价于acks=-1。
buffer.memory 生产者用来缓存等待发送到服务器的消息的内存总字节数。如果消息发送比可传递到服务器的快,生产者将阻塞max.block.ms之后,抛出异常。 long 33554432 [0,…] high
此设置应该大致的对应生产者将要使用的总内存,但不是硬约束,因为生产者所使用的所有内存都用于缓冲。一些额外的内存将用于压缩(如果启动压缩),以及用于保持发送中的请求。
compression.type 数据压缩的类型。默认为空(就是不压缩)。有效的值有 none,gzip,snappy, 或 lz4。压缩全部的数据批,因此批的效果也将影响压缩的比率(更多的批次意味着更好的压缩)。 string none high
retries 设置一个比零大的值,客户端如果发送失败则会重新发送。注意,这个重试功能和客户端在接到错误之后重新发送没什么不同。如果max.in.flight.requests.per.connection没有设置为1,有可能改变消息发送的顺序,因为如果2个批次发送到一个分区中,并第一个失败了并重试,但是第二个成功了,那么第二个批次将超过第一个。 int 0 [0,…,2147483647] high
ssl.key.password 密钥仓库文件中的私钥的密码。 password null high
ssl.keystore.location 密钥仓库文件的位置。可用于客户端的双向认证。 string null high
ssl.keystore.password 密钥仓库文件的仓库密码。只有配置了ssl.keystore.location时才需要。 password null high
ssl.truststore.location 信任仓库的位置 string null high
ssl.truststore.password 信任仓库文件的密码 password null high
batch.size 当多个消息要发送到相同分区的时,生产者尝试将消息批量打包在一起,以减少请求交互。这样有助于客户端和服务端的性能提升。该配置的默认批次大小(以字节为单位): int 16384 [0,…] medium
不会打包大于此配置大小的消息。
发送到broker的请求将包含多个批次,每个分区一个,用于发送数据。
较小的批次大小有可能降低吞吐量(批次大小为0则完全禁用批处理)。一个非常大的批次大小可能更浪费内存。因为我们会预先分配这个资源。
client.id 当发出请求时传递给服务器的id字符串。这样做的目的是允许服务器请求记录记录这个【逻辑应用名】,这样能够追踪请求的源,而不仅仅只是ip/prot。 string “” medium
connections.max.idle.ms 多少毫秒之后关闭闲置的连接。 long 540000 medium
linger.ms 生产者组将发送的消息组合成单个批量请求。正常情况下,只有消息到达的速度比发送速度快的情况下才会出现。但是,在某些情况下,即使在适度的负载下,客户端也可能希望减少请求数量。此设置通过添加少量人为延迟来实现。- 也就是说,不是立即发出一个消息,生产者将等待一个给定的延迟,以便和其他的消息可以组合成一个批次。这类似于Nagle在TCP中的算法。此设置给出批量延迟的上限:一旦我们达到分区的batch.size值的记录,将立即发送,不管这个设置如何,但是,如果比这个小,我们将在指定的“linger”时间内等待更多的消息加入。此设置默认为0(即无延迟)。假设,设置 linger.ms=5,将达到减少发送的请求数量的效果,但对于在没有负载情况,将增加5ms的延迟。 long 0 [0,…]
要检查和验证 Kafka配置设置,可以通过多种方式进行,包括直接检查配置文件、验证服务启动状态、以及通过客户端连接测试。以下是详细步骤: ### 验证 Kafka 配置文件 Kafka 的主要配置文件是 `server.properties`,通常位于 `config/` 目录下。需要检查的关键配置包括: - `broker.id`:确保每个 broker 的 ID 唯一。 - `listeners`:检查监听地址和端口是否正确配置,例如 `PLAINTEXT://:9092`。 - `log.dirs`:确认日志存储路径是否正确且具有写入权限。 - `zookeeper.connect`:验证是否正确指向 Zookeeper 服务地址。 - `num.partitions`:确认默认分区数量是否符合预期需求。 对于启用 SASL/PLAIN 认证的情况,需要检查 `sasl.enabled.mechanisms` 和 `sasl.mechanism.inter.broker.protocol` 配置项是否正确设置为 `PLAIN` [^1]。 ### 验证 Kafka 服务启动状态 在 Kafka 服务器上执行以下命令来启动 Kafka: ```bash bin/kafka-server-start.sh config/server.properties & ``` 启动后,可以通过以下命令检查 Kafka 进程是否运行: ```bash jps -ml ``` 如果 Kafka 成功启动,应该能看到 `Kafka` 进程 [^3]。 ### 验证端口监听情况 使用以下命令检查 Kafka 是否在预期端口上监听: ```bash netstat -tuln | grep 9092 ``` 如果 Kafka 正确配置并运行,应该能看到类似 `tcp6 0 0 :::9092 :::* LISTEN` 的输出 [^3]。 ### 验证 SASL/PLAIN 认证配置 创建一个 `kafka_client_jaas.conf` 文件,内容如下: ```conf KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="user" password="password" user_user="password"; }; ``` 然后设置 JVM 参数以使用该 JAAS 配置文件: ```bash export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf" ``` 使用 Kafka 自带的生产者和消费者脚本进行测试: ```bash bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning ``` 如果能够成功发送和接收消息,则表示 SASL/PLAIN 认证配置成功 [^1]。 ### 验证 SSL 配置 为验证 SSL 配置,首先需要确保 Kafka配置文件中包含以下设置: - `ssl.keystore.location=/path/to/keystore.jks` - `ssl.keystore.password=keystore_password` - `ssl.key.password=key_password` - `ssl.truststore.location=/path/to/truststore.jks` - `ssl.truststore.password=truststore_password` - `ssl.client.auth=required` 使用带有 SSL 配置的客户端进行连接测试,确保能够成功建立加密连接 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值