Универсальное управление транзакциями Java

#java #amazon-web-services #amazon-s3 #transactions

#java #amazon-веб-сервисы #amazon-s3 #транзакции

Вопрос:

Я разрабатываю java-сервер, который хранит файлы на Amazon S3. Мне нужно иметь управление транзакциями с помощью S3 таким образом, чтобы в случае сбоя операции с внешним сервером каждый файл, который был сохранен на S3, должен быть откат.

Это в основном похоже на управление транзакциями в базе данных, за исключением того, что источником данных в данном случае является AWS S3, это могла быть и файловая система.

Я не смог найти существующие технологии и задавался вопросом, нужно ли мне просто реализовать это или для этого уже существует библиотека / технология.

Заранее спасибо.

Ответ №1:

Не существует какого-либо готового способа реализации управления транзакциями; поэтому вам придется самостоятельно кодировать логику и реализацию.

Единственное преимущество, которое у вас есть по отношению к S3, заключается в том, что вы никогда не получите грязное чтение или грязную запись. S3 всегда выдает вам полностью обработанный файл (blob), даже если он в данный момент записывается. Это снижает нагрузку на прикладывание усилий к реализации критической секции, блокировке и т. Д. Он напрямую поддерживается AWS.

Итак, я предлагаю способ реализации процесса транзакции

  • Выполните начальный процесс и вызовите серверы / службы (как вы упомянули)
  • Если это работает нормально, отправьте данные в S3
  • если вызов / обработка данных завершились с ошибкой, вы ничего не сделаете

Другой альтернативой является передача данных в S3, если в случае необходимости отката транзакции вы можете удалить ключ S3

Это может показаться тонким, но это не так, сфера охвата вопроса широка.