Pol-Henning Kamp, jeden z znanych deweloperów FreeBSD, który brał udział w tworzeniu takich systemów jak MD5crypt, GEOM, GBDE i FreeBSD Jail, zaprezentował wydanie Varnish-Cache 8.0, wysoko wydajnego proxy cache, zaprojektowanego do działania jako akcelerator HTTP. Projekt jest wydawany na licencji BSD i w swoim czasie był używany w projektach Facebooka, Wikimedia, Twittera, Vimeo, Tumblra, New York Times i Guardiana.
Wysoka wydajność jest osiągana dzięki zastosowaniu wielowątkowości, multiplexowania połączeń za pomocą wywołań epoll/kqueue oraz wykorzystaniu wywołań systemowych sendfile i madvise. Na standardowym sprzęcie jest w stanie obsłużyć strumień na poziomie 20 Gbps i zapewnić przyspieszenie odpowiedzi na zapytania od 300 do 1000 razy. Cache jest przechowywana w pamięci wirtualnej. Cechą wyróżniającą Varnish jest zdolność do składania zwracanych stron z części po stronie front-endu, określając logikę składania w języku ESI (Edge Side Includes).
Varnish oferuje również elastyczny system konfiguracji, w którym dozwolone jest korzystanie z wstawek w języku C. Do konfiguracji używany jest specjalny język VCL, który następnie jest kompilowany do wykonywalnego kodu binarnego. VCL pozwala opisać politykę przetwarzania zapytania: określić przetwarzany kontent, skąd go pozyskać i jak przekształcić przed zwróceniem. Podstawowa funkcjonalność może być rozszerzana poprzez moduły. Obecne są mechanizmy równoważenia obciążenia, monitorowania stanu i czasu reakcji backendu.serwerów.
Wraz z ogłoszeniem nowej wersji zapowiedziano również nadchodzącą zmianę nazwy projektu. Od następnej wersji „Varnish Cache” będzie przemianowany na „Vinyl Cache” z powodu roszczeń związanych z marką Varnish, zarejestrowaną przez firmę Varnish Software, która brała udział w rozwoju i finansowo wspierała otwarty projekt „Varnish Cache”. 22 lata temu rozwój Varnish Cache został sfinansowany przez norweską gazetę Verdens Gang, która zatrudniła Paula-Henninga Kampa do napisania kodu, a firmę Linpro do jego wsparcia. Później z Linpro powstała firma Varnish Software. Ukształtowało się w ten sposób, że nazwa Varnish Cache kojarzyła się z projektem otwartym, natomiast Varnish Software z firmą komercyjną.
Możliwość używania nazwy Varnish w nazwie otwartego projektu została przyznana na podstawie ustnej umowy, a Paul-Henning Kamp nie nalegał na spisanie pisemnej umowy. Do niedawna firma i otwarty projekt współistniały w zgodzie, jednak w sprawę zaangażowali się prawnicy ds. własności intelektualnej, którzy stwierdzili, że nie można używać nazwy Varnish Cache w jakimkolwiek kontekście bez wyraźnej zgody.
Ponieważ konieczność uzyskania zgody od Varnish Software uniemożliwiła niektórym uczestnikom dołączenie do rozwoju, podjęto próbę negocjacji, jednak prawnicy nadal twierdzą, że nazwa Varnish Cache należy do firmy Varnish Software i zezwalają na jej użycie przez otwarty projekt pod pewnymi ograniczeniami i możliwością weta. Varnish Cache nie jest gotowy zgodzić się na te ograniczenia, ponieważ zamierza rozwijać się jako niezależny projekt.
Po zmianie nazwy w celu dalszej koordynacji rozwoju planowane jest utworzenie non-profit partnerstwa, które będzie działać w jurysdykcji Danii. W statucie określono, że organizacja nie może posiadać ani dysponować pieniędzmi. Wśród celów wymieniono: rozwój, wsparcie i dystrybucję oprogramowania. Do organizacji może dołączyć każda zainteresowana osoba po zatwierdzeniu przez istniejących uczestników. W celu zarządzania zostanie powołany komitet wybierany przez uczestników.
Główne nowości Varnish-Cache 8.0:
- W tle procesu varnishd, który przyjmuje zapytania od klientów, przekazuje zapytania do backendów i buforuje odpowiedzi, wprowadzono parametr „uncacheable_ttl” do określenia czasu życia (TTL) obiektów oznaczonych jako niecache'owalne.
- Wartość parametru ban_any_variant domyślnie ustawiona jest na 0, co oznacza, że lista blokowania stosowana jest tylko do dopasowanych wariantów obiektów.
- Wydanie polecenia stop teraz powoduje oczekiwanie na zakończenie wszystkich wykonywanych transakcji (VCL-handlerów).
- Dodano wsparcie dla odwołań z kodu VCL do niektórych parametrów runtime, korzystając z składni „param..”.
- Dodano możliwość nadpisania logiki generowania odpowiedzi „304 Not Modified”.
- Usunięto przestarzałe funkcje VMOD std.real2integer(), std.real2time(), std.time2integer() i std.time2real(), zamiast których należy używać składni „std.integer(real=std.round(…), fallback=…)” lub „std.integer(time=…, fallback=…). Funkcja format_rfc1123() została przemianowana na cookie.format_date().
- W VUT i varnishtest umożliwiono rejestrowanie śladów stosu w logach po awaryjnym zakończeniu działania.
- Do narzędzia varnishadm dodano zmienną „obj.last_hit”, którą można wykorzystać do organizowania usuwania obiektów z cache, do których od dawna nie było odwołań.
- Do narzędzia varnishstat dodano nowe liczniki statystyk VCP.ref_hit, VCP.ref_miss, transit_stored i transit_buffered.
Źródło: opennet.ru
