Я встретил вопрос и мне нужна помощь.
Я проектирую простой файловый сервис (Http), с помощью которого пользователь может загружать / скачивать файлы, а также удалять файлы на файловом сервере.
Файловая служба будет хранить файлы на одном компьютере с Linux в родительской папке (например, /data/fileserver/
). Загруженный файл (например, xxx.mp4
) можно сохранить с указанием пути на компьютере, например /data/fileserver/demo/1/xxx.mp4
.
Вопрос в том, что:
Как избежать одновременных операций (сохранить / удалить) в этой файловой службе ?
, например
Пользователь A загружает файл xxx.mp4, а файловая служба сохраняет (еще не завершил) его путь /data/fileserver/demo/1/xxx.mp4
.
В то же время пользователь B вызывает delete api
этой файловой службы, чтобы удалить папку /data/fileserver/demo
. Эта операция удаления повлияет на операцию сохранения пользователя A.
Я надеюсь, что в этом случае операция удаления пользователя B. завершится неудачей.
Кажется, что модель блокирует ветку дерева, но я не знаю, как с ней справиться.
Файловый сервер основан на языке Java.
Спасибо.