Lakier (oprogramowanie) - Varnish (software)
Deweloper(zy) | Poul-Henning Kamp , Redpill-Linpro , Oprogramowanie do lakierów |
---|---|
Wersja stabilna | |
Magazyn | |
Napisane w | C |
System operacyjny | BSD , Linux , Unix |
Rodzaj | Akcelerator HTTP |
Licencja | dwuklauzulowa licencja BSD |
Strona internetowa |
lakier-cache |
Varnish to akcelerator HTTP zaprojektowany dla dynamicznych witryn internetowych z dużą ilością treści oraz interfejsów API . W przeciwieństwie do innych akceleratorów internetowych , takich jak Squid , który rozpoczął życie jako pamięć podręczna po stronie klienta, czy Apache i nginx , które są głównie serwerami pochodzenia , Varnish został zaprojektowany jako akcelerator HTTP. Varnish koncentruje się wyłącznie na HTTP , w przeciwieństwie do innych serwerów proxy, które często obsługują FTP , SMTP i inne protokoły sieciowe .
Historia
Projekt został zainicjowany przez internetowy oddział norweskiego brukowca Verdens Gang . Architektem i głównym programistą jest duński niezależny konsultant Poul-Henning Kamp (znany programista FreeBSD ), którego zarządzanie, infrastrukturę i dodatkowe prace rozwojowe pierwotnie zapewniała norweska firma konsultingowa Linpro . Wsparcie, zarządzanie i rozwój Varnish zostało później wydzielone do oddzielnej firmy, Varnish Software.
Varnish jest darmowym oprogramowaniem typu open source , dostępnym na dwuklauzulowej licencji BSD . Wsparcie komercyjne jest dostępne m.in. w firmie Varnish Software.
Wersja 1.0 Varnish została wydana w 2006, Varnish 2.0 w 2008, Varnish 3.0 w 2011, Varnish 4.0 w 2014, Varnish 5.0 w 2016 i Varnish 6.0 w marcu 2018.
Architektura
Varnish przechowuje dane w pamięci wirtualnej i pozostawia zadanie decydowania o tym, co jest przechowywane w pamięci, a co stronicowane na dysk systemowi operacyjnemu . Pomaga to uniknąć sytuacji, w której system operacyjny zaczyna buforować dane, gdy są one przenoszone na dysk przez aplikację.
Varnish jest mocno wątkowy , a każde połączenie klienta jest obsługiwane przez oddzielny wątek roboczy. Po osiągnięciu skonfigurowanego limitu liczby aktywnych wątków roboczych połączenia przychodzące są umieszczane w kolejce przepełnienia; gdy ta kolejka osiągnie skonfigurowany limit, połączenia przychodzące będą odrzucane.
Podstawowym mechanizmem konfiguracji jest język VCL ( Varnish Configuration Language ), język specyficzny dla domeny (DSL) używany do pisania punktów zaczepienia, które są wywoływane w krytycznych punktach obsługi każdego żądania. Większość decyzji dotyczących polityki jest pozostawiona kodowi VCL, dzięki czemu Varnish jest bardziej konfigurowalny i adaptowalny niż większość innych akceleratorów HTTP. Po załadowaniu skryptu VCL jest on tłumaczony na C , kompilowany do obiektu współdzielonego przez kompilator systemu i ładowany bezpośrednio do akceleratora, który można w ten sposób zmienić bez ponownego uruchamiania.
Szereg parametrów wykonawczych kontroluje takie rzeczy, jak maksymalna i minimalna liczba wątków roboczych, różne limity czasu itp. Interfejs zarządzania wiersza poleceń umożliwia modyfikowanie tych parametrów oraz kompilowanie, ładowanie i aktywowanie nowych skryptów VCL , bez ponownego uruchamiania akceleratora.
Aby zredukować do minimum liczbę wywołań systemowych w szybkiej ścieżce, dane dziennika są przechowywane w pamięci współdzielonej , a zadanie monitorowania, filtrowania, formatowania i zapisywania danych dziennika na dysku jest delegowane do osobnej aplikacji.
Wskaźniki wydajności
Pamięć podręczna lakieru może kilkaset razy przyspieszyć dostarczanie informacji. Aby zapewnić prawidłowe działanie i wydajność, Varnish udostępnia metryki, które można monitorować w następujących obszarach:
- Metryki klienta: połączenia i żądania klientów
- Wydajność pamięci podręcznej : trafienia w pamięci podręcznej , eksmisje
- Metryki wątków: tworzenie wątków, awarie, kolejki
- Wskaźniki zaplecza : sukces, porażka i stan połączeń zaplecza
Kolekcja metryczna
Pamięć podręczna lakieru jest dostarczana z narzędziami do monitorowania i rejestrowania. Jednym z najczęściej używanych jest lakierstat, który daje szczegółowy obraz aktualnej wydajności Varnisha. Zapewnia dostęp do statystyk w pamięci, takich jak trafienia i chybienia w pamięci podręcznej, zużycie zasobów, utworzone wątki i inne.
lakier stat
Uruchamianie lakierstat z wiersza poleceń zwraca stale aktualizowaną listę wszystkich dostępnych metryk lakieru. Jeśli dodana zostanie flaga -1, lakierstat wyłączy się po jednokrotnym wydrukowaniu listy. Varnishstat może być używany jako samodzielne narzędzie do wyrywkowego sprawdzania stanu pamięci podręcznej. Aby tworzyć wykresy metryk w czasie, korelować z innymi statystykami z całej infrastruktury i konfigurować alerty o wszelkich problemach, które mogą się pojawić, usługi monitorowania mogą integrować się z Varnish i zbierać metryki lakieru.
dziennik lakieru
Varnishlog to narzędzie, które można wykorzystać do debugowania lub dostrajania konfiguracji Varnisha, ponieważ dostarcza szczegółowych informacji o każdym indywidualnym żądaniu.
Równoważenie obciążenia
Varnish obsługuje równoważenie obciążenia przy użyciu zarówno metody okrężnej, jak i losowego dyrektora, w obu przypadkach z wagą na backend. Dostępna jest również podstawowa kontrola stanu backendów.
Inne funkcje
Pamięć podręczna lakieru zawiera również:
- Obsługa wtyczek z modułami Varnish, zwanymi również VMOD
- Obsługa krawędzi krawędzi obejmuje łączenie ze sobą skompresowanych fragmentów ESI
- Kompresja i dekompresja Gzip
- Dyrektorzy DNS, Random, Hashing i Client IP-based Director
- Przepustka i pobieranie strumieniowe HTTP
- Eksperymentalne wsparcie dla pamięci trwałej, bez eksmisji LRU
- Tryby Święta i Łaska.
- Jeśli serwer działa nieprawidłowo i zwraca kod stanu HTTP 500 , tryb Grace zignoruje nagłówki wygaśnięcia i nadal będzie zwracał wersje z pamięci podręcznej. Tryb Saint jest używany podczas równoważenia obciążenia , gdy uszkodzony serwer jest umieszczany na czarnej liście na okres kwarantanny i jest wykluczony z puli serwerów.
Zobacz też
- Akcelerator sieciowy, który omawia akcelerację HTTP w oparciu o hosta
- Serwer proxy, który omawia serwery proxy po stronie klienta
- Odwrotny serwer proxy, który omawia serwery proxy po stronie źródła
- Porównanie serwerów WWW
- Internetowy protokół pamięci podręcznej
- Medytacja Guru – komunikat o błędzie używany przez Varnish
Bibliografia
Zewnętrzne linki
- Oficjalna strona internetowa
- Oficjalna komercyjna strona internetowa
- Notatki Architekta
- " You're Doing It Wrong ", 11 czerwca 2010 Artykuł ACM Queue autorstwa dewelopera lakierów Poul-Henning Kamp opisujący implementację listy LRU.
- Lakier w warunkach laika
- Instrukcje dotyczące pamięci podręcznej lakieru