Масштабирование веб-сокетов на Heroku и Node.js

Предположим, у меня есть большое приложение, обрабатывающее значительное количество подключений к веб-сокетам на Heroku. Чтобы справиться с таким большим спросом, количество динамометров увеличено до N.

Как маршрутизатор Heroku будет распределять новое входящее соединение через веб-сокеты между работающими динамиками?

Другими словами, если один из динамометров исчерпан в соединениях через веб-сокеты, будет ли маршрутизатор Heroku отклонять все новые входящие запросы среди других (предположительно) менее загруженных динамометров? Или он по-прежнему будет использовать случайное назначение как указано в документации для входящих HTTP-соединений ?

Это определенно имело бы смысл, поскольку соединения веб-сокетов в первую очередь являются соединениями http. Однако было бы довольно сложно равномерно масштабировать большое количество постоянных подключений между N работающими динамометрами.

Кто-нибудь подтверждает?


person danielepolencic    schedule 01.11.2013    source источник


Ответы (1)


На странице, на которую вы ссылаетесь, написано: «Маршрутизаторы используют алгоритм случайного выбора для балансировки нагрузки HTTP-запросов между веб-дино». Это кажется однозначным. Обратите внимание, что у Heroku возникли проблемы с Rap Genius именно из-за этой проблемы, хотя это было из-за их старого стека Bamboo.

В общем, добавляя динамометры, вы сможете избежать перегрузки любого динамометра, поскольку веб-сокеты фактически не используют дополнительную оперативную память для каждого дополнительного поддерживаемого соединения. В худшем случае более загруженные динамометры должны просто страдать от более высокой задержки.

person Dan Kohn    schedule 02.11.2013