Кэширование ресурсов Internet
Для экономии пропускной способности и ускорения загрузки страниц Web стоит попробовать воспользоваться кэшированием.
Кэширование — технология, которая вносит элемент интеллектуальности в концепцию хранения и пересылки данных, определяя, какие информационные ресурсы будут скопированы из ядра на периферию сети и как часто они будут обновляться. В основу технологии кэширования положен тот факт, что данные дешевле и эффективнее хранить, чем передавать. На самом деле, эта идея не нова: в компьютерах и других электронных вычислительных устройствах данные хранятся локально для уменьшения времени доступа к ним, тот же принцип реализуется и в браузерах Web, где последние просмотренные страницы Web находятся в кэш-памяти на жестком диске пользователя.
Кэширующие серверы могут также применяться в корпоративной локальной сети, способствуя повышению производительности Intranet. Они уже используются более чем в 75% компаний из списка Global 2000, и, по прогнозам Meta Group, ожидается их дальнейшее распространение до уровня «повсеместного» использования к 2003 г., причем установка кэширующих серверов предполагается даже в филиалах компаний, где сегодня они применяются очень редко. По словам представителя Meta Group Питера Ферстбрука, технология кэширования в корпоративной сети обладает четырьмя основными преимуществами.
Во-первых, это экономия денежных средств, так как появляется возможность отложить на некоторый срок наращивание мощности брандмауэров и устройств доступа к глобальной сети. Поскольку кэширующие серверы перехватывают все пользовательские запросы, они ограничивают внешний доступ к внутренним ресурсам и скрывают IP-адреса узлов корпоративной сети. Вторым преимуществом является лучшее использование пропускной способности при сохранении существующей инфраструктуры, например снижается вероятность возникновения заторов на брандмауэре и т. п. В-третьих, это раширение возможностей по управлению ресурсами Web (например, мониторинг и контроль использования). В-четвертых, кэширование повышает эффективность использования Web — количество внешних запросов к страницам Web обычно снижается на 30—65% (см. Рисунок 5). Точная цифра зависит от типа кэшируемых объектов: чем они больше, тем выше степень эффективности, особенно для крупных графических файлов или потоков видео. (Следует также иметь в виду, что кэширование может быть применено не для всех видов информации, поэтому в случае обращения к некоторым «неудобным» узлам Web повышения производительности не наблюдается.) Кэширование снимает часть нагрузки с перегруженных узлов Web и предохраняет их от резких колебаний трафика.
Рис.5 Пример размещения сетевых элементов, необходимых для скоростной доставки информации от пользователя Internet к провайдеру доставки контента (Content Delivery Provider, CDP).
Идея кэширования сама по себе очень проста, однако использование этой технологии для организации интеллектуальной доставки информации на периферию сети порождает ряд специфических проблем.
Решение о внедрении в сети технологии кэширования необходимо принимать с учетом нескольких важных обстоятельств. Во-первых, кэш-сервер всегда должен располагать самыми последними, обновленными данными. Так как изменения в информационные ресурсы узла Web могут вноситься довольно часто, то данные, скопированные из него на кэширующий сервер, могут устареть, поэтому важно своевременно обновлять информацию в кэше. Большинство узлов Web состоит из объектов или элементов (например, логотипов или графических изображений), остающихся неизменными неделями, месяцами и годами. Другие же элементы (такие, как тексты или реклама) обычно более динамичны и изменяются ежедневно или даже ежечасно. Следовательно, алгоритмы кэширования должны «знать», как хранить перенесенные на кэширующий сервер страницы в актуальном состоянии, и отслеживать место и время внесения изменений. Чтобы обеспечить обновление в кэше только тех объектов, которые часто меняются, необходимо учитывать логическую структуру страниц Web.
«Одним из важных моментов является принципиальная «кэшируемость» тех или иных ресурсов, — говорит Билл Лим, старший менеджер по маркетингу Digital Island. — По мере того как на все большем количестве узлов Web используется динамически генерируемая информация и такие технологии, как персонализация и профилирование, применение стандартных методов кэширования становится все менее эффективно. Учитывая это, многие производители кэширующих систем предложили продукты со встроенной поддержкой динамически меняющихся данных, включая поддержку «плюшек», аутентификации, строк запросов и динамически формируемых страниц».
Кэширующие серверы кроме своей основной функции могут выполнять и некоторые другие. Так, иногда они работают в качестве proxy-серверов, которые, контролируя или ограничивая пропускную способность на выходе, обеспечивают более простой способ совместного доступа нескольких пользователей к одному соединению IP. Такой подход полезен, когда к одному узлу Web каждый день в определенное время обращается группа сотрудников: в этом случае к ресурсу, например CNN, посылается одиночный запрос, и все получают единую версию требуемых данных от локального кэширующего сервера.
Компании Microsoft, Netscape, Novell и iPlanet выпускают продукты, в которых функции кэша совмещаются с функциями брандмауэра, что позволяет отказаться от установки отдельного брандмауэра. Однако Ферстбрук отмечает, что такой подход усложняет поддержку программного и аппаратного обеспечения, особенно при создании сложных сценариев безопасности. «Более того, пользователи обнаружили, что такие продукты не очень хороши, с точки зрения как производительности (многие пользователи отключают функцию кэширования для увеличения скорости выполнения операций), так и функциональности управления (браузеры Web должны заново конфигурироваться), — говорит он. — Имеется также опасность, что proxy-сервер может стать критической точкой отказа».
Где должен располагаться кэш по отношению к сетевым устройствам? «Наибольшей популярностью пользуются три конфигурации: кэш помещается рядом с маршрутизатором и обрабатывает трафик по протоколу управления кэшированием Web (Web Cache Control Protocol, WCCP); кэш объединяется с коммутатором Уровня 4 или выше и управляет трафиком; кэш встраивается в коммутатор Уровня 2 или Уровня 3, а управление трафиком передается отдельному устройству балансировки нагрузки (F5, Radware)», — отмечает Грег Говатос, директор подразделения маркетинга новой компании CacheFlow, добившейся больших успехов в области кэширующих систем.
Что касается физического расположения кэша, то его следует размещать как можно ближе к пользователю. Для предприятия это означает, что кэширование должно выполняться в корпоративной сети, на ее границе. Кэширующий сервер может действовать либо прозрачным образом, перехватывая все запросы от браузеров Web, либо в составе proxy-сервера, при этом все запросы адресуются ему явным образом.
Для сотрудников компаний, работающих дома, высокоскоростной удаленный доступ означает кэширование в точке присутствия провайдера Internet. Если при этом используется прозрачное кэширование, то отпадает необходимость реконфигурации каждого браузера. Кэширующие серверы могут тиражировать информационные ресурсы по географически разнесенным «зеркальным» узлам Web, снижая затраты на трафик, связанный с передачей информации на большие расстояния, разгружая маршрутизаторы, точки сетевого доступа (Network Access Points, NAP) и каналы связи (см. Рисунок 6).
Рис.6 Топология сети, в которой применяются кэширование и доставка контента от пользователя к провайдеру Internet, типична для корпоративных сетей и Intranet.
Важно отметить, что лучшие алгоритмы кэширования не ориентируются исключительно на пользовательские запросы при перемещении ресурсов исходного сервера в кэш-память: они стараются поместить в кэш информацию заранее, предвидя интерес пользователей к некоторым заметным событиям в Internet. Так, например, если в Internet транслируется шоу с участием Backstreet Boys и N’Sync, то можно с уверенностью утверждать, что найдется немало пользователей, которые захотят его посмотреть. Подобный подход может быть востребован как в корпоративных, так и в общедоступных сетях, таких, как сеть Akamai. Необходимым условием своевременного кэширования данных является представление их на сервере-источнике в специальном формате, с указанием определенных параметров процедуры кэширования, включая интервал обновления, типы объектов и т. д.
По словам представителя компании CacheFlow Говатоса, кэширующие серверы часто дополняются устройствами балансировки нагрузки или коммутаторами Web (такие продукты производят, например, Alteon, Arrowpoint и Foundry). Эти устройства анализируют заголовки пакетов и перенаправляют некэшируемую информацию (например, зашифрованный трафик защищенных соединений, почтовые сообщения или новости) прямо по назначению, минуя кэширующий сервер. «Коммутаторы и устройства балансировки нагрузки конфигурируются для передачи запросов на соответствующие кэширующие устройства, — говорит Дэвид Гриффит, генеральный директор подразделения кэширующих устройств компании InfoLibria — еще одного новичка в этой области. — Например, запросы с URL-адресами, начинающимися с букв от «a» до «f», направляются на первый кэширующий сервер в группе, от «g» до «n» — на второй, и т. д. Запросы могут также заноситься в хэш-таблицу домена с дальнейшей передачей на то или иное кэширующее устройство». Запросы на файлы с определенными расширениями (*.gif или *.jpeg) также могут направляться на определенный кэширующий сервер, оптимизированный для данного вида информационного ресурса.
«Однако всегда, даже при использовании коммутатора Web, топологию сети по-прежнему нужно выбирать такой, чтобы задержки на промежуточных маршрутизаторах и перегруженных соединениях были минимальны. Внимания к себе требуют и более тонкие вопросы, включая проблемы, относящиеся к дуплексным конфигурациям, автоматической установке связи, алгоритмам балансировки нагрузки, обеспечению устойчивости сеанса и параметрам конфигурации TCP/IP, например интервалам повторной передачи», — говорит Лим.
Итак, каковы на сегодня возможности выбора продуктов кэширования? Эволюция функций, особенности применения и ценовой политики привели к естественному разделению рынка на три категории. Во-первых, это полностью программные средства кэширования, работающие на стандартных серверах Web. Они поставляются большинством производителей операционных систем. Примерами могут служить Novell Internet Caching System и Microsoft Proxy Server. Некоторые системные администраторы предпочитают иметь дело с ПО кэширования, работающим под управлением знакомых им операционных систем или с продуктами одного производителя. В дополнение к относительной дешевизне, простоте установки и конфигурирования, к достоинствам программных систем кэширования можно отнести также возможность их работы на существующих серверах UNIX, NetWare или Windows NT. Хотя эта особенность позволяет обойтись при установке системы кэширования без изучения незнакомой операционной системы, таким продуктам не хватает масштабируемости и гибкости — качеств, необходимых для того, чтобы кэш работал с требуемой производительностью в специфических конфигурациях сети. Тем не менее программный подход вполне применим в локальных сетях средних размеров.
Второй категорией продуктов являются предустановленные серверы кэширования. В комплекс обычно входят ОС UNIX или NetWare, специальное программное обеспечение и готовое стандартное оборудование. Такие комплексы (например, Dell PowerApp.cache, Compaq TaskSmart и Quantex WebXL) обладают более высокой степенью масштабируемости и управляемости, а также очень просты в установке. Однако они узко специализированы и не решают никаких других задач, кроме кэширования.
Завершая описание этой категории продуктов, мы можем упомянуть еще Qube компании Cobalt Networks и NetCache компании Network Appliance, работающие под управлением ОС UNIX. Будучи более дорогими, чем системы Dell или Compaq, они тем не менее дешевле решения компании Inktomi (еще одного лидера на рынке кэширующих серверов), в котором производитель объединяет Traffic Server собственной разработки с маршрутизатором или устройством балансировки нагрузки от Alteon или Foundry Networks. Рассматриваемая категория продуктов предназначена для крупных сетей, так как здесь базовые функции кэширования сочетаются с высокой надежностью и отказоустойчивостью. Данный подход целесообразно использовать для долгосрочных проектов, хотя мы еще раз должны подчеркнуть высокую стоимость этих систем по сравнению с продуктами двух других категорий.
Наконец, высшую ступеньку пьедестала занимают специализированные аппаратные средства кэширования. Эта категория оборудования работает под управлением собственной ОС, специально разработанной для оптимизации кэширования. Модификация ядра ОС повышает эффективность обработки продолжительных потоков данных, файлов большого размера и трафика длительных сеансов связи. Среди прочих на рынке специализированных кэширующих устройств фигурируют компании CacheFlow, InfoLibria, Cisco Systems и Lucent Technologies. Специализация продуктов приводит к появлению более развитых и специфических решений: proxy для Web, управления контентом, сетевого резервирования и других функций, относящихся к доставке информационных ресурсов. Пока что рынок плохо принимает специализированные аппаратные системы кэширования, особенно с учетом конкуренции со стороны недорогих многоцелевых серверов, традиционно доминирующих по объемам продаж. Все еще существует обширная категория сетевых администраторов, избегающих применения специализированных устройств кэширования, несмотря на предоставляемые ими возможности централизованного управления.
Далее приведен список желательных качеств кэширующей системы.
«В разработанном при спонсорской поддержке Microsoft протоколе CARP (Cache Array Routing Protocol) присущие протоколу ICP проблемы отсутствуют, однако он ориентирован на клиентов и не является общепринятым, — говорит Ферстбрук. — Некоторые производители поддерживают собственный кластерный протокол в дополнение к ICP и CARP. При прозрачных реализациях мы рекомендуем не полагаться на такие протоколы, для распределения нагрузки внутри кэширующего кластера лучше применять коммутаторы Уровня 4 или маршрутизаторы Cisco с поддержкой WCCP».
Повысить надежность можно также, воспользовавшись услугами провайдеров доставки контента. «Digital Island внедряет отказоустойчивые кластеры кэширующих серверов, — сообщает представитель этой компании Лим. — Отказоустойчивость обеспечивается как на уровне кластера с использованием локальной балансировки нагрузки и устройств восстановления после сбоя, так и на сетевом уровне, путем внедрения интеллектуальной технологии Best Distributor Selection, в соответствии с которой запросы направляются к оптимальной точке доставки в реальном времени с учетом изменяющегося состояния сети».
Хотя упомянутые ранее производители не обращали особого внимания на этот момент, не следует забывать о безопасности и контроле доступа к информации, особенно в случае удаленного управления системами.
Помимо упомянутого ранее списка требований, которые необходимо учитывать при выборе системы кэширования, следует иметь в виду еще несколько обстоятельств. Во-первых, у вас может возникнуть желание использовать одновременно корпоративные кэширующие серверы и сеть провайдера доставки контента, которые дополняли бы друг друга. Для этого в кэширующих устройствах должна быть предусмотрена возможность интеграции с сетями доставки для предварительной загрузки и управления контентом. Во-вторых, системы кэширования должны поддерживать большое количество дополнительных функций: например, фильтрацию, управление потоками, антивирусный контроль, а также интерактивные программы. Это очень важно для того, чтобы ваша сеть морально не устаревала и могла нормально работать при изменении конфигурации и увеличении количества пользователей. В-третьих, убедитесь, что кэширующее устройство способно обрабатывать различные виды потоковых данных в случае передачи информационных ресурсов как в реальном времени, так и по требованию.
Хорошей мерой оценки возврата инвестиций в кэширование является отношение производительности к затраченным средствам, причем в данном случае производительность измеряется скоростью доступа к данным и количеством обслуженных соединений в секунду. При подсчете экономии необходимо учитывать сокращение потребления пропускной способности сетей, стоимость кэширующей системы и эксплуатационные расходы на ее сопровождение, оплату труда персонала и занимаемое место в монтажной стойке. Обычно в области телекоммуникаций такого рода вычисления проделать трудно, но для кэширующих систем они сравнительно несложны. Рассмотренная в данной статье технология является надежной и понятной, она уже продемонстрировала реальные результаты как в корпоративных, так и в общедоступных сетях.