Учитывая очень специфические c детали вашей архитектуры, прямым ответом будет распределенное управление транзакциями. Но это было бы немного сложнее не с точки зрения реализации, а с точки зрения обслуживания, производительности и т. Д. 1012 *.
Но мой вопрос: я чувствую, что в архитектуре есть какой-то недостаток, потому что если вам придется откатывать данные в сервисе 1 из-за какого-то сбоя в сервисе 2, то между ними существует тесная связь 2 услуги, и это не то, как микросервис должен вести себя так, как он должен быть независимым. Таким образом, вам, возможно, придется немного изменить архитектуру
- Вы можете разделить базу данных между микросервисами, что облегчит обработку транзакций.
- Вы можете ввести механизм связи между микросервисами, например Apache Кафка (RabbitMQ или Hazelcast экономически эффективны).