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

OSCHINA-MIRROR/wewwww-education-cloud

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

Распределённая онлайн-платформа для образования

Это система для онлайн-образования, которая подходит для разных отраслей. Система основана на платформе Spring Cloud Alibaba для микросервисной разработки, использует Spring Boot 2.2.0 и Spring Cloud (Hoxton.RELEASE) с основными компонентами, а также Nacos для регистрации и настройки центра. Фронтенд реализован с помощью vue-element-admin.

Официальный QQ-чат (получите SQL-скрипт после добавления в группу)

Присоединиться к группе можно по ссылке: //shang.qq.com/wpa/qunwpa?idkey=eda8d54aba0a0d56d9030be06b7b8fdd07f438bf113b7f11fd8541fc9f181feb. QQ-чат: 1093045884.

Связанные проекты

Онлайн-система образования использует архитектуру разделения фронтенда и бэкенда, где фронтенд является отдельным проектом. Education-cloud — это бэкенд-проект, основанный на Spring Cloud Alibaba. Education-cloud-web — это фронтенд-проект с порталом, который использует Vuejs и Nuxt.js. Education-cloud-admin — это административный бэкенд, использующий vue-element-admin в качестве основы.

Выбор технологий

  • Регистрация и обнаружение сервисов: Nacos.
  • Отказоустойчивость: Hystrix + Turbine.
  • Балансировка нагрузки клиента: Ribbon.
  • Вызов внутренних сервисов: Feign.
  • Шлюз: Spring Cloud Zuul.
  • Аутентификация и авторизация: JWT.
  • Мониторинг программы: Spring Boot Admin / Spring Boot Actuator.
  • Распределённый центр конфигурации: Nacos.
  • База данных: MySQL 5.7.
  • Развёртывание: Docker + docker-compose.
  • Инструмент сборки: Maven.
  • API-документация для бэкенда: swagger-bootstrap-ui.
  • Файловая система: Alibaba Cloud.
  • Кэширование: Redis.
  • Фронтенд: Vue.

Проект education-cloud стремится создать распределённую онлайн-платформу для образования, подходящую для различных отраслей. Платформа использует разделение фронтенда и бэкенда с фронтендом на основе Vue.js и бэкендом на Spring Cloud Hoxton.RELEASE, Spring Cloud JWT и Spring Cloud Alibaba. Основные функции включают потоковую передачу курсов, поддержку нескольких облачных видеосервисов, управление учебными материалами, поддержку нескольких облачных хранилищ, управление преподавателями и возможность размещения преподавателей.

Система имеет следующие особенности:

  • Архитектура разделения фронтенда и бэкенда с чистым взаимодействием на основе токенов.
  • Защита микросервисов с доступом к ресурсам только через шлюз микросервисов.
  • Интеграция Prometheus, SpringBootAdmin и многомерного мониторинга микросервисов.
  • Интеграция Spring Cloud Alibaba Nacos для управления сервисами и централизованной конфигурации.
  • Интеграция Zuul для обеспечения отказоустойчивости.
  • Интеграция Swagger для создания дружественных интерфейсов с использованием шлюза для объединения документов API микросервисов.
  • Микросервисы Dockerized с использованием Docker Compose для развёртывания одним щелчком мыши.
  • Интеграция Skywalking APM.
  • Интеграция ELK для централизованного управления журналами и анализа проблем.
  • Поддержка развёртывания в кластерах Kubernetes (в разработке).
  • Подробные документы по использованию и руководства по установке (постоянно обновляются).

Фронтенд включает:

  • Главная страница с навигацией, рекламой и курсами.
  • Список функций с категориями, поиском и курсами.
  • Детали курса с описанием, каталогом, покупкой и воспроизведением.
  • Личный кабинет с личной информацией, паролем, заказами и записями об обучении.
  • Кабинет преподавателя с информацией о преподавателе, курсах и доходах.

Бэкенд включает:

  • Управление правами с настраиваемыми ролями и пользователями.
  • Настройка системы с пользовательскими параметрами сайта и сторонними настройками.
  • Управление преподавателями с заявками на размещение и внутренними курсами.
  • Управление курсами с внутренними курсами преподавателей и внутренним утверждением.
  • Вход пользователя с ограничением одного аккаунта на одного пользователя одновременно.
  • Управление рекламой с настраиваемой рекламой.
  • Платёжный модуль с ожидаемой интеграцией WeChat и Alipay.

Структура проекта:

education-cloud
├── education-cloud-gateway -- модуль на основе Zuul
├── education-cloud-job -- модуль задач
├── education-cloud-server-admin -- модуль мониторинга
├── education-cloud-course -- модуль курсов
|        |─education-cloud-course-feign  API-интерфейсы модуля курсов
|        │─education-cloud-course-service  модуль услуг курсов
├── education-cloud-system -- системный модуль управления
|        |─education-cloud-system-feign  API-интерфейсы системного модуля
|        |─education-cloud-system-service  системный модуль услуг
├── education-cloud-user -- пользовательский модуль
|        |─education-cloud-user-feign  API-интерфейсы пользовательского модуля
|        |─education-cloud-user-service  пользовательский сервисный модуль
├── education-cloud-util -- общий модуль
├── doc -- документы и инструкции
         |─config  файлы конфигурации промежуточного программного обеспечения и системные файлы конфигурации
         |─deploy  руководство по установке среды инструментов
         |─docker  файл развёртывания среды Docker
         |─script  файл сценария однократного развёртывания, в основном запускающий файл docker-compose службы
         |─sql     Файлы базы данных проекта

Развёртывание поддерживается как вручную, так и с помощью Docker:

  • Запуск IDEA.
  • Развёртывание jar-файла.
  • Развёртывание Docker (на основе Rancher для управления контейнерами).
  • Развёртывание в K8s (поддержка в будущем).

Демонстрация:

Фронтенд: Lek.os.roncoo.com.
Бэкенд: Панель управления. Создание education-course, education-system, education-user, nacos четырёх баз данных. Файлы со сценариями создания базы данных находятся в папке проекта doc/sql (включая nacos sql), их можно напрямую импортировать;
  • установить IDEA и импортировать проект. Перед этим необходимо установить плагин lombok в IDEA. Репозиторий исходного кода: git clone https://gitee.com/wewwww/education-cloud.git;

  • после импорта проверить конфигурацию mysql, redis, elasticsearch (обратить внимание на конфигурацию es кластера) в каждом микросервисе в NACOS;

  • порядок запуска проекта:

    • запустить сервис курса education-cloud-course: просто запустить функцию main класса com.education.cloud.CourseServiceApplication;
    • запустить системный сервис education-cloud-system: просто запустить функцию main класса com.education.cloud.SystemServiceApplication;
    • запустить пользовательский сервис education-cloud-user: просто запустить функцию main класса com.education.cloud.UserServiceApplication;
    • запустить шлюзовой сервис education-cloud-gateway: просто запустить функцию main класса com.education.cloud.GatewayApiApplication;
    • запустить службу задач education-cloud-job: просто запустить функцию main класса com.education.cloud.CrontabPlanApplication;
    • запустить административный сервис мониторинга education-cloud-server-admin: просто запустить функцию main класса com.education.cloud.server.admin.ServerAdminApplication;
  • проверить статус микросервиса http://localhost:5721/, логин: admin, пароль: 123456;

  • протестировать доступ к интерфейсу API http://localhost:5840/api/doc.html;

Запуск фронтенда

Запуск системы управления операциями
  • для запуска фронтенда требуется использовать Node версии 9.0.0 или выше;
  • использовать npm install -g cnpm --registry=https://registry.npm.taobao.org;
  • установить зависимости: cnpm install;
  • запустить локальную разработку: npm run dev;
  • собрать пакет для производственной среды: npm run build;
  • адрес доступа: http://localhost:5800/;
Импорт и запуск портальной системы
  • для запуска фронтенда требуется использовать Node версии 9.0.0 или выше;
  • использовать npm install -g cnpm --registry=https://registry.npm.taobao.org;
  • установить зависимости: cnpm install;
  • запустить npm run dev;
  • адрес доступа: http://127.0.0.1:3000/.

Развёртывание в среде Docker

Запуск бэкенда

  • используйте виртуальную машину для установки CentOS 7.5 или облачный сервер, способ установки определяется самостоятельно.

  • установите Docker, docker-compose и среду Harbor согласно инструкции в каталоге doc/deploy;

  • в IDEA в корневом каталоге проекта education-cloud выполните mvn install, это автоматически упакует каждый сервис в образ и загрузит его в репозиторий Harbor (для сборки образов также требуется установка Docker, см. инструкцию в каталоге doc/deploy);

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

  • этот проект использует docker-compose для автоматического развёртывания;

  • файл развёртывания:

    • просмотрите файлы docker/docker-compose в каталоге doc;
    • поместите все файлы docker-compose в каталог docker-compose файлов в каталоге docker в один каталог на сервере Linux, рекомендуется создать новый каталог для хранения всех файлов docker-compose;
  • для удобства развёртывания используется сценарий оболочки для однократного развёртывания, подробности см. в файле doc/script/start.sh (поддерживает параметры pull, run, pullrun, stop, restart, removeAll).

    • в сценарии оболочки переменная префикса образа BASE_IMAGE_NAME должна быть изменена на префикс вашего образа в репозитории Harbor;
    • перед выполнением сценария оболочки предоставьте сценарию разрешения на выполнение: ./chmod u+x start.sh;
    • после того как все проекты, фронт и бэкенд, будут упакованы и загружены в репозиторий Harbour, выполните ./start.sh pullrun для извлечения образа и создания контейнера;

Запуск фронтенда (используя Docker, необходимо построить образ вручную и отправить его в удалённый репозиторий)

Запуск системы управления операциями
  • git https://gitee.com/wewwww/ducation-cloud-web-admin.git;
  • перейдите в каталог education-cloud-admin, например, выполните команду docker build -t 127.0.0.1/edu-cloud/education-admin-web:latest . для создания образа, затем отправьте образ в удалённый репозиторий, такой как Harbor;
  • фронтенд-проекту необходимо вручную отправить изображение в удалённый репозиторий, например, в репозиторий Harbor с помощью команды docker push 127.0.0.1/edu-cloud/education-admin-web:latest;
  • оба сервиса, фронтенд и бэкенд, запущены нормально, адрес доступа: http://127.0.0.1:5800/;
  • логин: 13800000000, пароль: 123456;
Импорт и запуск портальной системы
  • git https://gitee.com/wewwww/education-cloud-web-ui.git;
  • перейдите в каталог education-cloud-web, например, выполните docker build -t 127.0.0.1/edu-cloud/education-cloud-ui-web:latest . для создания образа, а затем отправьте образ в удалённый репозиторий, такой как Harbor;
  • фронтенду необходимо вручную отправить изображение в удалённый репозиторий, например, в репозиторий Harbor с помощью команды docker push 1127.0.0.1/edu-cloud/education-admin-web:latest;
  • оба сервиса, фронтенд и бэкенд, запущены нормально, адрес доступа: http://127.0.0.1:3000/;
  • логин: 13800138001, пароль: 123456.
ELK для ведения журнала

 Скачать образ docker pull sebp/elk:700;
 Запустить образ, указать объём памяти ES;
 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 4560:4560 -e ES_MIN_MEM=128m  -e ES_MAX_MEM=1024m -it --name elk sebp/elk:700
 Необходимо изменить конфигурацию logstash, открыть новое командное окно и выполнить следующую команду docker;
 Используйте команду exec для входа в контейнер;
 docker exec -it elk /bin/bash;
 После входа в контейнер измените /etc/logstash/conf.d/02-beats-input.conf;
   input {
       tcp {
           port => 4560
           codec => json_lines
   
       }
   
   }
   output{
       elasticsearch {
       hosts => ["localhost:9200"]
   
       }
   
   }

 Сохраните и выйдите из контейнера. Затем перезапустите контейнер, чтобы конфигурация вступила в силу.
 docker restart elk;
 Доступ к http://localhost:5601/.

Видео о развёртывании будет опубликовано позже...

Если вам интересен этот проект, вы можете поставить «звездочку» для поддержки или подписаться на обновления. Спасибо! ^_^

Или вы можете подписаться на нас.

Благодарность

Этот проект основан на системе обучения класса, спасибо за такой замечательный проект от класса обучения.


Пожалуйста, обратите внимание на QR-код, мы будем регулярно делиться полезными материалами.

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

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

Введение

Распределённая онлайн-образовательная система (education-cloud) — это новое поколение образовательных платформ, разработанных на основе Spring Cloud Alibaba, Docker и Rancher для создания микросервисной архитектуры. В систему интегрированы: * Ribbon, Feign, Hystrix и Skywalking для отслеживания сервисов; * ELK для системы журналов; * Nacos для ... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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