Трассировка в отключенных системах

Я знаю, что есть библиотеки для трассировки запросов в распределенных системах на основе OpenTracing и OpenTelemetry; все это работает, потому что запросы связаны/связаны (микросервисы общаются друг с другом). Как отследить, когда системы/службы отключены?

Служба X вызывает службу Y. Y выполняет некоторую обработку, а затем записывает в общую папку. Компонент Z опрашивает общее местоположение (после нескольких часов) и выполняет обработку.

Я хочу знать, если для каждого запроса, сгенерированного X, статус в каждой из этих 3 систем.

Простой способ отследить это — создать таблицу и обновить записи БД. Однако, учитывая тот факт, что мне может потребоваться повторить определенные действия, я подумал о внедрении механизма рабочего процесса (Cadence), который открывает рабочий процесс в Службе X. Затем в каждой из Служб рабочий процесс обновляется. Если запрос достигает Y, шаг в w/f завершен. Если он не достигает Z, рабочий процесс остается открытым, и через некоторое время я могу создать электронное письмо и т. Д., В котором говорится, что рабочий процесс не удался.

Мне нужна помощь, чтобы понять, правильный ли это способ и/или разные методы для этого.

1 ответ

Это один из наиболее типичных вариантов использования Cadence Workflow. Рекомендуемое решение — позволить сервису X запустить рабочий процесс. Он выполнит действие, чтобы сделать вызов службы для службы Y. Если возможно, пусть компонент Z отправит сигнал рабочему процессу, сообщая, что обработка завершена. Или у вас может быть другое действие, чтобы продолжать опрос статуса.

Обратите внимание, что можно легко отменить повторную попытку для действий, поддерживаемых Cadence.

Затем используйте таймер в рабочем процессе, чтобы активировать действие для отправки электронной почты.

Наконец, статус этого рабочего процесса по-прежнему является локальной переменной рабочего процесса. Вы можете внедрить обработчик запросов в рабочий процесс, чтобы получить статус. Или вы можете реализовать фоновую активность, чтобы заранее сообщать о прогрессе.

Фреймворк открытой библиотеки трассировки предназначен для решения другой проблемы. Это измерение и анализ зависимости от службы и задержки. На самом деле, рабочий процесс Cadence также поддерживает открытую трассировку, вот пример . Это для уровня обслуживания, а не для конкретных запросов или обработки.

Другие вопросы по тегам