Как измерить время выполнения асинхронного процесса в Datadog? - PullRequest
0 голосов
/ 26 января 2019

У меня есть проект на основе микросервиса с kafka, который я использовал для шины событий. У меня есть бизнес-процесс, который содержит несколько микросервисов. Микросервисы асинхронно общаются друг с другом с помощью кафки. Каждый экземпляр бизнес-процесса имеет уникальный process_id.

Давайте рассмотрим пример некоторого процесса:

  1. Пользователь создает процесс с request_id == 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4 в службе шлюза API.
  2. Служба шлюза API создает какое-либо событие для service1_in. Конечно, событие содержит 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4.
  3. Microservice_1 получает событие из service1_in и создает событие для service2_in.
  4. Microservice_2 получает событие из service2_in и создает событие для service1_in.
  5. Microservice_1 получает событие из service1_in и создает событие для service1_out.
  6. Служба шлюза API использует событие из service1_out и в конечном итоге возвращает результат клиенту.

Итак, мне нужно измерить время выполнения между различными этапами этого процесса. Например, я хочу знать, продолжительность между шагами 3 и 5, или 2 и 6.

Итак, я не знаю, как это измерить. У меня есть только одно решение. У меня может быть общая память (например, redis), где я могу хранить моменты времени для каждой основы процесса. В конце процесса я могу вычислить все метрики и выдвинуть его в виде базы данных.

...