0Pricing
Apache Kafka & Stream Processing Fundamentals · Урок

Ключи сообщений и стратегии распределения по разделам

Узнайте, как Kafka использует ключи сообщений для направления записей в разделы, как это гарантирует порядок и как проектировать ключи и пользовательские распределители.

«Ключи сообщений и стратегии распределения по разделам» — бесплатный урок Apache Kafka & Stream Processing Fundamentals на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Apache Kafka & Stream Processing Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Apache Kafka & Stream Processing Fundamentals содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The Role of the Key

Every Kafka record can carry an optional key. The key is not just data — it determines which partition the record is written to.

Default Partitioner

When a key is present, the default partitioner hashes it and maps the hash to a partition. The same key always lands in the same partition (for a fixed partition count).

partition = hash(key) % numPartitions

No Key Behavior

If you send records without a key, the producer distributes them across partitions (sticky batching in modern clients) for balanced load — but ordering across partitions is not guaranteed.

Ordering Guarantee

Kafka guarantees ordering only within a partition. By keying related records (e.g. all events for one order id), you guarantee they are processed in order.

send("orders", orderId, event);  // all events for an order stay ordered

Choosing a Good Key

A good key reflects your ordering and grouping needs.

  • User events keyed by userId.
  • Order events keyed by orderId.
  • Avoid keys with too few distinct values (causes hot partitions).

Hot Partitions

If one key value dominates traffic, its partition becomes a hotspot while others sit idle. Watch key cardinality and distribution to keep load balanced.

Keying in Spring Boot

Pass the key as the second argument to send; Spring forwards it to the partitioner.

kafkaTemplate.send("orders", order.getId(), payload);

Custom Partitioner

For special routing logic, implement the Partitioner interface and override partition().

public int partition(String topic, Object key, byte[] keyBytes,
        Object value, byte[] valueBytes, Cluster cluster) {
    return isVip(key) ? 0 : 1 + (Math.abs(key.hashCode()) % (n - 1));
}

Registering the Partitioner

Tell the producer to use your class via configuration.

spring:
  kafka:
    producer:
      properties:
        partitioner.class: com.example.VipPartitioner

Partition Count and Keys

Changing the partition count changes hash % numPartitions, so existing keys may move to new partitions, breaking ordering. Choose partition count carefully up front.

Putting It Together

Keys are the link between data and partitions. They give you per-key ordering, drive load distribution, and can be customized with a partitioner for advanced routing.

Quick Check

Test your understanding of keys and partitioning.

Recap

You learned message keys and partitioning.

  • The key determines the target partition via hashing.
  • Same key, same partition, ordered processing.
  • Low-cardinality keys cause hot partitions.
  • A custom Partitioner enables advanced routing.

Часто задаваемые вопросы

Урок «Ключи сообщений и стратегии распределения по разделам» бесплатный?

Да — полный текст урока «Ключи сообщений и стратегии распределения по разделам» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Apache Kafka & Stream Processing Fundamentals, подпишись на CoddyKit PRO. Курс Apache Kafka & Stream Processing Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Ключи сообщений и стратегии распределения по разделам»?

Узнайте, как Kafka использует ключи сообщений для направления записей в разделы, как это гарантирует порядок и как проектировать ключи и пользовательские распределители. Ты практикуешь Apache Kafka & Stream Processing Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Apache Kafka & Stream Processing Fundamentals?

Предыдущий опыт не требуется. Apache Kafka & Stream Processing Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Ключи сообщений и стратегии распределения по разделам»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Apache Kafka & Stream Processing Fundamentals?

Да. Каждый урок Apache Kafka & Stream Processing Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Отправка сообщений в Kafka
  2. Получение сообщений из Kafka
  3. Понимание разделов и смещений
  4. Ключи сообщений и стратегии распределения по разделам
← Назад к Apache Kafka & Stream Processing Fundamentals