Poul-Henning Kamp, een van de bekende ontwikkelaars van FreeBSD, die betrokken was bij het creëren van systemen zoals MD5crypt, GEOM, GBDE en FreeBSD Jail, heeft de release van Varnish-Cache 8.0 aangekondigd, een hoogpresterende cacheproxy die bedoeld is om als HTTP-versneller te functioneren. Het project wordt verspreid onder de BSD-licentie en werd ooit gebruikt in projecten van Facebook, Wikimedia, Twitter, Vimeo, Tumblr, The New York Times en The Guardian.
De hoge prestaties worden bereikt door het gebruik van multithreading, het multiplexen van verbindingen met behulp van epoll/kqueue-oproepen en het gebruik van systeemopdrachten zoals sendfile en madvise. Op gewone hardware kan het een stroom van 20 Gbps verwerken en de responsetijden met 300 tot 1000 keer verbeteren. De cache wordt in het virtuele geheugen opgeslagen. Een kenmerk van Varnish is de mogelijkheid om de af te geven pagina's in delen aan de frontend samen te stellen, waarbij de samenstellingslogica wordt bepaald met de ESI-taal (Edge Side Includes).
Varnish biedt ook een flexibel configuratiesysteem waarin het gebruik van invoegtoepassingen in de C-taal is toegestaan. De configuratie maakt gebruik van een speciale VCL-taal, die vervolgens wordt gecompileerd naar uitvoerbare binaire code. VCL stelt je in staat om het beleid voor het verwerken van verzoeken te beschrijven: bepaal de te verwerken inhoud, waar deze vandaan moet komen en hoe deze moet worden omgevormd voordat het wordt afgeleverd. De basisfunctionaliteit kan worden uitgebreid via modules. Er zijn mechanismen voor load-balancing, statusregistratie en reactietijden van de backend.servers.
Bij de aankondiging van de nieuwe versie werd ook aangekondigd dat de naam van het project zal veranderen. Vanaf de volgende release zal 'Varnish Cache' worden hernoemd naar 'Vinyl Cache' vanwege claims met betrekking tot het handelsmerk Varnish, dat is geregistreerd op naam van Varnish Software, die betrokken was bij de ontwikkeling en de open-source 'Varnish Cache' financieel ondersteunde. 22 jaar geleden werd de ontwikkeling van Varnish Cache gefinancierd door de Noorse krant Verdens Gang, die Poul-Henning Kamp inhuurde om de code te schrijven en het bedrijf Linpro voor het onderhoud. Later werd Linpro omgevormd tot Varnish Software. Het blijkt dat de naam Varnish Cache werd geassocieerd met een open-sourceproject en Varnish Software met een commercieel bedrijf.
De mogelijkheid om de naam Varnish te gebruiken in de titel van het open project werd verstrekt op basis van een mondelinge overeenkomst, en Paul-Henning Kamp heeft niet aangedrongen op een schriftelijke overeenkomst. Tot voor kort coëxisteerden het bedrijf en het open project vreedzaam, maar daarna mengden de intellectuele eigendomsadvocaten zich in het geschil, met het standpunt dat de naam Varnish Cache in geen enkele context mag worden gebruikt zonder expliciete toestemming.
Aangezien de noodzaak om toestemming van Varnish Software te verkrijgen sommige deelnemers verhinderde zich bij de ontwikkeling aan te sluiten, werd geprobeerd om tot een overeenkomst te komen, maar de juristen blijven beweren dat de naam Varnish Cache toebehoort aan Varnish Software en dat ze het gebruik door het open project toestaan onder bepaalde beperkingen en de mogelijkheid om vetorechten uit te oefenen. Varnish Cache is niet bereid in te stemmen met deze beperkingen, omdat het van plan is zich als een onafhankelijk project verder te ontwikkelen.
Na de hernoeming wordt er voor verdere coördinatie van de ontwikkeling een non-profit partnerschap opgericht dat in de jurisdictie van Denemarken zal opereren. In de statuten is bepaald dat de organisatie geen geld kan bezitten of beheren. Tot de doelstellingen behoren: de ontwikkeling, ondersteuning en distributie van software. Iedereen kan zich bij de organisatie aansluiten na goedkeuring van de bestaande deelnemers. Er zal een comité worden opgericht voor het bestuur, dat door de deelnemers zal worden gekozen.
Belangrijkste vernieuwingen in Varnish-Cache 8.0:
- In het achtergrondprocess van varnishd, dat verzoeken van klanten ontvangt, verzoeken doorgeeft aan backends en antwoorden cachet, is de parameter "uncacheable_ttl" geïmplementeerd voor het bepalen van de levensduur (TTL) van objecten die als niet-cachebaar zijn gemarkeerd.
- De standaardwaarde van de parameter ban_any_variant is ingesteld op 0, waarbij de blokkadelijst alleen van toepassing is op overeenkomende varianten van objecten.
- Het verzenden van de stopopdracht leidt nu tot het wachten op het voltooien van alle lopende transacties (VCL-handlers).
- Ondersteuning toegevoegd voor toegang vanuit VCL-code tot bepaalde runtime-parameters, met gebruik van de syntaxis "param.".
- Mogelijkheid toegevoegd om de logica voor het genereren van antwoorden "304 Not Modified" te overschrijven.
- Verouderde VMOD-functies std.real2integer(), std.real2time(), std.time2integer() en std.time2real() zijn verwijderd. Gebruik in plaats daarvan de syntaxis «std.integer(real=std.round(…), fallback=…)» of «std.integer(time=…, fallback=…). De functie format_rfc1123() is hernoemd naar cookie.format_date().
- In VUT en varnishtest is het mogelijk gemaakt om stack-tracelogs naar het log te schrijven na een crash.
- Er is een nieuwe variabele «obj.last_hit» toegevoegd aan de tool varnishadm, die kan worden gebruikt voor het verwijderen van objecten uit de cache die lange tijd niet zijn opgevraagd.
- Nieuwe statistische tellers VCP.ref_hit, VCP.ref_miss, transit_stored en transit_buffered zijn toegevoegd aan de tool varnishstat.
Bron: opennet.ru
