← Назад ко всем вопросам

Что такое correlation id / request id и зачем он QA

1️⃣ Как кратко ответить

Correlation ID или Request ID — это уникальный идентификатор, присваиваемый каждому запросу в распределенной системе для отслеживания его прохождения через различные сервисы. Для QA это важно, так как позволяет эффективно отслеживать и анализировать выполнение запросов, выявлять и устранять ошибки, а также улучшать качество и надежность системы.

2️⃣ Подробное объяснение темы

В распределенных системах, где множество сервисов взаимодействуют друг с другом, важно иметь возможность отслеживать, как запросы проходят через всю систему. Для этого используется Correlation ID или Request ID — уникальный идентификатор, который присваивается каждому запросу.

Зачем нужен Correlation ID

  1. Отслеживание запросов: В сложных системах запрос может проходить через множество сервисов. Correlation ID позволяет связать все эти шаги в единое целое, чтобы можно было проследить путь запроса от начала до конца.

  2. Диагностика и отладка: Если в системе возникает ошибка, Correlation ID помогает быстро найти, где именно произошел сбой. Это особенно полезно для QA-инженеров, которые занимаются тестированием и отладкой системы.

  3. Анализ производительности: Correlation ID позволяет измерять время, затраченное на обработку запроса, и выявлять узкие места в системе.

  4. Логирование: Все логи, связанные с конкретным запросом, можно легко найти и проанализировать, если они содержат Correlation ID.

Как это работает

Когда запрос поступает в систему, ему присваивается уникальный Correlation ID. Этот ID передается вместе с запросом через все сервисы, которые участвуют в его обработке. Каждый сервис добавляет информацию о своей работе в лог, включая Correlation ID, что позволяет связать все записи логов, относящиеся к одному запросу.

Пример использования

Предположим, у нас есть система, состоящая из трех сервисов: A, B и C. Запрос поступает в сервис A, который затем передает его в сервис B, а тот — в сервис C.

Запрос -> Сервис A -> Сервис B -> Сервис C

Каждый из этих сервисов добавляет запись в лог:

  • Сервис A: 2023-10-01 10:00:00 [Correlation ID: 12345] Запрос получен
  • Сервис B: 2023-10-01 10:00:01 [Correlation ID: 12345] Запрос обработан
  • Сервис C: 2023-10-01 10:00:02 [Correlation ID: 12345] Запрос завершен

Пример кода

Рассмотрим пример на Python, где мы добавляем Correlation ID в заголовки HTTP-запроса.

import requests
import uuid
​
# Генерируем уникальный Correlation ID
correlation_id = str(uuid.uuid4())
​
# Устанавливаем заголовки, включая Correlation ID
headers = {
    'Content-Type': 'application/json',
    'Correlation-ID': correlation_id
}
​
# Отправляем HTTP-запрос с заголовками
response = requests.get('http://example.com/api', headers=headers)
​
# Печатаем статус ответа
print(f'Status Code: {response.status_code}')
  • import requests и import uuid: Импортируем необходимые библиотеки. requests используется для отправки HTTP-запросов, а uuid для генерации уникальных идентификаторов.
  • correlation_id = str(uuid.uuid4()): Генерируем уникальный Correlation ID с помощью функции uuid4().
  • headers = {...}: Создаем словарь заголовков, включая Content-Type и Correlation-ID.
  • response = requests.get(...): Отправляем GET-запрос на указанный URL с заданными заголовками.
  • print(...): Выводим статус-код ответа, чтобы убедиться, что запрос был обработан.

Использование Correlation ID помогает QA-инженерам эффективно отслеживать и анализировать запросы, улучшая качество и надежность системы.

Тема: Логи, мониторинг и анализ
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки