Выполнил: Студент группы ТО-31
Панечкин А.Е.
Руководитель:
Шойко А.З.
Лекция 23. Лёгкие Web-серверыСпециализированные HTTP-приложения, дополняют Apache и другие ведущие Web-серверы
Камерон Лейрд, вице-президент, Phaseit, Inc
23.10.2007 Последние годы порадовали расцветом интересных реализаций Web-серверов, например, lighttpd, litespeed и mongrel. Достоинствами этих Web-серверов являются различные сочетания производительности, удобства администрирования, портативности, безопасности и других преимуществ. Представленный ниже технический анализ сегмента лёгких Web-серверов призван помочь вам найти среди них наиболее соответствующий требованиям вашего следующего проекта. Применение в проектах "лёгких" Web-серверов, таких как lighttpd, litespeed и mongrel, дает впечатляющие преимущества. В этой статье мы представляем обзор возможностей и показываем, как их можно применять. Выбор Web-сервераПри выборе Web-сервера на ваше решение, должен, будет влиять целый ряд факторов — это уже инсталлированная база системного и прикладного ПО, пристрастия ваших сетевых и Web-администраторов, платформа Web-разработки, а возможно, и модные тенденции в Интернет. Также, характеристики самого Web-сервера, самая высокая общая производительность, необходимая гибкостью, отказоустойчивость, простота в использовании и управлении, способность Web-сервера к расширению функциональности и к обеспечению контроля за работой. Не менее пристальное внимание нужно уделить определению собственных сред разработки каждого сервера, включая ASP (Active Server Page), ISAPI, NSAPI, JavaScript, Java Server Pages, JavaBeans, Servlets, PHP3, CGI и Perl_mod. С языком разработки вы, скорее всего, определитесь прежде, чем приступите к выбору Web-сервера. На сегодня двумя наиболее распространёнными веб-серверами, вместе занимающими около 90 % рынка , являются: В первую очередь надо понять, что мы исследуем (подробности см. в разделе Ресурсы). Основное действие конечного пользователя в Интернете – это "переход на Web-страницу". На самом общем уровне это предполагает совместную работу пары приложений: Web-браузера и Web-сервера. Web-браузер (такой как Firefox или Internet Explorer) показывает в удобной для человеческого восприятия форме запрашиваемую страницу, которую он получает от Web-сервера, находящегося, как правило, на удалённой машине и отвечающего на запрос страницы потоком данных в формате HTML или аналогичном. Критерии оценки web-серверов
Apache и IIS не могут оптимизировать так много критериев одновременно. В принципе ясно, что нишевые продукты могут превзойти лидеров рынка по крайней мере в одной-двух из этих характеристик. Самое интересное в лёгких Web-серверах, то, почему они заслуживают такого обзора, как этот – это их далеко не теоретическая конкурентоспособность. Внимательное исследование показывает, что они могут предложить очень многое и за счёт этого успешно конкурировать с Apache и IIS даже во многих обычных ситуациях. Хотя разумно было бы предположить, что лидеры рынка тщательно оптимизированы, чтобы быть непобедимыми (например) в производительности, многие мелкие конкуренты работают быстрее при простом отображении статических Web-страниц. Если вы проделаете свои собственные тесты с этими Web-серверами, у вас возникнет чувство, что вы случайно оказались на гоночном треке на карте и каким-то непостижимым образом обгоняете «порше» и «вайперы». И это еще не всё: временами лёгкие Web-серверы дополняют своих больших братьев, а не только соревнуются с ними. Даже если вы знаете, что будете использовать Apache, иногда удается получить от него гораздо больше, объединив его с лёгким партнёром. Часто наилучшее решение состоит в кооперации между двумя или более Web-серверами. Лёгкость Web-сервера"Лёгкость", на которой фокусируется этот обзор – это скорее субъективная характеристика, как "искусство" или "аромат". Обычно "лёгкий" подразумевает простой, легко инсталлируемый, хорошо налаженный, нетребовательный и устойчивый – меньшего размера и менее сложный, чем Apache и IIS, которые в попытке удовлетворить свой большой рынок превратились в довольно громоздкие конструкции. Из-за сложности и размера мы исключаем из рассмотрения Java Web Server, AOLserver и Zeus, несмотря на их интригующую переносимость и производительность. Достаточно лёгкие серверы открывают возможности, недоступные лидерам рынка и другим "тяжёлым" альтернативам. К примеру, весь сервер может поместиться в одном файле. Это удобно для разработчика, так как позволяет носить с собой все инструменты, которые нужны ему для продуктивной работы; даже если вы используете на вашем производственном сервере Apache, вы можете сидеть в гостиничном номере и экспериментировать с новыми идеями, запуская их на лёгком сервере, инсталляция которого занимает секунды. Также из-за своей нетребовательности лёгкие серверы успешно функционируют на машинах, которые просто не могут выдержать тяжесть IIS. Упаковка в один файлApache требует аккуратной инсталляции многих файлов, разбросанных по нескольким каталогам. Контраст с описанными ниже Web-серверами, некоторые из которых помещаются в одном исполняемом файле, разителен. Одна из специальностей моего работодателя, Phaseit, – развёртывание и сборка установочных пакетов, и мы умеем сделать инсталляцию Apache на вид проще, чем обычно. Но даже когда мы используем наш лучший способ, всё-таки есть огромная разница в "следах" от Apache или IIS или лёгких серверов: первые просто занимают много мест Маленькие лёгкие Web-серверы также неплохо работают на машинах малой производительности. В нашей собственной компании (Phaseit – см. врезку) мы используем специализированное оборудование, работающее на промышленных компьютерах в удалённых системах, в жёстких условиях или в условиях недостаточного электропитания. В этих ситуациях большим преимуществом является возможность обрабатывать Web-страницы каким-то приложением, которое не требует большой производительности или пространства на диске; это значит, что наши машины могут иметь встроенные доступные через Web управляющие консоли, без сложностей разработки и накладных расходов, характерных для Apache. Почти все лёгкие Web-серверы имеют в той или иной степени открытый исходный код. Если нам требуется особое поведение Web-сервера, то описанные ниже серверы настолько малы, что их легко понять и, следовательно, усовершенствовать (есть лишь пара исключений). Эти Web-серверы – отличный исходный материал для проектов, в которых Web-серверы встраиваются в специальное ли оборудование или в специфические приложения, предназначенные для работы на компьютерах общего назначения. Они также широко используются на обычных Web-сайтах:
Вот пример удобства лёгких серверов для разработчиков: в нашей компании мы имеем дело со специальным оборудованием для офисной телефонии. С ним используется специализированное программное обеспечение, которое работает как обычное Linux®-приложение. С помощью всего одного дополнительного файла и небольшой настройки init.d легко добавить высокоэффективную "Web-консоль", которая обеспечивает управляющий интерфейс для аппаратного и программного обеспечения. Конечные пользователи получают возможность отслеживать и конфигурировать свою аппаратуру из любого браузера без установки специального оборудования и других сложностей, которые были характерны для "вертикального" оборудования. Сервис-ориентированные архитектуры (SOA) имеют репутацию трудных и капризных. По крайней мере часть проблем, по нашему опыту, решается правильной реализацией Web-сервиса. С помощью лёгких Web-серверов мы организуем быстрые установки SOA для демонстраций. Лёгкие серверы играют свою роль даже в реальных вычислительных центрах, включая перечисленные выше солидные сайты и не только их. Особо высокопроизводительные сайты сегментируют свои операции, чтобы извлечь максимальную выгоду из кэширования, прокси-серверов и т.д. Сайт на основе Apache, к примеру, может иметь архитектуру, в которой медленно изменяющиеся изображения доставляются посредством «минималистского» Web-сервера из выделенной файловой системы. То, что видит в действительности конечный пользователь – это результат командной работы Apache и одного или нескольких дополнительных Web-серверов, каждый из которых играет роль, в которой он превосходит остальных. Такая конструкция может дать очень быстрые результаты с минимальными затратами на вычисления. Цели и средстваХотя лёгкие Web-серверы имеют много общего, внутри данной категории есть и различия. Большинство серверов написаны на C, но среди серверов, которые я тестировал, есть и ряд успешных реализаций на других языках, в том числе на Erlang, Java, Lisp, Lua, Perl, Python и Tcl. Если вы предпочитаете какой-либо язык, вы, возможно, найдёте Web-сервер, написанный на нем. Для того чтобы выбрать "редкий" язык, может быть множество специфических причин:
Хорошим примером здесь может служить Athana. Это Web-сервер, написанный на Python. Он поддерживает HTTP multipart (uploading), сессии, cookies и многое другое. Существующий в настоящее время в версии 0.2.1, Athana пока помещается в одном прекрасно организованном исходном файле. Как уже говорилось, возможности различных лёгких Web-серверов также варьируются, более или менее независимо от использованного языка. Все лёгкие Web-серверы меньше и конфигурируются легче, чем Apache. Некоторые из них быстрее, чем Apache, некоторые намного быстрее; в других упор сделан на безопасность, бесперебойную работу при больших загрузках, расширяемость или экономию памяти. В любом случае в них скорее всего можно полностью разобраться, что уже нереально для Apache. Какие конкретные продукты стоят за этими возможностями? Даже ограничившись "лёгкими" серверами, мы получаем необозримо огромный выбор. Рассмотрим эти серверы по подкатегориям: ультралёгкие, особо защищенные, использующие особый язык и так далее. Среди этих категорий я особенно люблю ультралёгкие Web-серверы – те, которые намного меньше, чем Apache. Приложения такого размера могут уместиться в голове обычного человека; их работу можно представить себе систематически и строго, чтобы строго доказать их безопасность или масштабируемость. К числу очень маленьких Web-серверов относятся:
Маленький размер не препятствует серьёзному использованию этих серверов; fnord, например, обслуживает тысячи одновременных соединений. Возможно, наиболее впечатляющая категория легких серверов по достижениям – высокопроизводительные серверы:
Многие Web-серверы реализованы как классы или библиотеки, разработанные для встраивания в большие приложения. Среди них особенно интересны:
На языке Python реализованы несколько Web-серверов, которые заполняют необычные ниши, в том числе:
Есть и другие интересные лёгкие Web-серверы, реализованные на Perl и на других, не так хорошо известных, языках:
Однажды вам могут понадобиться и некоторые другие написанные на C лёгкие Web-серверы с необычными дополнительными возможностями:
ЗаключениеМир Web-серверов состоит не только из Apache и IIS, их гораздо больше. В вашем распоряжении широкий выбор альтернативных решений – настолько маленьких, что их можно полностью понять, и при этом достаточно быстрых для серьёзных приложений. Возможно, одно из них поможет вам ускорить ваш следующий проект. |