Демонстрационное приложение клона Twitter с микросервисной архитектурой.
Проект состоит из трех основных компонентов:
- UMS (User Management System) - сервис управления пользователями и аутентификацией
- Twitter Service - сервис сообщений и подписок
- Web Interface - веб-интерфейс для взаимодействия с API
- Java 11+
- Docker и Docker Compose
- Gradle
# Запустить MySQL базы данных в Docker
docker-compose up -d
# Проверить статус
docker-compose ps
# Просмотр логов
docker-compose logs -fЭто создаст:
- MySQL для UMS (порт 3306)
- MySQL для Twitter (порт 3307)
- Adminer для управления БД (http://localhost:8080)
Если БД запущены на других портах, обновите конфигурацию:
UMS: ums/src/main/resources/application.yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/ums?serverTimezone=UTC&useLegacyDatetimeCode=false
username: root
password: passwTwitter: twitter/src/main/resources/application.yaml
spring:
datasource:
url: jdbc:mysql://localhost:3307/twitter?serverTimezone=UTC&useLegacyDatetimeCode=false
username: root
password: passwТерминал 1 - UMS Service:
cd ums
./gradlew bootRun
# или на Windows
gradlew.bat bootRunТерминал 2 - Twitter Service:
cd twitter
./gradlew bootRun
# или на Windows
gradlew.bat bootRunОткройте web/index.html в браузере.
База данных содержит предустановленных пользователей:
| 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 |
POST /auth/login- Вход в системуGET /auth/validate- Проверка JWT токенаGET /users/user/{id}- Получение информации о пользователе
POST /messages/message- Создание сообщенияGET /messages/producer/{id}- Сообщения продюсераGET /messages/subscriber/{id}- Сообщения для подписчикаPOST /subscriptions- Создание подпискиGET /subscriptions/subscriber/{id}- Получение подписокDELETE /subscriptions/subscriber/{id}- Удаление подписки
Откройте 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Диаграммы структуры баз данных находятся в папке database/:
ERD UMS.png- схема базы данных UMSERD MESSAGES.png- схема базы данных Twitter
- Убедитесь, что контейнеры запущены:
docker-compose ps - Проверьте логи:
docker-compose logs mysql-ums - Проверьте порты:
netstat -an | findstr "3306"
Если порт 3306 занят, измените маппинг в docker-compose.yml:
ports:
- "3308:3306" # используйте другой внешний портКоллекции запросов находятся в папке requests/:
UMS.postman_collection.jsonTwitter.postman_collection.json
См. файл LICENSE