Blog

Kafka at Scale | Lessons from 1000+ Broker Clusters

A Kafka cluster with a few dozen brokers can be run with discipline, good dashboards, and a careful SRE rotation. A Kafka estate with 1000+ brokers is a different machine. The same concepts still apply: partitions, replicas, leaders, ISR, retention, quotas, consumer lag, and controller metadata. What changes is the cost of every physical action. Moving a partition is no longer background work, and adding capacity becomes a negotiation between storage balance, network saturation, failure domains, and on-call risk.

That is the real lesson of Kafka at scale: the hard part is not producing more messages. Kafka is excellent at that. The hard part is operating broker-local state when partitions, disks, availability zones, teams, and failure cases grow faster than human planning capacity.

Kafka at Scale Pain Map

Scale Turns Best Practices into Trade-Offs

Small Kafka clusters reward local reasoning. If one broker runs hot, you move partitions. If disk fills, you add brokers, expand volumes, or reduce retention. These actions are sensible because the blast radius is still legible. At 1000+ brokers, the same actions interact in ways that are harder to model, because partition count becomes a product of organizational behavior as much as technical design. Every team wants isolation and headroom; the platform team inherits the aggregate metadata and movement cost.

The second trap is unevenness. A large Kafka cluster rarely fails because average throughput is too high. It fails because a subset of partitions, leaders, consumers, disks, or AZ links become hot while the rest of the fleet looks healthy. Average CPU says "fine." The broker handling the wrong leaders says something less polite. At this point, capacity planning has to become topology planning.

The recurring pain points are familiar, but their shape changes:

  • Partition reassignment becomes operationally expensive. Reassignment is a data movement workflow when partitions are bound to broker-local disks. Large movements compete with production traffic and can run long enough to cross maintenance windows.
  • Cross-AZ replication becomes a cost center. Multi-AZ Kafka improves availability, but each replica write may create inter-zone network traffic depending on placement and cloud provider billing. At large throughput, the network line item stops being background noise.
  • Broker replacement becomes state recovery. Losing a broker is not only losing compute. It also means rebuilding or moving the data that lived on its disks, while preserving availability and avoiding a second failure during recovery.
  • On-call work becomes coordination work. The incident is often not "Kafka is down." It is "this topic family is lagging, this AZ link is saturated, and this rebalance is half-complete."

None of these problems mean Kafka is broken. They mean Kafka's original shared-nothing storage model has real operational consequences once the cluster becomes a fleet.

The Unit of Scaling Is the Wrong Question

The obvious question is "How many brokers can Kafka handle?" It is useful, but it is not the question that decides production stability. A better question is: "What must move when I add, remove, or fail a broker?" Broker count is visible, but state movement is the hidden variable. A cluster can have enough aggregate CPU, disk, and network, yet still be fragile because the next expansion forces a wave of partition movement.

The capacity model needs to separate resources that Kafka often ties together in practice: compute, storage, network, and operations. Platform teams want to add brokers based on traffic, grow retention independently, keep replication predictable, and make changes during normal hours. Traditional Kafka often couples those decisions through broker identity, local log ownership, replica placement, and large data movement workflows.

Scale Bottleneck Matrix

Rebalancing Is Where Scale Becomes Visible

Kafka operators often talk about rebalancing as if it were one thing, but large-scale production work usually involves several different movements. Consumer group rebalances move partition ownership among consumers. Leader rebalancing changes where reads and writes concentrate. Partition reassignment moves replica data across brokers, which turns a placement decision into a data copy.

At smaller scale, teams can treat reassignment as routine hygiene. At larger scale, reassignment needs the same seriousness as a migration. You choose throttles, monitor ISR health, watch disk watermarks, track network links, and plan rollback criteria. The cruel part is that the need for rebalance usually appears when the system is already under pressure: a broker group is hot, a disk tier is near capacity, or a topic family grew faster than forecast.

There is also a human limit. Platform teams can automate preferred leader election, Cruise Control proposals, rack-aware placement, and quota controls, but the risk does not disappear. Automation proposes a plan; the cluster still has to move bytes.

The most scalable rebalance is the one you do not need to run as a data movement job.

That sentence sounds too neat until a maintenance window gets consumed by a reassignment that was perfectly reasonable on paper. The goal is not to eliminate balancing. It is to make routine scaling less dependent on moving durable log segments between brokers.

Cross-AZ Cost Is Architecture, Not Accounting

Multi-AZ Kafka is a reliability pattern, but it is also a network topology. With replication factor 3, Kafka commonly places replicas across availability zones so the cluster can survive an AZ-level failure. That gives the right durability posture for serious production systems, and it also means write traffic, follower fetch traffic, inter-broker replication, and consumer placement can create cross-AZ paths.

The exact bill depends on region, provider, traffic shape, compression, consumer placement, and whether clients are zone-aware. The important point does not require a universal price estimate: cross-AZ traffic grows with throughput, replication, and topology mistakes. At 1000+ brokers, a small inefficiency repeated across many topics becomes infrastructure tax.

Large teams usually attack the problem with rack-aware replica placement, zone-aware clients, follower fetching, and traffic class separation. Those tactics help, but they still operate inside the assumption that brokers own data. Once the cluster is large enough, the higher-leverage question becomes whether durable data needs to be physically attached to broker lifecycle at all.

Capacity Planning Becomes Failure Planning

In a 1000+ broker estate, "capacity" is not a single number. It is spare CPU for traffic bursts, spare disk for retention drift, spare network for replication catch-up, controller headroom for metadata churn, and human attention for incident response. This is why large Kafka teams cap partition density, reserve disk headroom, isolate noisy topics, restrict high-partition topic creation, and run reassignment in windows even when automation could start immediately.

Mature teams also standardize by workload class. Observability streams, transactional events, analytics replay, and shared platform topics all need different defaults. That is where Kafka operations become platform product work: safe limits and enough flexibility for application teams without letting the cluster become a collection of exceptions.

The Architecture Pattern: Make Brokers Disposable

If the core pain is stateful data movement, the natural design response is to remove durable state from broker lifecycle. That is the premise behind diskless Kafka architectures: brokers keep the Kafka protocol and compute path, while durable log storage moves to shared object storage or an object-storage-compatible layer. A write-ahead log absorbs latency-sensitive writes, and long-lived stream data sits outside individual broker disks.

This is not the same as traditional tiered storage. Tiered storage can offload older segments, but the broker still owns the hot local log. Diskless architecture goes further: broker compute becomes more replaceable because the durable stream is not trapped on that broker's volume. Scaling a broker pool becomes closer to scaling stateless services, while metadata and routing decide which broker serves which traffic.

Large-Scale Diskless Architecture Pattern

The operational implications are direct:

  • Scale-out does not have to imply large partition copies. Broker capacity can join the pool without first becoming the owner of a pile of local log segments.
  • Failure recovery focuses on compute replacement. If a broker dies, durable data remains in shared storage, so recovery does not start with rebuilding that broker's disks.
  • Cross-AZ replication can be redesigned. The storage layer can provide durability while brokers route traffic zone-aware.

There are still hard problems. The WAL must be designed carefully. Metadata correctness matters. Object storage behavior has to be understood, not hand-waved away. Diskless Kafka does not remove engineering work; it moves the work away from repeatedly moving durable state between brokers.

Production Signals from AutoMQ Deployments

Architecture only matters if it survives production pressure. AutoMQ keeps Kafka protocol compatibility while separating broker compute from durable storage, and the most relevant proof points are large environments where traditional Kafka operations were already painful.

Poizon is a useful example because the workload shape is exactly where scale economics show up. AutoMQ's public customer material describes Poizon replacing a 1,280-core observability cluster, reaching 40 GiB/s peak throughput, and reducing infrastructure cost by half while running stably for nearly three years. Those numbers are not a generic promise; they are production validation for high-throughput, cost-sensitive streaming.

JD.com is a different proof point. Its public AutoMQ case study describes JDQ, a Kafka-based real-time data platform serving more than 1,400 business lines across more than 40 departments, with large-scale Kubernetes deployment and CubeFS-compatible shared storage. The write-up says JD.com improved Kubernetes scaling efficiency from hours to minutes after adopting AutoMQ's shared storage architecture. The transferable lesson is that broker-local storage was the bottleneck even for a team already running Kafka on Kubernetes at massive scale.

Together, these cases point to the same architectural conclusion. Large Kafka teams do not need another slogan about elasticity. They need fewer workflows where changing compute capacity requires moving durable log data.

A Practical Checklist for 1000+ Broker Kafka

Before changing architecture, make the existing operating model explicit. Do expansion events require long partition reassignment windows? Is cross-AZ traffic a major line item? Does broker loss create long recovery risk because durable state is trapped on instances? Some clusters need better topic governance, quota enforcement, or cleaner AZ-aware client placement. But if the recurring pain is state movement, no amount of dashboard polish changes the underlying physics.

The Future of Kafka at Scale Is Less Stateful

Kafka became the default streaming backbone because it made distributed logs practical for application teams. At small and medium scale, the shared-nothing broker model is understandable and robust. At 1000+ brokers, that same model turns infrastructure changes into data logistics. The platform team spends too much energy deciding when it is safe to move bytes that should not be tied so tightly to compute lifecycle.

The future pattern is not "no operations." Serious streaming systems will always need operational discipline. The future pattern is fewer stateful operations on the critical path: stateless broker pools, shared durable storage, metadata-oriented scaling, zone-aware routing, and workload governance.

If every capacity change feels like a migration, that is the signal. Broker count is the visible symptom. Stateful data movement is the disease you actually have to treat. Start by mapping the operations that move data, then decide which ones should still exist in the next version of your Kafka platform.

References

Newsletter

Subscribe for the latest on cloud-native streaming data infrastructure, product launches, technical insights, and efficiency optimizations from the AutoMQ team.

Join developers worldwide who leverage AutoMQ's Apache 2.0 licensed platform to simplify streaming data infra. No spam, just actionable content.

I'm not a robot
reCAPTCHA

Never submit confidential or sensitive data (API keys, passwords, credit card numbers, or personal identification information) through this form.