Skip to content

A 'Clevertec 2023 autumn courses' final project. Used technologies: Redis, PostgreSQL, Netflix Eureka, Spring Cloud Api Gateway.

Notifications You must be signed in to change notification settings

sakuuj/final-task

Repository files navigation

Финалити

Для запуска необходимо:

  1. Запустить следущие команды находясь в корневой папке:
    1. ./gradlew :prepareForDocker (Для Linux, для Windows аналогично используя gradlew.bat)
    2. docker compose -f ./docker-config/docker-compose.yaml up
  2. Следует ждать пока запустятся все необходимые контейнеры. Ожидание запуска контейнеров может составлять около минуты. Контейнер api-gateway может выбрасывать исключения и перезапускаться несколько раз, пока контейнер keycloak не перейдет в полностью рабочее состояние.

Как получить jwt token?

Зайти в браузер по url : http://localhost:8081/login или http://localhost:8081/get-token. Произойдет перенаправление на сайт провайдера аутентификации (Keycloak), необходимо будет пройти аутентификацию. Затем произойдет обратное перенаправление и на странице будет выведен jwt token, который следует использовать в дальнейшем в качестве Bearer token. Время действия - 1 час. Готовые данные для входа:

  1. login: admin

    password: admin

    (Roles: admin)

  2. login: js

    password: js

    (Roles: journalist, subscriber)

  3. login: journ

    password: journ

    (Roles: journalist)

  4. login: sub

    password: sub

    (Roles: subscriber)

Endpoints info

http://localhost:8081/news/swagger

http://localhost:8081/comments/swagger

Как в целом все устроено

Имеется единая точка входа в микросервисное приложение - Api Gateway. Микросервисы и Api Gateway используют Eureka Discovery Server для взаимного обнаружения. Кроме Api Gateway, Eureka, есть News-service, Comments-service. News-service запрашивает комментарии и оповещает о создании, удалении новостей с помощью Spring Openfeign. У этих двух микросервисов разные базы данных. В базе данных для News-service имеется одна таблица, cодержащая всю информацию о новостях. В базе данных для Comments-service содержится две таблицы, одна для обеспечения согласованности данных News_id, хранящая id новостей находящихся в базе данных News-service и айди соответствующего автора новости. Другая таблица хранит всю информацию о комментариях и имеет внешний ключ news_id, зависящий от id в таблице News_id. Добавлен кастомный кеш стартер. Имеются WireMock, MockMvc тесты. Сервисы покрыты на 100%.

About

A 'Clevertec 2023 autumn courses' final project. Used technologies: Redis, PostgreSQL, Netflix Eureka, Spring Cloud Api Gateway.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published