Our solutions help companies from medicine to become better, to attract new customers, to simplify and accelerate access to health services and to improve the effectiveness of treatment by monitoring systems health, personal medical record, online-in clinic and intelligent document management.
Проект, с которым к нам пришел заказчик — это аналитический сервис, позволяющий следить за капитализацией криптовалют. Сервис демонстрирует динамику и объем торгов, предоставляет достаточный инструментарий для аналитики.
1. Создать систему, способную обрабатывать большие объемы данных
2.Реализовать возможность парсинга данных, различных по формату
Сервис анализирует огромное количество информации: мы подключили порядка 30 бирж и создали возможность для менеджера подключать большинство бирж в административной панели. Для этого мы провели анализ API всех известных нам бирж и выделили общие шаблоны их парсинга. Эти шаблоны мы заложили в логику добавления новой биржи, и если биржа подходит по формату к автоматическим парсерам (о них — далее), ее можно просто добавить в админке.
Парсинг бирж — самая сложная и однозначно самая интересная часть работы над проектом. Основной задачей была как раз обработка данных без потери скорости; последовательный парсинг с ней бы не справился, и мы реализовали параллельный парсинг. Делаем это через очереди на RabbitMQ.
Как уже говорили выше, биржи могут существенно различаться по формату API, поэтому мы использовали разные виды парсеров: — простой парсер, когда при запросе биржа отдает все актуальные тикеры по одному URL; — двойной парсер, когда список тикеров отдается по другому урлу, в качестве параметра принимается список торговых пар из первого метода; — множественный парсер, тикер по каждой валютной паре получается отдельным запросом. Запросы выполняются в одно время в одном php-скрипте; — кастомные парсеры. Когда данные от биржи не попадают ни под один из существующих парсеров, мы писали новый класс парсера.
Большой объем работы пришелся на обработку полученных данных от парсинга. Сначала мы выделили общие метрики у валют, за которыми следим на бирже, такие, как курс к доллару, объем, circulation supply и пр. А после парсинга мы реализуем анализ пар по каждой валюте, вычисление курсов, изменений цен и статистики.
Для вывода на фронте мы оптимизировали таблицы для больших выборок, используя при этом специальные индексы. Также на фронте мы заложили возможность выбора фиатной валюты. Мы парсим курсы большого числа валют к доллару, а в интерфейсе пользователь может переключить фиатную валюту для отображения и наблюдать за всеми данными — прайсами, объемами и пр. — в интересующем фиате.