Что такое NGINX и чем он хорош?

С момента своего публичного запуска в 2004 году NGINX ориентировался на высокую производительность, высокий уровень параллелизма и низкое использование памяти. В 2011 году была создана компания NGINX, Inc., которая помогает разрабатывать и поддерживать дистрибутив с открытым кодом, предоставлять коммерческие подписки и услуги. 

Что такое NGINX?

NGINX (“энжин икс”) — это высокопроизводительный HTTP-сервер с открытым исходным кодом и обратный прокси-сервер.

В интервью Сара Новотны сказала: “В сообществе веб-производительности знание NGINX стало практически секретным рукопожатием. NGINX — это “секретное сердце” современной сети”. 

В чём особенность NGINX? 

NGINX использует масштабируемую архитектуру, управляемую событиями, вместо традиционной архитектуры, управляемой процессами. Для этого нужно меньше памяти, а её использование становится более предсказуемым при увеличении параллельных подключений.

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

С технической точки зрения для создания отдельного процесса/потока надо переподключить ЦП на новую задачу. Дополнительно нужно создать новый контекст времени выполнения, который потребляет дополнительную память и время ЦП. Это снижает производительность.

NGINX разработали, чтобы повысить производительность в 10 раз и оптимизировать использование ресурсов сервера. Создатели учли возможность масштабирования и поддержки динамического увеличения веб-сайта. 

В результате NGINX стал одним из самых известных модульных, управляемых событиями, асинхронных, однопоточных веб- и прокси-серверов.

Зачем использовать NGINX?

Приложения сейчас везде. Это уже не просто рабочие инструменты, а инструменты для современной жизни. Приложение должно оперативно реагировать, безупречно работать и вообще быть самым лучшим. 

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

Большую часть из этого даёт NGINX. Что в нём интересного? Масштабируемая управляемая событиями архитектура, производительные HTTP- и обратный прокси-сервер с контролем доступа и пропускной способности. Уже неплохо, но сюда ещё добавили интегрируемость с кучей приложений.

Как работает NGINX?

Управляемый событиями подход

Это когда задачи обрабатываются как события. Например, входящее соединение — это событие, чтение с диска — это событие и т.д. Идея состоит в том, чтобы не тратить ресурсы сервера, если нет события, которое нужно обработать. 

Современные операционные системы могут уведомлять веб-сервер об инициировании или завершении задачи, что даёт NGINX организованно использовать нужные  ресурсы. Они могут выделяться и высвобождаться динамически по запросу, и сети, памяти и прочие ресурсы будут использоваться по необходимости.

Подключения пользователей NGINX обрабатываются в циклах выполнения внутри ограниченного числа однопоточных процессов, называемых рабочими. Каждый рабочий может обрабатывать тысячи одновременных подключений и запросов в секунду.

NGINX не создает новый процесс или поток для каждого соединения. Рабочий процесс принимает новые запросы из общей очереди и выполняет полный цикл по ним для обработки тысяч соединений на одного рабочего. Рабочий получает уведомления о событиях от механизмов в ядре операционной системы. Когда NGINX запускается, создается начальный набор прослушивающих сокетов. Затем рабочие начинают принимать, читать и записывать в сокеты при обработке HTTP-запросов и ответов.

Асинхронность

Цикл выполнения не застревает на определенных событиях. Он устанавливает условия для предупреждений от ОС о конкретных событиях и продолжает отслеживать очередь событий. Когда возникает предупреждение, цикл выполнения запускает действия. 

В свою очередь, определенные действия всегда пытаются использовать неблокирующие интерфейсы к операционной системе, чтобы рабочий не останавливался при обработке определенного события. Таким образом, рабочие NGINX могут использовать доступные общие ресурсы одновременно самым эффективным образом.

Однопоточность

Многие пользовательские соединения могут обрабатываться одним рабочим процессом. Это помогает избежать чрезмерного переключения контекста и даёт использовать память и ЦП эффективнее.

Знакомьтесь ближе

Согласно сайту проекта, 40% из 10 000 самых загруженных сайтов Интернета и более 20 процентов всех веб-сайтов работают на NGINX.

NGINX имеет все необходимые функции и возможности для создания веб-сайтов и служб, которым нужна производительность, масштабируемость и надежность. NGINX PLUS выводит это на новый уровень. На сайте компании есть страница, на которой объясняется, что входит в различные версии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *