Skip to content

AxonOps — AI-Native Control Plane for Open Source Data Platforms

Kafka Client Connection Architecture

Kafka clients communicate with brokers through a custom binary protocol over TCP. Unlike traditional databases where a load balancer routes requests, Kafka clients are topology-aware and route requests directly to the appropriate broker based on partition leadership. Understanding this architecture is essential for building performant applications and diagnosing connection-related issues.

Client ApplicationKafka ClusterApplication CodeKafkaProducer/ConsumerNetworkClientSelectorMetadata CacheBroker 1Broker 2Broker 3API callssend/receivepartition lookupI/O operationsTCP (partitions 0,3)TCP (partitions 1,4)TCP (partitions 2,5)

Kafka clients maintain persistent TCP connections to brokers. This connection model provides:

  • Direct routing - Clients connect directly to partition leaders
  • Multiplexing - Multiple concurrent requests per connection
  • Automatic failover - Transparent reconnection on broker failures
  • Topology awareness - Routing based on partition leadership
1. Bootstrap
└── Client connects to bootstrap.servers
└── Fetches cluster metadata
└── Discovers all brokers and partition leaders
2. Steady State
└── Maintains one connection per broker needed
└── Refreshes metadata periodically
└── Routes requests to partition leaders
3. Failure Handling
└── Detects connection failures
└── Refreshes metadata for new leaders
└── Retries requests per retry policy
└── Reconnects with exponential backoff
ComponentPurposeDocumentation
Kafka ProtocolBinary wire protocol for client-server communicationKafka Protocol
Connection PoolingManages TCP connections to brokersConnection Pooling
AuthenticationVerifies client identity (SASL, mTLS)Authentication
Metadata ManagementTracks cluster topology and partition leadersMetadata Management
Load BalancingRoutes requests based on partitioningLoad Balancing
BatchingAccumulates messages for efficient transmissionBatching
CompressionReduces network bandwidth at batch levelCompression
Failure HandlingRetries, idempotence, and transactionsFailure Handling
ThrottlingQuotas and rate limitingThrottling

A typical request flows through several layers before reaching the broker:

ApplicationProducer.ConsumerMetadataNetworkClientBrokerApplicationApplicationProducer/ConsumerProducer/ConsumerMetadataMetadataNetworkClientNetworkClientBrokerBrokersend(record)getLeader(partition)brokersend(request)Request frameResponse frameresponseFuture/RecordMetadata
  1. Request Submission - Application calls producer send() or consumer poll()
  2. Partition Determination - Producer calculates partition from key or uses partitioner
  3. Leader Lookup - Client looks up partition leader from metadata cache
  4. Request Encoding - Request is encoded into binary protocol frame
  5. Batching (Producer) - Messages are accumulated into batches
  6. Network Transmission - Frame sent over TCP with optional compression
  7. Response Handling - Response decoded and returned to application

The Kafka protocol has several important characteristics:

The protocol uses a compact binary format with a 4-byte length prefix:

  • Efficient serialization/deserialization
  • Zero-copy buffer management
  • Predictable memory allocation

Multiple requests can be in flight simultaneously on a single connection:

  • Each request tagged with correlation ID
  • Responses can arrive out of order
  • Maximizes connection utilization

API versions are negotiated per-request:

  • Backward compatibility with older servers
  • Access to newer features when available
  • Graceful feature degradation

Bootstrap Servers Required

The bootstrap.servers configuration is required. Include multiple brokers (2-3 recommended) for redundancy during broker failures or maintenance.

ParameterDescriptionTypical Value
bootstrap.serversInitial brokers for discovery3+ brokers
client.idClient identifier for loggingMeaningful name
request.timeout.msRequest completion timeout30000
connections.max.idle.msClose idle connections540000 (9 min)
ParameterDescriptionDefault
reconnect.backoff.msInitial reconnection backoff50
reconnect.backoff.max.msMaximum reconnection backoff1000
socket.connection.setup.timeout.msTCP connection timeout10000
ParameterDescriptionDefault
send.buffer.bytesTCP send buffer size131072 (128KB)
receive.buffer.bytesTCP receive buffer size65536 (64KB)
max.in.flight.requests.per.connectionConcurrent requests per broker5

Kafka clients maintain awareness of cluster topology through metadata management.

  • Cluster ID - Unique cluster identifier
  • Brokers - All broker addresses, IDs, and racks
  • Topics - Topic names and partition counts
  • Partition Leaders - Current leader broker for each partition
  • ISR - In-sync replicas for durability guarantees

Metadata is refreshed:

  • On initial connection
  • When metadata.max.age.ms expires (default 5 minutes)
  • On NOT_LEADER_OR_FOLLOWER errors
  • On UNKNOWN_TOPIC_OR_PARTITION errors (if the topic is expected to exist)
  • When accessing a new topic

Metadata Refresh on Errors

When a client receives a NOT_LEADER_OR_FOLLOWER error, it automatically refreshes metadata to discover the new partition leader before retrying the request.


Each TCP connection has overhead:

  • Memory for send/receive buffers
  • File descriptors on client and broker
  • TCP keepalive traffic

Kafka minimizes connections by:

  • Using one connection per broker (not per partition)
  • Multiplexing requests on each connection
  • Maintaining connections only to needed brokers
ComponentTypical RangeOptimization
Metadata lookup< 1 μsCache partition info
Batch accumulation0-linger.msTune linger.ms
Network RTT0.1-2 ms (same DC)Co-locate clients
Broker processing1-50 msTune broker resources
Serialization1-100 μsUse efficient serializers

Latency ranges

These ranges are illustrative and vary by hardware, workload, network conditions, and broker configuration.

Maximum throughput depends on:

  • Batch size and linger time
  • Number of partitions (parallelism)
  • Compression efficiency
  • Network bandwidth
  • Broker disk I/O capacity

  • Core APIs - Produce, Fetch, Metadata, ApiVersions
  • Consumer APIs - JoinGroup, SyncGroup, Heartbeat, OffsetFetch/Commit
  • Share Group APIs - ShareFetch, ShareAcknowledge, ShareGroupHeartbeat (Kafka 4.0+)
  • Admin APIs - CreateTopics, DeleteTopics, DescribeConfigs, AlterConfigs
  • Transaction APIs - InitProducerId, AddPartitionsToTxn, EndTxn
  • Error Codes - Error code reference, retriable vs non-retriable errors
  • Batching - Record accumulator, batch configuration, memory management
  • Compression - Codecs (GZIP, Snappy, LZ4, ZSTD), batch compression
  • Load Balancing - Partitioning strategies, consumer assignment, rack awareness

FeatureMinimum Kafka Version
Basic protocol0.8.0
SASL authentication0.9.0
Idempotent producer0.11.0
Transactions0.11.0
Flexible protocol versions2.4.0
KRaft mode2.8.0 (introduced), 3.3.0 (production-ready)