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
Поставьте звезду ⭐, если вы нашли этот проект полезным.
