синхронизация таблиц между различными службами(проектами)

#java #sql #spring-boot #aws-lambda #microservices

Вопрос:

Мне нужны некоторые предложения по таблицам данных snyc для разных сервисов(проектов) Я использую AWS lambda.

Проблема:

У service_A есть table_A,

каждый раз, когда вносите какие-либо обновления в table_A, отправляйте сообщение в service_B, чтобы сделать то же обновление в table_B, которое совпадает с table_A

иногда эти сообщения получают сбой

так что table_B теперь не то же самое, что table_A.

одно из предлагаемых решений состоит в том, чтобы создать задание планировщика и запросить table_A и опубликовать его в table_B

Есть еще какие-нибудь предложения по ведению такого дела?

Комментарии:

1. microservices.io/patterns/data/transactional-outbox.html

Ответ №1:

Системы всегда выходят из строя. Поэтому я думаю, что вам нужна стратегия для решения сценария неудачи. Вот мое предложение:

Обновление table_A > Лямбда X >> Очередь SQS >>> Лямбда Y >>>> Table_B

Здесь Lambda X будет отвечать только за отправку обновления в очередь SQS. Лямбда Y выберет сообщение из очереди и обновит таблицу B. Вам необходимо иметь политику повторных попыток в очереди на случай ошибки. Если он завершится неудачно после определенных повторных попыток, вы можете отправить сообщение в очередь мертвых писем и решить, что делать рядом с неудачным сообщением.

** Самое главное, что это обновление должно быть идемпотентным, потому что при повторной попытке возможно, что одно и то же сообщение будет обработано более одного раза.

Комментарии:

1. это именно то, что происходит сейчас, в некоторых случаях, как вы упомянули, произошел сбой. что мне нужно, так это постоянно синхронизировать table_A и table_B