Skip to content

PavelValentov/binance-ws-tickers

Repository files navigation

Binance WebSocket API

Описание проекта

Данный проект представляет собой микросервис, разработанный для получения актуальных курсов криптовалют с Binance WebSocket API. Микросервис записывает эти данные в хранилище Redis для быстрого доступа и в базу данных PostgreSQL для долгосрочного хранения. Система поддерживает добавление и удаление монет для отслеживания курсов. Реализована возможность запуска нескольких инстансов микросервиса с использованием механизма распределённой блокировки (red-lock) для обеспечения согласованности данных при одновременном доступе.

Особенности

  • NestJS - для создания структурированного и легко поддерживаемого кода.
  • Redis - для кеширования данных, обеспечения их быстрой доставки и синхронизации между инстансами.
  • Prisma - ORM для взаимодействия с PostgreSQL, обеспечивающая легкую миграцию и удобный доступ к данным.
  • Node-Redlock - алгоритм распределенной блокировки для решения проблемы согласованности при конкурентном доступе.
  • Nx - для управления монорепозиторием и оптимизации процесса разработки.
  • Docker и Docker Compose - для контейнеризации приложения и его зависимостей.
  • Swagger - для документации REST API.
  • Microservices - архитектура для масштабирования и надежной работы системы.
  • REST API - для взаимодействия с микросервисом.

Развертывание проекта

Предварительные требования

Для запуска проекта у вас должны быть установлены:

  • Docker и Docker Compose
  • Node.js (желательно последняя стабильная версия)
  • Git

Шаги запуска

  1. Клонируйте репозиторий проекта:
git clone [ссылка на ваш репозиторий]
  1. Перейдите в директорию проекта:
cd [имя вашего проекта]
  1. Скопируйте пример файла конфигурации .env.example в .env и заполните его актуальными значениями:
cp .env.example .env
  1. Запустите сервисы при помощи Docker Compose:
docker-compose up --build

После выполнения данных команд, микросервисы будут запущены и доступны.

API Документация

Для просмотра Swagger документации API, перейдите по ссылке http://localhost:6767/v1/doc после запуска сервисов.

Работа с микросервисом

Микросервис предоставляет REST API для управления перечнем отслеживаемых криптовалют и просмотра текущих курсов.

Добавление монеты для отслеживания

POST /api/currency

Тело запроса:

{
  "symbol": "BTCUSDT"
}

Удаление монеты из отслеживания

DELETE /api/currency/{symbol}

Замените {symbol} на актуальный тикер криптовалюты, например BTCUSDT.

Получение списка отслеживаемых монет

GET /api/currencies

Получение текущего курса монеты

GET /api/currency/{symbol}

Замените {symbol} на актуальный тикер криптовалюты.

Масштабирование системы

Для масштабирования системы и добавления дополнительных инстансов микросервиса используйте Docker Compose, указав количество инстансов в параметре scale:

docker-compose up --scale [имя_сервиса]=[N]

Здесь [имя_сервиса] - имя сервиса в docker-compose.yml, [N] - количество инстансов.

Проблемы concurrency

Для решения проблем concurrency используется Node-Redlock. Это гарантирует, что операции записи в Redis и PostgreSQL будут проходить атомарно и последовательно даже в условиях множественных инстансов.


Обратите внимание, что данный README.md служит шаблоном и должен быть дополнен ссылками на ваш репозиторий, а также конкретными инструкциями по настройке переменных окружения в файле .env, именами сервисов в docker-compose.yml и другой специфичной информацией для вашего проекта.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages