There are only two hard problems in two-phase distributed transactions:
2. Exactly-once delivery
1. Guaranteed order of messages
2. Exactly-once delivery
.docx | |
---|---|
report | report |
- Группа:
P3315
- Студенты:
- @maxbarsukov: Барсуков Максим Андреевич
367081
; - @pmpknu: Горляков Даниил Петрович
367165
.
- @maxbarsukov: Барсуков Максим Андреевич
Доработать ИС из ЛР2
следующим образом:
- Реализовать сохранение загруженных на сервер файлов, используемых для импорта данных, в файловом хранилище
MinIO
(можно взять любое другое S3-совместимое хранилище). Поднять и настроитьMinIO
требуется самостоятельно. Загруженные файлы должны быть доступны для скачивания из таблицы с логом импорта. - Сохранение загруженных файлов в файловом хранилище должно быть реализовано транзакционно по отношению к операциям, реализующим непосредственную вставку объектов в БД при импорте.
- Для реализации распределенной транзакции из пункта 2 разрешается использовать любые инструменты. Рекомендуется решать задачу при помощи собственной реализации двух фазного коммита.
- Необходимо на защите быть готовым продемонстрировать корректность реализованной распределенной транзакции в следующих условиях:
- отказ файлового хранилища (БД продолжает работать)
- отказ БД (файловое хранилище продолжает работать)
- ошибка в бизнес-логике сервера (работают и БД, и файловое хранилище, однако в коде сервера вылетает
RuntimeException
между запросами в разные источники данных)
- Необходимо на защите быть готовым продемонстрировать корректность работы распределенной транзакции в условиях параллельных запросов от нескольких пользователей (реализованный в
ЛР2
сценарий дляApache JMeter
, тестирующий функцию импорта, должен продолжать корректно отрабатывать).
- Текст задания.
- UML-диаграммы классов и пакетов разработанного приложения.
- Исходный код системы или ссылка на репозиторий с исходным кодом.
- Выводы по работе.
Java Transaction API
. Основные принципы и программные интерфейсы. Работа сJTA
в приложениях на базеSpring
.- Двухфазная фиксация в распределенных транзакциях (two-phase commit protocol).
- Распределенные транзакции, спецификация XA. Реализация в приложениях на базе
Jakarta EE
иSpring
. - Менеджеры транзакций. Использование менеджера транзакций в приложениях на базе
Spring
.
Экспорт переменных окружения:
export $(cat .env | xargs)
База данных и MinIO:
docker compose up
Запуск back-end:
./gradlew bootRun
Запуск front-end:
cd frontend
yarn install
yarn start
Проект доступен с открытым исходным кодом на условиях Лицензии MIT.
Авторские права 2024 Max Barsukov
Поставьте звезду ⭐, если вы нашли этот проект полезным.