12 июн. 2009 г.

Руководство начинающего веб-разработчика. Введение.

В этой статье мы рассмотрим, что именно происходит, когда вы набираете в адресной строке своего браузера адрес сайта и смотрите в нем страницы.

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

Схема выполнения вашего запроса выглядит примерно так:

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

Кроме того, все компоненты схемы являются программами, и могут выполняться как на одном физическом компьютере, так и на разных.

Программа на компьютере пользователя (обычно браузер) отправляет запрос к серверу, например http://www.example.com/. Каким путем запрос пройдет через сеть нас в данный момент не интересует, но в итоге он будет направлен к серверу example.com.

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

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

Если результата запроса нет в кэше, или прокси-серверу не разрешено его сохранять (например, если данные часто меняются), то запрос отправляется дальше, на веб-сервер.

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

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

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

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

Примеры программ, присутствующих в нашей схеме:

  1. Lighttpd , nginx — быстрые веб-сервера, часто используемые в качестве обратного прокси;
  2. Apache HTTPD — веб-сервер с развитой функциональностью;
  3. GlassFish — сервер приложений, использует язык Java;
  4. Zope — сервер приложений, использует Python;
  5. MySQL , PostgreSQL — сервера баз данных.

Комментариев нет:

Отправить комментарий