Вы пытаетесь разработать классическое аналитическое приложение, которое собирает данные из разных источников и показывает некоторую аналитику на основе этих данных, например, Google Analytics и так далее.
Does every ajax request will not be too much costly?
Maybe I should think about another way to send data to my server?
Для веб-приложений это стандартный способ отправки данных с клиента на сервер. Конечно, протокол Http имеет больше накладных расходов по сравнению с UDP, WebSockets или протоколами на них, но он не требует дополнительных настроек безопасности, прост в использовании и масштабировании. Веб-сокеты требуют постоянного поддержания TCP-соединения и их сложнее масштабировать. Вы можете найти множество сообщений о сравнении этих протоколов, например здесь.
В соответствии с этим вопросом ваше приложение будет прокси-сервером событий с веб-сайтов на другие веб-приложения, где они будут каким-то образом анализироваться. Каждое событие будет иметь некоторую информацию, такую как тип (логин, щелчок), URL-адрес, пользователь, дата и так далее. Он может работать до некоторой нагрузки. Судя по всему, у вас будут проблемы на стороне браузера, принимающего более 100 событий (запросов) в секунду даже через WebSockets. JS с однопоточной моделью исполнения не так хорош для аналитики (фильтрация, расчет, агрегация). Я думаю, что вам не нужно передавать события на панель инструментов как есть, было бы полезнее отправлять некоторые агрегированные данные, такие как количество новых событий, гистограммы событий и так далее. Итак, в этом случае вам нужно выполнить аналитику на стороне сервера (приложение node.js).
Я рекомендую вам также ознакомиться с подходом CQRS, в котором сохраняются данные (события) и их извлечение (запрос ) разделен для достижения хорошей производительности как для операций записи (регистрация событий), так и для операций чтения (получение событий или некоторых аналитических операций). Очевидно, вам может понадобиться использовать какую-то базу данных для аналитики, например, Mondo DB, возможно, Redis и так далее.
person
Vasyl Zv
schedule
26.08.2017