Skip to content

Miha3009/market

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Онлайн магазин

Запуск

Для запуска необходим кластер kubernetes с ingress.

В папке scripts лежат полезные скрипты:

  • deploy.sh - создает все необходимые для запуска системы ресурсы kubernetes (внутри namespace market)
  • undeploy.sh - удаляет все ресурсы
  • restart.sh - удаляет все ресурсы и создает заново

Все сервисы используют переменную среды CONFIG_PATH, в которой прописывается путь до файла с конфигурацией.

Для тестирования локально можно использовать minikube:

minikube start && minikube addons enable ingress

В этом случае получить доступ к GraphQL можно с помощью команды:

minikube service graphql-service -n market

Сервисы

  • Продукты
    • API (REST)
      • GET /api/product/{id}. Получить информацию о продукте
      • GET /api/product?limit=&offset=. Получить список продуктов (постраничный вывод)
      • POST /api/product. Создать продукт
      • PUT /api/product. Обновить информацию о продукте
      • DELETE /api/product/{id}. Удалить продукт
    • Связи
      • Используется Postgres (таблица products)
      • Используется Redis (кэш, хранит доступности продуктов, т.е. есть ли определенный продукт наличии)
      • Соединен с сервисом склада по gRPC (проверяется наличие продукта)
  • Заказы
    • API (REST)
      • GET /api/order/{id}. Получить информацию о заказе
      • GET /api/order?user=. Получить все заказы пользователя
      • POST /api/order. Создать заказ
      • DELETE /api/order/{id}. Удалить заказ
    • Связи
      • Используется MongoDB (коллекция orders)
      • Соединен с сервисом склада по gRPC (резервирует продукты)
      • Отправляет сообщения о создания заказа в Kafka
  • Склад
    • API (gRPC)
      • CheckAvaliable. Проверить остались ли заданные товары на складе
      • Reserve. Зарезервировать продукты. Используются SQL транзакции, чтобы гарантировать достаточное количество всех товаров из списка на складе
      • CancelReserve. Отменить резерв
    • Связи
      • Используется Postgres (таблица inventory)
  • Уведомления
    • Связи
      • Kafka. Читает новые сообщения (созданные после запуска сервиса)
      • Почтовый сервер. Прочитанные сообщения отправляет по электронной почте
  • GraphQL связывает сервис продуктов и заказов в единую схему (4 запроса, 5 мутаций)
    • Примеры запросов лежат в graphql/examples.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published