#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:
Системы всегда выходят из строя. Поэтому я думаю, что вам нужна стратегия для решения сценария неудачи. Вот мое предложение:
Обновление table_A > Лямбда X >> Очередь SQS >>> Лямбда Y >>>> Table_B
Здесь Lambda X будет отвечать только за отправку обновления в очередь SQS. Лямбда Y выберет сообщение из очереди и обновит таблицу B. Вам необходимо иметь политику повторных попыток в очереди на случай ошибки. Если он завершится неудачно после определенных повторных попыток, вы можете отправить сообщение в очередь мертвых писем и решить, что делать рядом с неудачным сообщением.
** Самое главное, что это обновление должно быть идемпотентным, потому что при повторной попытке возможно, что одно и то же сообщение будет обработано более одного раза.
Комментарии:
1. это именно то, что происходит сейчас, в некоторых случаях, как вы упомянули, произошел сбой. что мне нужно, так это постоянно синхронизировать table_A и table_B