Poul-Henning Kamp, uno dei noti sviluppatori di FreeBSD, che ha partecipato alla creazione di sistemi come MD5crypt, GEOM, GBDE e FreeBSD Jail, ha presentato il rilascio di Varnish-Cache 8.0, un proxy caching ad alte prestazioni progettato per fungere da acceleratore HTTP. Il progetto è distribuito sotto licenza BSD ed è stato utilizzato in passato da progetti come Facebook, Wikimedia, Twitter, Vimeo, Tumblr, New York Times e Guardian.
L'alta prestazione è raggiunta grazie all'uso della multithreading, del multiplexing delle connessioni tramite chiamate epoll/kqueue e all'attivazione delle chiamate di sistema sendfile e madvise. Su hardware normale è in grado di elaborare un flusso a 20 Gbps e di garantire un'accelerazione nella risposta alle richieste di 300-1000 volte. La cache è conservata nella memoria virtuale. Una caratteristica distintiva di Varnish è la capacità di assemblare le pagine restituite a pezzi sul lato frontend, definendo la logica di assemblaggio nel linguaggio ESI (Edge Side Includes).
Varnish offre anche un sistema di configurazione flessibile, che consente l'uso di inserti in linguaggio C. Per la configurazione si utilizza un linguaggio speciale chiamato VCL, che viene poi compilato in codice binario eseguibile. VCL consente di descrivere la politica di gestione della richiesta: definire il contenuto da gestire, da dove ottenerlo e come trasformarlo prima della consegna. La funzionalità di base può essere ampliata attraverso moduli. Sono presenti meccanismi per il bilanciamento del carico, la registrazione dello stato e il tempo di risposta del backend.server.
Insieme all'annuncio della nuova versione è stato comunicato un imminente cambiamento del nome del progetto. A partire dal prossimo rilascio, «Varnish Cache» sarà rinominato in «Vinyl Cache» a causa di questioni relative al marchio Varnish, registrato a nome della Varnish Software, che ha partecipato allo sviluppo e ha finanziato il progetto open source «Varnish Cache». 22 anni fa, lo sviluppo di Varnish Cache fu finanziato dal giornale norvegese Verdens Gang, che assunse Paul-Henning Kamp per scrivere il codice, e l'azienda Linpro per la sua manutenzione. Successivamente, Linpro si trasformò nella Varnish Software. È emerso che il nome Varnish Cache era associato al progetto open source, mentre Varnish Software era associato alla compagnia commerciale.
La possibilità di utilizzare il nome Varnish nel titolo del progetto open source era stata concessa sulla base di un accordo verbale, e Paul-Henning Kamp non aveva insistito per formalizzare un accordo scritto. Fino a tempi recenti, l'azienda e il progetto open source coesistevano pacificamente, ma successivamente sono intervenuti avvocati specializzati in proprietà intellettuale, la cui posizione è che non è possibile utilizzare il nome Varnish Cache in nessun contesto senza esplicito permesso.
Poiché la necessità di ottenere il permesso da Varnish Software ha impedito a alcuni partecipanti di unirsi allo sviluppo, è stato fatto un tentativo di accordo, ma gli avvocati continuano a dichiarare che il nome Varnish Cache appartiene a Varnish Software e ne consentono l'uso da parte di un progetto open source con alcune restrizioni e la possibilità di veto. Varnish Cache non è disposto ad accettare tali restrizioni, poiché intende continuare a evolversi come progetto indipendente.
Dopo la rinomina, per una migliore coordinazione dello sviluppo, si prevede di creare un'associazione non profit che opererà sotto la giurisdizione danese. Statuto prevede che l'organizzazione non possa possedere né gestire denaro. Tra gli obiettivi ci sono: sviluppo, supporto e distribuzione di software. Chiunque può unirsi all'organizzazione dopo l'approvazione da parte dei membri esistenti. Un comitato eletto dai membri sarà responsabile della gestione.
Novità principali di Varnish-Cache 8.0:
- Nel processo in background varnishd, che riceve richieste dai clienti, inoltra le richieste ai backend e memorizza nella cache le risposte, è stato implementato il parametro «uncacheable_ttl» per definire il tempo di vita (TTL) degli oggetti contrassegnati come non memorizzabili nella cache.
- Il valore del parametro ban_any_variant è impostato su 0 per impostazione predefinita, momento in cui l'elenco di blocco si applica solo alle varianti corrispondenti degli oggetti.
- L'invio del comando stop ora porta all'attesa del completamento di tutte le transazioni in corso (gestori VCL).
- Aggiunta la possibilità di accedere da codice VCL ad alcuni parametri runtime, utilizzando la sintassi «param.».
- Aggiunta la possibilità di ridefinire la logica di generazione delle risposte «304 Not Modified».
- Rimosse le funzioni VMOD obsolete std.real2integer(), std.real2time(), std.time2integer() e std.time2real(), a favore della sintassi «std.integer(real=std.round(…), fallback=…)» o «std.integer(time=…, fallback=…). La funzione format_rfc1123() è stata rinominata in cookie.format_date().
- Nel VUT e varnishtest è stata garantita la registrazione delle tracce dello stack nei log dopo una terminazione anomala.
- Nella utility varnishadm è stata aggiunta la variabile «obj.last_hit», che può essere utilizzata per gestire l'eliminazione degli oggetti nella cache a cui non è stato accesso da tempo.
- Nella utility varnishstat sono stati aggiunti nuovi contatori statistici: VCP.ref_hit, VCP.ref_miss, transit_stored e transit_buffered.
Fonte: opennet.ru
