Trung BìnhKafka iconKafka

Partition key design trong Kafka: cách chọn key để tránh hotspot và đảm bảo ordering?

Partition key quyết định message vào partition nào (hash(key) % numPartitions).

  • Chọn key sai dẫn đến: hotspot (một partition bị overload), hoặc mất ordering (message liên quan vào partition khác nhau). Nguyên tắc chọn key: chọn field có cardinality cao và phân phối đều — user_id, order_id, device_id tốt hơn country_code hay status.
  • Key phải là field mà ordering quan trọng trong context của nó: tất cả event của cùng order_id phải theo thứ tự → dùng order_id làm key. Tránh hotspot: nếu key phân phối không đều (một số user_id hoạt động cực nhiều), thêm random suffix: user_id + '-' + random(0, N) — nhưng sẽ mất ordering global per user.
  • Kỹ thuật khác: key salting key + timestamp_bucket — partition thay đổi theo thời gian.
  • Tăng số partition cũng giúp giảm hotspot nhưng không giải quyết root cause nếu key quá skewed.

Xem toàn bộ Kafka cùng filter theo level & chủ đề con.

Mở danh sách Kafka