Skip to content

AhegaoHD/WBTL0

Repository files navigation

WB Tech: level # 0 (Golang)

Этот проект представляет собой сервис, который использует PostgreSQL и NATS, запущенные через Docker Compose, для обработки и хранения данных. Проект также включает простой интерфейс для отображения полученных данных по ID заказа.

Основные Функции

  • Подключение и подписка на канал в NATS-Streaming.
  • Запись полученных данных в базу данных PostgreSQL.
  • Кэширование полученных данных in-memory в сервисе.
  • Восстановление кэша из базы данных в случае падения сервиса.
  • Запуск HTTP-сервера для предоставления данных по ID из кэша.
  • Простейший интерфейс для отображения данных по ID заказа.

Запуск приложения

Для запуска приложения необходимо выполнить следующие шаги:

  1. Убедитесь, что у вас установлены Go, Docker compose.

  2. Задайте env параметры подключения к бд, пример можете посмотреть в .env.example

  3. Запустите приложение с помощью команды:

docker compose up
go run cmd/main/main.go

для запуска продюсера:

go run cmd/producer/producer.go

для запуска интерфейса откройте web/index.html в браузере

Конфигурация Docker Compose

В файле docker-compose.yml содержатся следующие сервисы:

  1. postgres: Этот сервис использует образ Docker postgres:15.3. Он настраивает контейнер базы данных PostgreSQL и связывает каталог ./volumes/pgdata на хост-машине с папкой /var/lib/postgresql/data внутри контейнера. Данные базы данных будут храниться в указанном каталоге на хост-машине, обеспечивая сохранность данных. Сервис также использует файл окружения .env для загрузки переменных окружения, если он присутствует. Сервис доступен на порту 5555 на хост-машине, который отображается на порт 5432 внутри контейнера.
  2. nats: Этот сервис использует образ Docker nats-streaming:latest. Он настраивает контейнер сервера NATS Streaming и открывает порты 4222 и 8222 на хост-машине, которые отображаются на соответствующие порты внутри контейнера.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published