@htmldeveloper

Как разрешить проблему рассинхронизации данных в микросервисной архитектуре?

существует сервис А с локальной базой данных A' - сервис пользователей
существует сервис B с локальной базой данных B' - сервис аватарок пользователей

бизнес-логика следующая:
- в сервисе A, в бд A', создается новый пользователь
- после успешного создания пользователя, получаем его id
- в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней

при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи:

1.
- в A -> A' создается запись, получаем id
- запрос в сервис B не состоялся - сервис B возвращает 500 ошибку

2.
- в A -> A' создается запись, получаем id
- делаем запрос в сервис B
- B не может записать данные в B' - база данных остановлена

3.
- в A -> A' создается запись, получаем id
- сервис A аварийно завершил работу, и не успел обратиться в сервис B

по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.

в реальных же условиях, число сервисов может достигать около 20 штук, и бизнес-операции могут затрагивать, например, 5 сервисов сразу, а число вариантов таких операций может быть много.

как решить проблему рассинхронизации данных в микросервисной архитектуре?
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы