Показать меню

Unicorn (веб-сервер)

Unicorn — свободный веб-сервер, написанный на языке Ruby и предназначенный для запуска Rack-приложений, в том числе написанных на фреймворках Ruby on Rails или Sinatra.

Unicorn может запускаться только под UNIX-подобными ОС (в том числе — Linux, FreeBSD, Mac OS), так как использует fork для создания воркеров. Поддерживает Ruby версии 1.8 и выше, но из-за более дружественного сборщика мусора рекомендуется использовать версии начиная с 2.0. Поддержка jRuby и других альтернативных реализаций Ruby не предусмотрена, в разработке — совместимость с Rubinius.

Принцип работы

При запуске Unicorn создает множество клонов родительского процесса, каждый из которых используется в качестве однопоточного воркера. Каждый воркер в каждый момент времени обслуживает только одно соединение. После обработки и передачи данных клиенту воркер высвобождается и готов обслуживать следующего. Все воркеры подключаются к одному общему сокету (shared socket) или порту. Таким образом, максимальное количество одновременных обрабатываемых запросов равно числу воркеров.

Особенности

Главными достоинствами Unicorn являются:

  • многопоточность без требования потокобезопасности к коду
  • возможность перезапуска с нулевым временем простоя (без остановки обслуживания)
  • возможность перезапуска отдельных воркеров
  • высокая производительность

К недостаткам можно отнести следствия из принципа одно соединение — один воркер:

  • повышенное потребление памяти по сравнению с другими веб-серверами на Руби при аналогичном количестве соединений
  • воркеры остаются занятыми пока не отдадут ответ клиенту (что может занимать существенное время при медленном соединении со стороны клиента)
  • слабая поддержка веб-сокетов

В реальных конфигурациях серверов с Unicorn распространено использование обратного прокси, чаще всего — nginx. В таких конфигурациях прокси решает проблему занятости воркеров при медленных клиентах, а также настраивается для раздачи статических файлов — изображений, видео, файлов CSS и JavaScript.

Альтернативы

Существует альтернативная реализация — Rainbows, поддерживающая различные модели многопоточности воркеров.

Ввиду совместимости с Rack, Unicorn взаимозаменяем (при условии соблюдений требований к коду и совместимости с версиями Ruby и ОС) с другими реализациями веб-сервера на Руби: WEBrick, Thin, Puma, Rainbows и так далее.

Пользователи Unicorn

  • Github
Еще по этой теме:
PowerPro
PowerPro
PowerPro — многофункциональная программа для операционной системы Windows, распространяемая по лицензии Freeware. Возможности программы Действия, которые может выполнять программа Запуск программ,
Worker (файловый менеджер)
Worker (файловый менеджер)
Worker — файловый менеджер для Linux и других UNIX-подобных операционных систем. Написан на С++ с использованием только стандартной X11-библиотеки xlib и библиотеки avfs для работы с виртуальной
Ember.js
Ember.js
Ember.js — свободный каркас веб-приложений на JavaScript, реализующий шаблон MVC и нацеленный на упрощение создания масштабируемых одностраничных веб-приложений. Фактически является версией 2.0
NOP
NOP
В информатике NOP или NOOP (сокращение от английского: «No OPeration») инструкция процессора на языке ассемблера, или команда протокола, которая предписывает ничего не делать. NOP как машинная
gtkmm
gtkmm
gtkmm — официальный C++-интерфейс для GUI-библиотеки GTK+. Включает слоты и сигналы с проверкой типов во время компиляции (благодаря библиотеке libsigc++), наследование виджетов с использованием
Ставропольские специалисты ведут подготовку к осуществлению программ
Ставропольские специалисты ведут подготовку к осуществлению программ
Российский Минсельхоз завершил конкурсный отбор, в рамках которого были выбраны две ведомственные целевые программы Ставропольского края. В них предусмотрена поддержка фермеров-новичков и развитие
Комментарии:
Добавить комментарий
Ваше Имя:
Ваш E-Mail: