Пока оставлю как я сделал. Перед созданием заказа - проверять все продукты на "удаленность". Если ничего нет - отправляю на создание. Если есть удаленные, то напишу ошибку и перерисую корзину, что мол товары недоступны
Межсервисные запросы аля распределенные транзакции это нормальная ситуация. Так и должно быть... Разделяешь на микросервисы решаешь одни проблемы - получаешь другие проблемы
Так ведь не заказ лезет в продукт, а ещё корзина же - или вы создаёте заказы и тут же их отмняете? Корзине нормально лезть в продукт для обновления данных в ней
Я могу сказать одно.... Всё что касается денег и ценностей типа остатков на складе я бы положил в реляционку... Остальное... Типа карточек товара и цен в какой нить эластик... Не думаю что точное количество очень надо покупателям в режиме рв... Проверять наличие на этапе оформления заказа и всё
Я не просто так выше пример привёл с чуваком, который пошёл данные кредитки на сайте вводить. В некоторых пейментах уже на этом этапе надо, чтоб заказ был создан - и его единственная причина отклонения может быть реджекнутый пеймент (и ни в коем случае не удалённый продукт)
Убедитесь, главное, что у вас не будет оплаченных (возможно, даже отменённых) заказов, с удалёнными продуктами - иначе большой риск, что клиенты свалят после таких случаев