Каковы лучшие практики размещения веб-приложения на RingoJS / Rhino? Поскольку это однопоточный, блокирующие вызовы, такие как длительные запросы / загрузка файлов / веб-сервисы, будут означать, что любой другой запрос будет зависать.
Насколько я могу судить, я мог
A.) Откройте отдельный экземпляр Ringo для процессов, которые я ожидаю блокировать в течение длительного времени (например, передача файлов, сетевой io) и прокси.
B.) Откройте около 10-20 экземпляров Ringo и пусть Apache выполнит своего рода циклическое проксирование в зависимости от загрузки запросов каждого процесса.
Я просто ищу информацию о подводных камнях каждого и некоторых подходах, которые использовали другие люди. Естественно, проблема не ограничивается Ринго, поэтому мы приветствуем любой вклад людей, использующих похожие среды, которые «решили» эту проблему.
Во-первых, давайте сформулируем правильную предпосылку: RingoJS - это не однопоточный. RingoJS работает на JVM, которая отлично поддерживает многопоточность, и Ringo без колебаний использует эту возможность!
Тем не менее, вот краткое изложение ваших вариантов развертывание веб-приложений RingoJS:
По умолчанию RingoJS поставляется в комплекте с Причал, готовый к работе, но легкий веб-сервер, написанный на Java. Вы можете развертывать свои приложения напрямую с Jetty. Вот как ringojs.org работает, например.
Если у вас есть внутреннее недоверие к запуску чего-либо, кроме самых закаленных в боях веб-серверов в позиции, ориентированной на пользователя, просто поместите обратный прокси по вашему выбору (Apache, nginx, Varnish и т. д.) впереди и прокси через Jetty, работающий сзади. Это проверенный временем и гибкий подход, используемый во многих современных фреймворках серверных веб-приложений.
В качестве альтернативы вы можете использовать предпочитаемый Контейнер сервлетов Java и развернуть веб-приложения RingoJS с помощью JSGIServlet
идет с Ринго. Такое развертывание особенно полезно, когда вы уже работаете в среде JEE.
Все это реальные возможности. Выбор за вами.