#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
Это может показаться тонким, но это не так, сфера охвата вопроса широка.