No description
go.mod | ||
go.sum | ||
main.go | ||
README.md |
Общие сведения
- Название проекта: Сервис сбора статистики
- Описание проекта: Микросервис на golang для сбора статистики
- Цель проекта: Создать сервис с возможностью хранения статистики в базе данных
Требования к функциональности
Должно быть 4 api ручки:
GetOrderBook(exchange_name, pair string) ([]*DepthOrder, error)
SaveOrderBook(exchange_name, pair string, orderBook []*DepthOrder) error
GetOrderHistory(client *Client) ([]*HistoryOrder, error)
SaveOrder(client *Client, order *HistoryOrder) error
Технические требования
- Язык программирования: Go 1.22
- Библиотеки и фреймворки: Любые на ваш выбор
- Архитектура: REST API
- База данных: Лучше реализовать ClickHouse, но можно и Postgres
Нефункциональные требования
- Производительность: Время отклика сервера не более 200 мс
- Rps: до 200 на запись, до 100 на чтение
Тестирование
Тестирование: Unit-тесты для всех основных функций
Требования к документации
- Документация кода: Комментарии к основным модулям и функциям
- Пользовательская документация: Руководство пользователя
Детали реализации:
- Таблица order_book
Столбец | Тип данных |
---|---|
id | int64 |
exchange | string |
pair | string |
asks | []depthOrder |
bids | []depthOrder |
- Структура DepthOrder
type DepthOrder struct{
Price float64
BaseQty float64
}
- Таблица order_history
Столбец | Тип данных |
---|---|
client_name | string |
exchange_name | string |
label | string |
pair | string |
side | string |
type | string |
base_qty | float64 |
price | float64 |
algorithm_name_placed | string |
lowest_sell_prc | float64 |
highest_buy_prc | float64 |
commission_quote_qty | float64 |
time_placed | time.Time |
- Структура HistoryOrder
type HistoryOrder struct{
client_name string
exchange_name string
label string
pair string
side string
type string
base_qty float64
price float64
algorithm_name_placed string
lowest_sell_prc float64
highest_buy_prc float64
commission_quote_qty float64
time_placed time.Time
}
- Структура Client
type Client struct{
client_name string
exchange_name string
label string
pair string
}