Varnish HTTP Cache — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
Строка 3: Строка 3:
 
| screenshot            =
 
| screenshot            =
 
| logo                  = varnish-cache_logo.jpg
 
| logo                  = varnish-cache_logo.jpg
| logo size = 280px
+
| logo_size = 280px
 
| caption                =
 
| caption                =
 
| developer              = Poul-Henning Kamp, Redpill-Linpro, Varnish Software
 
| developer              = Poul-Henning Kamp, Redpill-Linpro, Varnish Software
Строка 13: Строка 13:
 
| genre                  = HTTP accelerator
 
| genre                  = HTTP accelerator
 
| license                = two-clause BSD license
 
| license                = two-clause BSD license
| website                = {{URL|https://www.varnish-cache.org/}}
+
| website                = {{URL|varnish-cache.org}}
 
}}
 
}}
  

Версия 20:46, 14 июня 2019

Varnish
Varnish-cache logo.jpg
Разработчики: Poul-Henning Kamp, Redpill-Linpro, Varnish Software
Выпущена: 2005
Постоянный выпуск: 6.2.0 / 15 March 2019 года; 4 months ago (2019-03-15)[Источник 1]
Написана на: C
Операционная система: BSD, Linux, UNIX
Тип ПО: HTTP accelerator
Лицензия: two-clause BSD license
Веб-сайт varnish-cache.org

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

Varnish используется на таких высоконагруженных сайтах, как Википедия, интернет-сайты газет, таких как The New York Times, The Guardian, The Hindu, Corriere della Sera, социальные, медиа и контент-сайты, такие как Facebook, Twitter, Vimeo и Tumblr. Среди топ 10 тысяч веб-сайтов, примерно каждый десятый использует Varnish Cache.[Источник 2]

История

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

Varnish ПО с открытым исходным кодом, доступное в соответствии с лицензией BSD. Так же доступна коммерческая поддержка Varnish.

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

Архитектура

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

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

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

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

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

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

Производительность

Не смотря на то что Varnish предназначен для уменьшения разногласий между потоками, его авторы утверждают, что его производительность будет столь же хороша, как и у PThreads. Хотя Varnish был спроектирован так, чтобы потоки работали бок о бок как можно более плавно, производительность Varnish может быть такой же хорошей, как и реализация pthreads в операционной системе. Плохая реализация также может потреблять ненужные ресурсы, ограничивая производительность.

Кроме того, медленная реализация malloc (Microsoft Windows) может добавлять ненужную конкуренцию и тем самым ограничить производительность, следовательно, рекомендуется работать в Linux Varnish или Unix средах.

Одной из ключевых особенностей Varnish Cache, помимо его производительности, является гибкость его языка конфигурации VCL. VCL позволяет описывать механизмы, по которым должны обрабатываться входящие запросы. В такой установке вы можете задать, вид данных, который вы будете обрабатывать, откуда вы хотите получать эти данные, а так же форматы запросов и ответов.[Источник 4]

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

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

  • Client metrics: соединение и клиентские запросы
  • Cache performance: попадание в кэш и извлечение
  • Thread metrics: создание потоков, сбои, очереди
  • Backend metrics: успех, неудача, состояние серверного соединения[Источник 5]

Балансировка нагрузки

Varnish Cache поддерживает балансировку нагрузки с помощью алгоритма Round robin. Бэкэнд назначает каждому запросу свой приоритет приоритет. Также позволяя следить за работоспособностью серверных частей.

Metric collection

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

varnishstat

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

varnishlog

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

Другие особенности

Varnish Cache также имеет:

  • Поддержка плагинов с Varnish модулями, также называемый VMODs[Источник 8]
  • Поддержка Edge, Side Включает, включая сжатые фрагменты ESI
  • Gzip Сжатие и распаковка
  • DNS, Random, хеширование
  • HTTP Streaming Pass & Fetch
  • Экспериментальная поддержка постоянного хранения, без LRU извлечении
  • Режимы Saint[Источник 9] и Grace[Источник 10]
Если при серверном сбое возвращается 500 ошибка, режим Grace будет игнорировать заголовки истечения срока действия и продолжать возвращать кэшированные версии. Режим Saint предназначен для использования при [балансировки [нагрузки (вычисления) | балансировки нагрузки]], где провальный сервер занесен в черный список на период карантина и исключены из пула серверов.

Лицензия

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

Установка на Debian и Ubuntu

Откройте терминал и введите команды.

$ sudo apt-get update
$ sudo apt-get install varnish

Проверка установленной версии.

$ varnishd -V

Источники

  1. Releases & Downloads // Varnish-Cache. Дата обновления: 15.03.2019. URL: https://www.varnish-cache.org/releases/index.html (дата обращения: 15.04.2019).
  2. How popular is Varnish // Pingdom. Дата обновления: 11.07.12. URL: http://royal.pingdom.com/2012/07/11/how-popular-is-varnish/ (дата обращения: 24.12.2016).
  3. Varnish version // Varnish-Cache. Дата обновления: 05.04.19. URL: https://www.varnish-cache.org/lists/pipermail/varnish-announce/ (дата обращения: 15.04.2019).
  4. Introduction to Varnish // Varnish-Cache. URL: http://varnish-cache.org/intro/ (дата обращения: 09.06.2019).
  5. You're Doing It Wrong // Queue. Дата обновления: 11.06.2010. URL: http://queue.acm.org/detail.cfm?id=1814327 (дата обращения: 08.06.2019).
  6. How to collect Varnish metrics // Datadoghq. Дата обновления: 28.08.15. URL: https://www.datadoghq.com/blog/how-to-collect-varnish-metrics (дата обращения: 03.06.2019).
  7. varnishstat - Linux man page // Datadoghq. URL: https://linux.die.net/man/1/varnishstat (дата обращения: 09.06.2019).
  8. VMODs Directory (Varnish Modules and Extensions) // Varnish-Cache. URL: https://www.varnish-cache.org/vmods (дата обращения: 09.06.2019).
  9. Saint Mode // Varnish-Cache. Дата обновления: 13.10.2014. URL: https://varnish-cache.org/trac/wiki/VCLExampleSaintMode (дата обращения: 05.06.2019).
  10. Grace Mode // Varnish-Cache. Дата обновления: 25.08.2010. URL: https://www.varnish-cache.org/trac/wiki/VCLExampleGrace (дата обращения: 05.06.2019).