У меня есть проект на основе микросервиса с kafka
, который я использовал для шины событий. У меня есть бизнес-процесс, который содержит несколько микросервисов. Микросервисы асинхронно общаются друг с другом с помощью кафки. Каждый экземпляр бизнес-процесса имеет уникальный process_id
.
Давайте рассмотрим пример некоторого процесса:
- Пользователь создает процесс с
request_id == 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4
в службе шлюза API.
- Служба шлюза API создает какое-либо событие для
service1_in
. Конечно, событие содержит 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4
.
- Microservice_1 получает событие из
service1_in
и создает событие для service2_in
.
- Microservice_2 получает событие из
service2_in
и создает событие для service1_in
.
- Microservice_1 получает событие из
service1_in
и создает событие для service1_out
.
- Служба шлюза API использует событие из
service1_out
и в конечном итоге возвращает результат клиенту.
Итак, мне нужно измерить время выполнения между различными этапами этого процесса. Например, я хочу знать, продолжительность между шагами 3
и 5
, или 2
и 6
.
Итак, я не знаю, как это измерить. У меня есть только одно решение. У меня может быть общая память (например, redis), где я могу хранить моменты времени для каждой основы процесса. В конце процесса я могу вычислить все метрики и выдвинуть его в виде базы данных.