Мне нужны некоторые рекомендации по новому проекту, над которым я работаю, для которого требуются низкие задержки и высокий параллелизм. Проект включает получение данных в реальном времени от стороннего канала и после некоторой базовой обработки и хранения, отправку этих значений всем пользователям, которые в настоящее время активны на веб-сайте.
Данные поступают через HTTP Push, и в настоящее время я планирую использовать Node.js для получения этих данных, который затем обрабатывает данные по алгоритму, прежде чем обновлять связанные данные в какой-либо базе данных. Наконец, обновления отправляются всем подключенным пользователям сайта через веб-сокет.
Теперь я пытаюсь сделать это масштабируемым, чтобы обрабатывать более 10000 подключенных пользователей одновременно, все подключены через веб-сокет и отправляли обновления примерно раз в 3 секунды. Учитывая, что каждый пользователь может взаимодействовать с веб-приложением во время этого, он будет вызывать множество запросов туда и обратно.
Теперь, кроме основной идеи высокого уровня, которую я имею, с решением иметь Ruby on Rails в качестве инфраструктуры веб-сайта и узла js для управления «живостью» всего этого - я немного застрял. Я не знаю, какую базу данных использовать (я предполагаю, что это будет нереляционная база данных для быстрого хранения), и я не знаю специфики того, как спроектировать такую установку, а также как реализовать логику. .
Итак, мой вопрос: Учитывая мою цель, как мне структурировать такое приложение и что мне нужно знать, чтобы его можно было масштабировать и в реальном времени достигать желаемого уровня?
Большое спасибо за любую помощь.