Как отследить состояние асинхронного длительного процесса из сервисов весенней загрузки без сохранения состояния в GCP? - PullRequest
0 голосов
/ 16 сентября 2018

У нас есть несколько сервисов Spring Boot, работающих на GCP Kubernetes Engine , которые предоставляют своим клиентам HTTP (через gRpc) API. Одна задача - импортировать очень большие файлы данных. Предлагаемый способ - загрузить файлы в хранилище Google и запустить асинхронный импорт , указав путь к файлу в месте импорта и вернуть HTTP 202, если запрос был действительным. Затем мы устанавливаем статус импорта в ожидании в слое постоянства (гаечный ключ) и запускаем процесс асинхронного анализа и пакетного приема. Если импорт был успешным, мы устанавливаем статус завершен. Единственный способ узнать, успешен ли импорт, - это вернуться и опросить наш API на предмет текущего статуса.

И тогда возникает вопрос. Существует несколько блоков с балансировкой нагрузки одного типа. Если происходит сбой службы импорта (я имею в виду сбой, а не обработку исключений), у нас нет простого способа окончательно установить статус «Прерванный». Статус останется в ожидании навсегда.

Мы хотели бы обойти использование дополнительного слоя, такого как Hazelcast, если это возможно. Также мы хотели бы избежать использования другой службы, которая напрямую взаимодействует с тем или иным модулем, наблюдает за состояниями и выполняет некоторые причудливые функции обратного вызова.

Может ли кто-нибудь дать подсказку, как решить эту проблему наилучшим образом?

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...