Skip to content

Third semestr project based on SpringBoot with Kubernetes files and Docker images

Notifications You must be signed in to change notification settings

kozlov174/study_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bird - Twitter Clone Demo

Демонстрационное приложение клона Twitter с микросервисной архитектурой.

🏗️ Архитектура

Проект состоит из трех основных компонентов:

  1. UMS (User Management System) - сервис управления пользователями и аутентификацией
  2. Twitter Service - сервис сообщений и подписок
  3. Web Interface - веб-интерфейс для взаимодействия с API

🚀 Быстрый старт

Предварительные требования

  • Java 11+
  • Docker и Docker Compose
  • Gradle

1. Запуск баз данных

# Запустить MySQL базы данных в Docker
docker-compose up -d

# Проверить статус
docker-compose ps

# Просмотр логов
docker-compose logs -f

Это создаст:

  • MySQL для UMS (порт 3306)
  • MySQL для Twitter (порт 3307)
  • Adminer для управления БД (http://localhost:8080)

2. Настройка приложений

Если БД запущены на других портах, обновите конфигурацию:

UMS: ums/src/main/resources/application.yaml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ums?serverTimezone=UTC&useLegacyDatetimeCode=false
    username: root
    password: passw

Twitter: twitter/src/main/resources/application.yaml

spring:
  datasource:
    url: jdbc:mysql://localhost:3307/twitter?serverTimezone=UTC&useLegacyDatetimeCode=false
    username: root
    password: passw

3. Запуск сервисов

Терминал 1 - UMS Service:

cd ums
./gradlew bootRun
# или на Windows
gradlew.bat bootRun

Терминал 2 - Twitter Service:

cd twitter
./gradlew bootRun
# или на Windows
gradlew.bat bootRun

4. Открытие веб-интерфейса

Откройте web/index.html в браузере.

📝 Тестовые пользователи

База данных содержит предустановленных пользователей:

Email Password Role
donalt@trump.us password PRODUCER, SUBSCRIBER
emmanuel@macron.fr password PRODUCER, SUBSCRIBER
justin@trudeau.ca password SUBSCRIBER
angela@merkel.de password SUBSCRIBER
vladimir@putin.tu password SUBSCRIBER

🔧 API Endpoints

UMS Service (порт 9000)

  • POST /auth/login - Вход в систему
  • GET /auth/validate - Проверка JWT токена
  • GET /users/user/{id} - Получение информации о пользователе

Twitter Service (порт 9001)

  • POST /messages/message - Создание сообщения
  • GET /messages/producer/{id} - Сообщения продюсера
  • GET /messages/subscriber/{id} - Сообщения для подписчика
  • POST /subscriptions - Создание подписки
  • GET /subscriptions/subscriber/{id} - Получение подписок
  • DELETE /subscriptions/subscriber/{id} - Удаление подписки

🗄️ Управление базами данных

Через Adminer

Откройте http://localhost:8080

  • Сервер: mysql-ums (или mysql-twitter)
  • Пользователь: root
  • Пароль: passw
  • База данных: ums (или twitter)

Через командную строку

# Подключение к UMS базе
docker exec -it bird-mysql-ums mysql -u root -ppassw ums

# Подключение к Twitter базе
docker exec -it bird-mysql-twitter mysql -u root -ppassw twitter

🛑 Остановка сервисов

# Остановить базы данных
docker-compose down

# Остановить и удалить данные
docker-compose down -v

📊 ERD Диаграммы

Диаграммы структуры баз данных находятся в папке database/:

  • ERD UMS.png - схема базы данных UMS
  • ERD MESSAGES.png - схема базы данных Twitter

🐛 Устранение неполадок

Ошибка подключения к БД

  1. Убедитесь, что контейнеры запущены: docker-compose ps
  2. Проверьте логи: docker-compose logs mysql-ums
  3. Проверьте порты: netstat -an | findstr "3306"

Порт уже занят

Если порт 3306 занят, измените маппинг в docker-compose.yml:

ports:
  - "3308:3306"  # используйте другой внешний порт

📚 Postman Collections

Коллекции запросов находятся в папке requests/:

  • UMS.postman_collection.json
  • Twitter.postman_collection.json

📄 Лицензия

См. файл LICENSE

About

Third semestr project based on SpringBoot with Kubernetes files and Docker images

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published