1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/college996-zwz-netdisk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Платформа

В Gitee и GitHub в основном не удаётся найти одну полезную, функционально полную и открытую систему облачного хранения данных. Поэтому в рабочее время была разработана лёгкая и простая в использовании система облачного хранения, основанная на современных подходах к разделению на клиентскую и серверную части и микросервисной архитектуре. Система включает в себя множество решений и подходит для изучения студентами без опыта работы над проектами.

У системы облачного хранения есть две основные цели:

  • предоставить клиентское ПО для интеграции с бизнес-системами и централизованного управления файлами бизнес-систем;
  • обеспечить онлайн-координацию офисной работы и управление личными файлами. Система будет регулярно обновляться и улучшаться.

Архитектура развёртывания

[Изображение «Схема архитектуры»]

Описание стека технологий

Клиентская часть:

  • Vue.js + ElementUI — базовая технологическая структура;
  • WebUploader.js — инструмент для загрузки файлов по частям.

Серверная часть:

  • Maven + SpringBoot + SpringDataJPA — базовая архитектура;
  • Dubbo + Zookeeper — управление сервисами;
  • Nacos — центр конфигурации;
  • Redis — распределённое кэширование, мониторинг истечения срока действия;
  • Zookeeper — распределённая блокировка;
  • WebSocket + Netty — отправка сообщений;
  • Solr — полнотекстовый поиск;
  • FastDFS — распределённая файловая система;
  • на основе Redis + token + пользовательские аннотации — реализация уникальности интерфейсов.

Функции

  1. Система облачного хранения

    • Загрузка: основное внимание уделяется загрузке больших файлов по частям, быстрой загрузке и загрузке папок.
    • Скачивание: основное внимание уделяется скачиванию больших файлов по частям; объединению нескольких файлов (папок) и сжатию перед загрузкой.
    • Общий доступ к файлам: общий доступ к файлам включает общий доступ между друзьями, приватные ссылки общего доступа и совместное использование файлов.
    • Галерея: можно создавать разные галереи для управления фотографиями, а также просматривать фотографии онлайн.
    • Корзина: удалённые файлы попадают в корзину, откуда их можно восстановить или окончательно удалить.
    • Отправка уведомлений: в первую очередь это уведомления о совместном доступе к файлам, уведомления об истечении срока действия и уведомления об изменении объёма.
    • Распределённая блокировка: основана на Zookeeper для обеспечения безопасности данных в системе при высокой параллельной нагрузке.
    • Мониторинг истечения срока действия: основан на событиях истечения срока действия в Redis, включая мониторинг совместного доступа к файлам и мониторинг удаления по истечении срока действия.
    • Сбор журналов: журналы запросов пользователей собираются с помощью AOP и передаются на сервер журналов; настраиваемый фильтр Dubbo используется для создания идентификаторов ссылок.
    • Поиск файлов: интегрирована платформа Solr для полнотекстового поиска.
    • Хранение файлов: интегрирована система FastDFS для распределённого хранения файлов.
    • Прочие функции: например, сложные, мобильные, предварительные просмотры, удаление, переименование, создание онлайн, редактирование онлайн, сохранение истории версий и т. д.
    • Онлайн-редактирование офисных документов: обновление запланировано на более поздний срок.
    • Версия H5: клиентская версия для браузера: запланированное обновление на 25 апреля.
    • Версия C/S: клиентская версия для компьютера: запланированное обновление на более поздний срок.
    • Клиент API для бизнес-системы: уже реализовано.
    • Добавление водяных знаков к изображениям: запланированное обновление на более поздний срок.
    • Обрезка изображений онлайн: запланированное обновление на более поздний срок.
  2. Административная часть

    • Управление компонентами: в основном отвечает за управление предварительным просмотром и редактированием компонентов файлов.
    • Управление типами: в основном связано с управлением форматами файлов, соответствующими значками, предварительным просмотром и компонентами редактирования.
    • Управление журналами: хранение и отображение журналов операций бизнес-систем, а также возможность связывать все журналы с помощью идентификатора отслеживания.

Установка

См.: https://gitee.com/college996/zwz-netdisk/wikis.

Позже будет разработан сценарий автоматической установки для быстрого локального развёртывания.

Обновления

14 апреля 2020 года — первое обновление

Изменения

  • Разработан клиент для интеграции с бизнес-системой, netdisk-client и netdisk-client-provider.
  • Улучшена уникальность интерфейса: RedisTemplate выполняет LUA-скрипт для обеспечения атомарности; проверка существования ключа и сохранение значения являются атомарными операциями; netdisk-web-perpc/src/main/java/com.micro.idempotence.NoRepeatAop.
  • Добавлен сбор журналов: добавлен переключатель (конфигурация Nacos: busilog.state = off); netdisk-log-api/src/main/java/com.micro.logs.aop.CollectionLogAop.
  • Усовершенствованы функции Redis: добавлен пароль Redis для предотвращения атак (конфигурация Nacos: redispwd = xxxx).
  • Решена проблема с временными записями блоков после объединения вызовов: временные записи блоков удаляются из Redis после завершения вызова, чтобы избежать перегрузки из-за большого количества записей блоков с истёкшим сроком действия.

Как получить эту версию

  • Извлечь код серверной части.
  • Обновить клиентскую часть: zwz-disk-manage (добавлено приложение для управления файлами в бизнес-системе), обновить адрес: https://gitee.com/college996/zwz-disk-manage.git.
  • Получить файл конфигурации Nacos nacos_config_20200414.zip из общего доступа к файлам или из вложений.
  • При установке Redis необходимо задать пароль. См. инструкции по установке Redis.

SDK для подключения к бизнес-системе [выпущено 14 апреля]

1. Функции

См. мою статью: https://mp.weixin.qq.com/s?__biz=MzUzMzE3MDcwMQ==&mid=2247483693&idx=1&sn=f81a094019bb3d88cf6bb035e7c932d9&chksm=faa95e4fcdded7593ab31dc8c9920f79290b07bc006ac7f5d4396e66cfec8c3aa6aae5a82769&token=545547741&lang=zh_CN#rd.

2. Как интегрировать

Шаг 1: Запустите netdisk-service-provider.jar. Шаг 2: Запустите netdisk-client-provider.jar. Шаг 3: Зарегистрируйте бизнес в административной части, сначала администратор должен добавить запись в административную часть, затем вы можете получить APPID (административная часть → модуль управления приложениями). Шаг 4: Бизнес-система: используйте собственный метод для интеграции, импортируйте disk-client-javasdk.jar или соответствующий ему пакет. Пример кода:

public static void main(String[] args){
    List<HostBean> hosts=new ArrayList<>();
    hosts.add(new HostBean("127.0.0.1", 8015, 1));
    FileService fs=FileFactory.createFileService(hosts,"ddd");

    //проверка md5 существует ли
    String appId="11111";
    String filemd5="xxxx";        
    int count=fs.checkFileByMd5(appId, filemd5);
}

Шаг 5: Бизнес-система, интеграция с использованием SpringBoot starter, импортируйте netdisk-spring-boot-starter.jar по координатам. Пример кода:

@Autowired
private FileService fs;

@RequestMapping("/upload")
public String upload() throws InterruptedException{
    String appId="11111";
    String filemd5="xxxx";
    //проверка md5 существует ли
    int count=fs.checkFileByMd5(appId, filemd5);
}

application.properties

netdisk.server.host=127.0.0.1:8015

3. Описание API

Поскольку существует слишком много API, они здесь не перечислены. Пожалуйста, обратитесь к файлу API, где параметры API описаны очень чётко: netdisk-client-javasdk/src/main/java/com.micro.netdisk.javasdk.service.FileService.

Другие связанные адреса

Открыт публичный аккаунт в WeChat, продолжаю писать оригинальные статьи с техническим содержанием

[Автор:] Спасибо за подписку на мою колонку на сайте Moke.net. Поскольку комментарии на этом сайте должны быть одобрены администрацией, возможно, я не сразу увижу ваши сообщения. Но я постараюсь ответить как можно скорее.

Я заметил, что у многих из вас всё ещё есть вопросы. Чтобы помочь вам разобраться, вы можете связаться со мной через WeChat по номеру zwyjavaee. Я готов обсудить содержание моей колонки, систему сетевого диска и любые технические вопросы. Я открыт для общения и надеюсь на конструктивный диалог!

Пожалуйста, при добавлении меня в друзья укажите «Moke.net» или «Code Cloud».

Изображение: [см. картинку]

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Фронтенд и бэкенд разделены, фронтенд реализован на Vue.js с использованием ElementUI, бэкенд использует микросервисную архитектуру на основе стека технологий SpringBoot, Dubbo, Zookeeper и Nacos. Дизайн сайта лаконичный и красивый, им легко пользоваться и его легко освоить. Развернуть Свернуть
AFL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/college996-zwz-netdisk.git
git@api.gitlife.ru:oschina-mirror/college996-zwz-netdisk.git
oschina-mirror
college996-zwz-netdisk
college996-zwz-netdisk
master