温馨提示×

ubuntu kafka怎么限流

小樊
36
2026-10-20 03:47:29
栏目: 智能运维

在 Ubuntu 上部署的 Kafka,限流通常分为 Broker 级限流、Topic 级限流、Producer/Consumer 级限流 以及 网络/系统级限流。下面按常见场景给你一套实用方案。


一、Kafka 自带限流(最常用)

1️⃣ 限制 Producer / Consumer 吞吐量(推荐)

Kafka 支持通过 Quota(配额) 限制客户端流量。

限制某个用户的生产速率

kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'producer_byte_rate=1048576' \
  --entity-type clients --entity-name producer-app

限制为 1MB/s(1048576 字节)

限制某个用户的消费速率

kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'consumer_byte_rate=2097152' \
  --entity-type clients --entity-name consumer-app

查看当前配额

kafka-configs.sh --bootstrap-server localhost:9092 \
  --describe --entity-type clients

✅ 优点:不影响业务代码
❌ 缺点:基于 client.id / user


2️⃣ 限制 Topic 级流量

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

用于:

  • 副本同步限流
  • 迁移 Partition 时防止打满带宽

3️⃣ 限制副本同步(Replication)

kafka-configs.sh --bootstrap-server localhost:9092 \
  --alter --add-config 'follower.replication.throttled.rate=1048576' \
  --entity-type brokers --entity-default

常用于:

  • 集群扩容
  • 跨机房同步

二、使用 Kafka 参数限流(broker 配置)

编辑 server.properties:

# 单个 client 默认限流
quota.producer.default=1048576
quota.consumer.default=1048576

重启 Kafka:

systemctl restart kafka

三、应用层限流(Producer / Consumer)

Producer 限流(Java 示例)

props.put("linger.ms", 100);
props.put("batch.size", 16384);
props.put("max.in.flight.requests.per.connection", 1);

Consumer 限流

props.put("max.poll.records", 100);
props.put("fetch.max.bytes", 1048576);

适合:

  • 自己控制速率
  • 防止 Consumer 拖垮下游

四、系统 / 网络层限流(Ubuntu)

1️⃣ 使用 tc(Linux 流量控制)

限制 Kafka 端口(9092)带宽:

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

✅ 简单粗暴
❌ 不区分 topic / client


2️⃣ 使用 iptables + hashlimit

iptables -A INPUT -p tcp --dport 9092 \
  -m hashlimit --hashlimit-above 1mb/s \
  --hashlimit-mode srcip --hashlimit-name kafka \
  -j DROP

五、常见场景推荐方案

场景 推荐方案
防止某个消费者打满带宽 Kafka Quota
集群迁移 Replication Throttle
多租户隔离 user + quota
容器 / 云环境 tc / 网络策略
精确控制 应用层限流

如果你能告诉我:

  • Kafka 版本
  • 单机还是集群
  • 限流目的(防打满 / 多租户 / 迁移)

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

0 踩