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