Видео доклад с конференции Highload 2007.

Название: Использование nginx как сервера-сборщика
Год: 2007
Докладчик: Андрей Баранов
Компания: mail.ru
Язык доклада: Русский
Описание: На многих современных сайтах, особенно борющихся за высокое звание портала, страница состоит из блоков взятых из разных частей проекта, с разных хостов, с других проектов, а так же различающихся временем жизни, способом кеширования и стратегией обновления. Яркий пример – mail.ru. В этих условиях обычный способ “страница целиком создаётся одним скриптом” работает плохо и требует множества подпорок.
Естественным решением видится создание сервера, умеющего собирать страницу из “кусочков”, поступающих из разных источников. Как назвать подобный сервер не совсем понятно, видимо ближе всего aplication server или integration server, мне нравится название “сервер-сборщик”.
К сожалению, open sourse реализаций мне неизвестно. Из пропиетарных в эту концепцию укладываются яндексовский XScript и мейлрушный BarterTown.
XScript нам недоступен (и не надо), в BarterTown на мой взгляд неудобно задаются источники. Стали искать альтернативу.
Первая стадия: nginx с модулем ngx_http_ssi_module
У модуля ngx_http_ssi_module есть возможность делать include с удалённого хоста. Отсутствие в nginx кеширования обошли использованием кешируещего прокси между фронтендом и бекендом, невозможность в ssi разобрать параметры запроса и куки – запросом к бекенду с возращением им ssi-ных команд.
Получился простой, лёгкий, бесплатный и open source сервер-сборщик. Работает замечательно, но есть серьёзное ограничение: ssi поддерживает только строковые переменные и не поддерживает циклов.
Вторая стадия: nginx с самописным модулем.
Написали модуль понимающий HTML::Template-подобный язык шаблонов и поддерживающий получение по HTTP сложно структурированных данных (в формате JSON). Теперь тривиально скажем получить с бекенда массив хешей статей и в цикле вывести их. Как бонус – шаблоны на бекенде становятся не нужны. Модуль пока в экспериментальной стадии, в будущем планируется добавить кеширование (как шаблонов, так и полученных данных) и поддержку других форматов (XML, CSV).

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



Дополнительные записи: