Consumer Group Partition Assignment

easy · distributed-systems, streaming, partitioning

Consumer Group Partition Assignment

A log has partitions partitions numbered 0..partitions-1. A consumer group has a list of consumer IDs in a fixed order.

Assign partitions to consumers in round-robin order: partition p goes to consumer at index p % len(consumers).

Return the assignments, preserving the order of consumers.

If consumers is empty or partitions <= 0, return nil.

Types

type Assignment struct {
    Consumer   int
    Partitions []int
}

Function signature

func AssignPartitions(consumers []int, partitions int) []Assignment

Example

consumers = [1,2,3]
partitions = 5

output = [
  {Consumer:1, Partitions:[0,3]},
  {Consumer:2, Partitions:[1,4]},
  {Consumer:3, Partitions:[2]}
]
Run tests to see results
No issues detected