Правильный способ POST данных в базе данных через запрос REST API от одного сервера к другому? - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу создать запись в моей базе данных.Это должен сделать один из моих микросервисов.Но запрос поступает с внешнего интерфейса в другой микросервис.Теперь микросервисы взаимодействуют с помощью вызовов REST API.Я читал, что в Java, если вы хотите сделать запрос на другой микросервис из микросервиса, вы должны сделать запрос в отдельном потоке и установить таймауты.То же самое в Python, вы должны наложить тайм-ауты.

Но что, если мой запрос успешен, но запрос, который я сделал в тайм-ауте?Предположим, это критическая вставка в базу данных.А что если все попытки повторных попыток (предположим, 3 попытки) из-за задержки в сети, но все они были успешными операциями вставки.Затем предположим, что в примере, как показано на рисунке, пользователь размещает заказ наложенным платежом, служба заказа обновляет базу данных новым заказом, а затем служба заказа отправляет HTTP-запрос в службу оплаты, чтобы добавить запись в базу данных для истории платежей.Теперь, как я описал случай, в каждой таблице повторов будет 3 повторяющихся записи.

Как мы решаем эту проблему, не проверяя дорогостоящую операцию повторного ввода перед каждой вставкой?

В основном я работал на внешнем интерфейсе, но теперь я хочу переключиться на внутренний.Эта проблема была в моей голове все время, пожалуйста, помогите!

Пожалуйста, взгляните на эту диаграмму для более четкого понимания потока

1 Ответ

0 голосов
/ 08 февраля 2019

вы можете отправлять асинхронные вызовы, но в этом случае вы не будете знать об ответе Успех или Сбой.

Для дублированных записей вы можете добавить проверку проверки на принимающей стороне, чтобы пропустить вставку, если запись уже существует в db

...