温馨提示×

ubuntu kafka配置如何限流

小樊
50
2026-10-02 15:19:01
栏目: 智能运维

在 Ubuntu 上配置 Kafka 限流(流量控制),通常可以从 Broker 级限流、Producer/Consumer 级限流、Topic 级限流、以及操作系统/网络层限流 几个维度来做。下面按常见场景说明。


一、Kafka Broker 端限流(最常用)

Kafka 自带 配额(Quota) 机制,用于限制生产/消费速率。

1. 限制生产/消费速率(按 client / user)

编辑 Kafka 配置文件(通常是 /etc/kafka/server.properties 或 $KAFKA_HOME/config/server.properties):

# 开启配额
quota.producer.default=1048576      # 1MB/s
quota.consumer.default=2097152      # 2MB/s

或修改后重启 Kafka:

sudo systemctl restart kafka

2. 动态配置限流(推荐,无需重启)

# 限制某个 client.id 的生产速率为 1MB/s
kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'producer_byte_rate=1048576' \
  --entity-type clients --entity-name my-client-id

# 限制某个 consumer group 的消费速率
kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'consumer_byte_rate=2097152' \
  --entity-type groups --entity-name my-group

查看:

kafka-configs.sh --bootstrap-server localhost:9092 --describe \
  --entity-type clients --entity-name my-client-id

二、Topic 级别限流

1. 限制 Topic 的生产速率

kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'producer_byte_rate=1048576' \
  --entity-type topics --entity-name my-topic

2. 限制副本同步流量(防止同步打满网络)

# server.properties
leader.replication.throttled.rate=1048576
follower.replication.throttled.rate=1048576

或在 reassign 时指定:

kafka-reassign-partitions.sh ... --throttle 1048576

三、Producer / Consumer 应用层限流

1. Producer 端限流(应用代码)

Java 示例(令牌桶思路):

// 简单 sleep 控制
if (sentBytes > 1_000_000) {
    Thread.sleep(1000);
}

或使用:

  • Guava RateLimiter
  • Kafka 自带 linger.ms + batch.size

2. Consumer 端限流

consumer.poll(Duration.ofMillis(100));
// 控制 poll 频率

四、Linux / Ubuntu 网络层限流(兜底)

1. 使用 tc 限制网卡带宽

sudo tc qdisc add dev eth0 root tbf \
  rate 10mbit burst 32kbit latency 400ms

查看:

tc qdisc show dev eth0

删除:

sudo tc qdisc del dev eth0 root

五、常见建议

场景 推荐方式
防止某个客户端打满 client quota
防止副本同步影响业务 replication throttle
多租户隔离 user / client quota
整体机器带宽保护 tc

如果你能说明:

  • Kafka 版本
  • 是 生产限流 / 消费限流 / 副本限流
  • 是 单机还是集群

我可以给你更精确的配置示例。

0 踩