Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Varnish - это HTTP-ускоритель, разработанный для динамических веб-сайтов с тяжелым контентом, а также для API . В отличие от других веб-ускорителей , таких как Squid , который начал свою жизнь как кеш на стороне клиента, или Apache и nginx , которые в основном являются исходными серверами , Varnish был разработан как ускоритель HTTP. Varnish ориентирован исключительно на HTTP , в отличие от других прокси-серверов, которые часто поддерживают FTP , SMTP и другие сетевые протоколы .

История [ править ]

Инициатором проекта выступило интернет-отделение норвежской бульварной газеты Verdens Gang . Архитектором и ведущим разработчиком является датский независимый консультант Пол-Хеннинг Камп (известный разработчик FreeBSD ), управление, инфраструктура и дополнительная разработка которого были первоначально предоставлены норвежской консалтинговой компанией Linpro по Linux . Позже поддержка, управление и развитие Varnish были выделены в отдельную компанию Varnish Software.

Varnish - это бесплатное программное обеспечение с открытым исходным кодом , доступное по лицензии BSD, состоящей из двух пунктов . Коммерческая поддержка доступна, среди прочего, от Varnish Software.

Версия 1.0 Varnish была выпущена в 2006 году, [2] [3] Varnish 2.0 в 2008 году, [4] Varnish 3.0 в 2011 году, [5] Varnish 4.0 в 2014 году, [6] Varnish 5.0 в 2016 году, [7] и Varnish 6.0 в марте 2018 г. [8]

Архитектура [ править ]

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

Varnish является многопоточным , при этом каждое клиентское соединение обрабатывается отдельным рабочим потоком. Когда достигается настроенный предел количества активных рабочих потоков, входящие соединения помещаются в очередь переполнения; когда эта очередь достигает установленного предела, входящие соединения будут отклонены.

Основным механизмом конфигурации является язык конфигурации Varnish (VCL), предметно-ориентированный язык (DSL), используемый для написания перехватчиков, которые вызываются в критических точках при обработке каждого запроса. Большинство решений политики остается за кодом VCL, что делает Varnish более настраиваемым и адаптируемым, чем большинство других ускорителей HTTP. [ необходима цитата ] Когда скрипт VCL загружается, он транслируется на C , компилируется в общий объект системным компилятором и загружается непосредственно в ускоритель, который, таким образом, можно перенастроить без перезапуска.

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

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

Показатели производительности [ править ]

Varnish Cache может ускорить доставку информации в несколько сотен раз. Для обеспечения надлежащей работы и производительности Varnish предоставляет показатели, которые можно отслеживать в следующих областях: [9]

  • Клиентские метрики : клиентские подключения и запросы
  • Производительность кеша : попадания в кеш , выселения
  • Метрики потока: создание потока, сбои, очереди
  • Бэкэнд-метрики : успех, сбой и работоспособность серверных подключений

Коллекция показателей [ править ]

Varnish Cache поставляется с инструментами мониторинга и ведения журналов. Одним из наиболее часто используемых является varnishstat, который дает подробный снимок текущей производительности Varnish. Он обеспечивает доступ к статистике в памяти, такой как попадания и промахи кеша, потребление ресурсов, созданные потоки и многое другое. [10]

varnishstat [ править ]

Запуск varnishstat из командной строки возвращает постоянно обновляемый список всех доступных показателей Varnish. Если добавлен флаг -1, varnishstat завершится после однократной печати списка. [11] Varnishstat можно использовать как автономный инструмент для выборочной проверки состояния кеша. Для построения графиков показателей с течением времени, корреляции с другими статистическими данными по инфраструктуре и настройки предупреждений о любых проблемах, которые могут возникнуть, службы мониторинга могут интегрироваться с Varnish и собирать показатели varnishstat.

varnishlog [ править ]

Varnishlog - это инструмент, который можно использовать для отладки или настройки конфигурации Varnish, поскольку он предоставляет подробную информацию о каждом отдельном запросе.

Балансировка нагрузки [ править ]

Varnish поддерживает балансировку нагрузки с использованием как циклического перебора, так и случайного директора, с взвешиванием для каждого сервера. Также доступна базовая проверка работоспособности серверных ВМ. [12]

Другие особенности [ править ]

Varnish Cache также включает:

  • Поддержка плагинов с модулями Varnish, также называемыми VMOD [13]
  • Поддержка Edge Side Includes, включая сшивание сжатых фрагментов ESI
  • Сжатие и декомпрессия Gzip
  • DNS, случайные, хеширующие и клиентские IP-директора
  • HTTP Streaming Pass & Fetch
  • Экспериментальная поддержка постоянного хранилища без исключения LRU
  • Режимы Saint [14] и Grace [15] .
    • Если сервер выходит из строя и возвращает код состояния HTTP 500 , льготный режим игнорирует заголовки истечения срока действия и продолжает возвращать кэшированные версии. Режим Saint используется при балансировке нагрузки , когда отказавший сервер заносится в черный список на период карантина и исключается из пула серверов.

См. Также [ править ]

  • Веб-ускоритель, в котором обсуждается ускорение HTTP на основе хоста
  • Прокси-сервер, на котором обсуждаются прокси на стороне клиента
  • Обратный прокси, который обсуждает прокси на стороне источника
  • Сравнение веб-серверов
  • Протокол интернет-кеширования

Ссылки [ править ]

  1. ^ "Выпущен Varnish Cache 6.5.1" . 25 сентября 2020.
  2. ^ "Рождественский календарь Catalyst - День 14" . www.catalystframework.org . Проверено 4 сентября 2020 года .
  3. ^ Smørgrav, Даг-Эрлинг (Sep 20, 2006). "Varnish 1.0 выпущен" . Проверено 4 сентября 2020 года .
  4. ^ Heen, Tollef Туман (15 октября 2008). "Varnish 2.0 выпущен!" . Проверено 4 сентября 2020 года .
  5. ^ Heen, Tollef Туман (17 июня 2011). «Выпущен Varnish 3.0.0» . Проверено 4 сентября 2020 года .
  6. ^ Karstensen, Ласс (10 апреля 2014). «Выпущен Varnish 4.0.0» . Проверено 4 сентября 2020 года .
  7. ^ "Varnish Cache 5.0.0 - Varnish HTTP Cache" . varnish-cache.org . Проверено 4 сентября 2020 года .
  8. Пол-Хеннинг Камп (15 марта 2018 г.). «Выпущен Varnish 6.0» . Проверено 15 мая 2018 .
  9. ^ «Лучшие показатели эффективности лакокрасочного покрытия» . Лучшие показатели эффективности Varnish . 28 июля 2015 . Проверено 4 сентября 2020 года .
  10. ^ «Как собирать метрики Varnish» . Как собирать метрики Varnish . 28 июля 2015 . Проверено 4 сентября 2020 года .
  11. ^ "varnishstat (1): статистика HTTP-ускорителя - справочная страница Linux" . linux.die.net . Проверено 4 сентября 2020 года .
  12. ^ "BackendPolling - Varnish" . Varnish-cache.org . Проверено 18 июля 2014 .
  13. ^ "Каталог VMOD (модули и расширения Varnish) | Сообщество Varnish" . Varnish-cache.org . Проверено 18 июля 2014 .
  14. ^ "Saint Mode" . Лак .
  15. ^ «Режим благодати» . Лак .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Официальный коммерческий сайт
  • Записки архитектора
  • « Вы делаете это неправильно », 11 июня 2010 г. Статья в очереди ACM разработчика Varnish Пола-Хеннинга Кампа, описывающая реализацию списка LRU.
  • Лак в условиях непрофессионала
  • Руководство по Varnish Cache