|
2 | 2 |
|
3 | 3 | [](https://qlty.sh/gh/irinakomarchenko/projects/user-service-spring-Apache-Kafka) |
4 | 4 |
|
5 | | -# User Service & Notification Service |
| 5 | +# user-service-cloud-architecture |
| 6 | + |
| 7 | +### Микросервисная система управления пользователями и уведомлениями на Spring Boot, Kafka, Eureka, Docker и PostgreSQL. |
6 | 8 |
|
7 | 9 | **User Service** — микросервис на Spring Boot для управления пользователями (CRUD) и публикации событий о создании/удалении пользователей в Kafka. |
8 | | -**Notification-service** — микросервис, который слушает события из Kafka и отправляет email-уведомления пользователям. Также предоставляет API для отправки email. |
9 | 10 |
|
| 11 | +**Notification-service** — микросервис, который слушает события из Kafka и отправляет email-уведомления пользователям. Также предоставляет API для отправки email. |
| 12 | + |
| 13 | +**Gateway API** — микросервис, реализующий единый точку входа в систему (API Gateway на Spring Cloud Gateway). Маршрутизирует HTTP-запросы к нужным микросервисам. |
| 14 | + |
| 15 | +**Discovery Server** — сервис регистрации и обнаружения (на базе Spring Cloud Eureka). Хранит реестр всех активных сервисов в системе, обеспечивает автоматическую маршрутизацию и отказоустойчивость. |
| 16 | + |
| 17 | +**Config Server** — централизованный сервер конфигурации (Spring Cloud Config). Управляет конфигурационными файлами для всех микросервисов из единого репозитория. |
| 18 | + |
| 19 | +**Kafka** — брокер сообщений (Apache Kafka), обеспечивает надёжную асинхронную передачу событий между сервисами. |
| 20 | + |
| 21 | +**Mailhog** — сервис для перехвата и просмотра тестовых email-сообщений через web-интерфейс. Используется для локальной отладки отправки писем. |
| 22 | + |
| 23 | +**PostgreSQL** — реляционная база данных для хранения информации о пользователях и событиях (используется user-service). |
10 | 24 |
|
11 | 25 | --- |
12 | 26 |
|
13 | 27 | ## Технологии |
14 | 28 |
|
15 | 29 | - Java 22 |
16 | | -- Spring Boot |
17 | | -- Spring Web (REST API) |
18 | | -- Spring Data JPA (встроенный Hibernate) |
19 | | -- Spring Kafka (Kafka Producer) |
| 30 | +- Spring Boot (Spring Web, Spring Data JPA, Spring Kafka) |
| 31 | +- PostgreSQL (через Docker) |
| 32 | +- Apache Kafka (через Docker) |
| 33 | +- Spring Cloud (Gateway, Eureka Discovery, Config Server) |
20 | 34 | - PostgreSQL (через Docker Compose) |
21 | | -- Apache Kafka (интеграция через Spring Kafka) |
22 | | -- SLF4J + Logback (логирование) |
23 | | -- JUnit 5 + MockMvc (тестирование контроллеров и API) |
24 | | -- Maven (сборка и зависимости) |
25 | | -- Checkstyle (проверка стиля кода) |
26 | | -- Lombok — (автогенерации геттеров/сеттеров) |
| 35 | +- JUnit 5, MockMvc (тестирование) |
| 36 | +- JLombok, SLF4J, Logback, Checkstyle |
| 37 | +- Docker (для контейнеризации сервисов) |
27 | 38 | --- |
28 | 39 |
|
29 | 40 | ## Запуск проекта |
@@ -57,11 +68,34 @@ mvn verify |
57 | 68 |
|
58 | 69 | ### 6. Запустить приложение |
59 | 70 |
|
| 71 | +#### Собрать артефакты (JAR-файлы) для каждого микросервиса: |
60 | 72 |
|
61 | 73 | ```sh |
62 | 74 | mvn clean package |
63 | | -java -jar target/user-service-spring.jar |
64 | 75 | ``` |
| 76 | +#### Запустить все сервисы и инфраструктуру с помощью Docker Compose: |
| 77 | +```sh |
| 78 | +docker compose up -d |
| 79 | +``` |
| 80 | +Все сервисы (user-service, notification-service, gateway, discovery-server, config-server, kafka, postgres, mailhog) будут подняты как отдельные контейнеры. |
| 81 | + |
| 82 | +#### Проверить статус контейнеров: |
| 83 | +```sh |
| 84 | +docker compose ps |
| 85 | +``` |
| 86 | + |
| 87 | +#### Остановить все сервисы: |
| 88 | +```sh |
| 89 | +docker compose down |
| 90 | +``` |
| 91 | + |
| 92 | +#### Для обновления jar-файлов после изменения кода пересоберите сервисы и перезапустите соответствующие контейнеры: |
| 93 | +```sh |
| 94 | +mvn clean package -DskipTests |
| 95 | +docker compose up --build -d |
| 96 | +``` |
| 97 | + |
| 98 | + |
65 | 99 |
|
66 | 100 | ### 7. Пример работы приложения |
67 | 101 |  |
|
0 commit comments