Проектная лаборатория

Собственная Kafka

0 / 25этапов пройдено

Этап 12 · Список разделов

Список для нескольких топиков

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы реализуете ответ DescribeTopicPartitions для нескольких топиков.

Обработка нескольких топиков

Ранее вы возвращали метаданные одного топика. Теперь будете обрабатывать запросы сразу о нескольких топиках.

Запрос DescribeTopicPartitions может содержать несколько имён в массиве topics. Массив topics ответа должен включать соответствующую запись для каждого запрошенного топика.

Топики в ответе должны быть отсортированы по имени в алфавитном порядке. Это обеспечивает постоянный порядок независимо от порядка в запросе клиента.

Например, если клиент запрашивает "zebra" и "apple", в ответе сначала должен идти "apple", затем "zebra".

Тесты

Тестирующая система запустит вашу программу следующим образом:

$ ./your_program.sh /tmp/server.properties

Затем отправит запрос DescribeTopicPartitions (v0) с двумя именами топиков. У каждого топика будет один или два раздела.

Она проверит, что:

  • Поле message_size правильно отражает размер заголовка и тела.
  • Идентификатор корреляции в заголовке ответа совпадает с идентификатором в заголовке запроса.
  • Топики отсортированы по имени в алфавитном порядке.
  • Каждая запись топика содержит error_code, равное 0 (нет ошибки).
  • Каждое значение topic_name совпадает с одним из запрошенных топиков.
  • Каждое значение topic_id совпадает с настоящим UUID из метаданных кластера.
  • Массив partitions каждого топика содержит правильные записи разделов.
  • Все записи разделов содержат error_code, равное 0 (нет ошибки).
  • Каждое значение partition_index совпадает с настоящим идентификатором раздела из метаданных.
  • Значение next_cursor равно -1 (null).

Примечания

  • Топики в ответе должны быть отсортированы по имени в алфавитном порядке.
  • Каждый топик запроса получает полную отдельную запись в массиве topics ответа.
  • Полная схема ответа приведена в официальной документации DescribeTopicPartitions.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init kafka ./my-kafka --language go

2. Откройте папку в IDE

cd ./my-kafka

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage wq2

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста