Cloudflare is overgestapt van NGINX naar de eigen proxy Pingora, geschreven in Rust

Cloudflare heeft aangekondigd dat het zijn content delivery network heeft overgezet naar de Pingora-proxy, geschreven in Rust. Deze nieuwe proxy vervangt de configuratie op basis van de NGINX-server met Lua-scripts en verwerkt meer dan een biljoen verzoeken per dag. De overgang naar een gespecialiseerde proxy heeft niet alleen nieuwe mogelijkheden geĆÆmplementeerd en de beveiliging verbeterd door veilig geheugenbeheer, maar heeft ook geleid tot een significante verhoging van de prestaties en besparing van middelen - de oplossing op basis van Pingora vereist geen Lua, wat resulteert in een vermindering van 70% van het CPU-gebruik en 67% minder geheugen bij de verwerking van hetzelfde volume aan verkeer.

Een lange tijd voldeed het systeem voor het proxy'en van verkeer tussen gebruikers en eindpunten servers op basis van NGINX en Lua-scripts aan de behoeften van Cloudflare, maar met de groei van het netwerk en de toenemende complexiteit bleek een universele oplossing niet voldoende, zowel qua prestaties als vanwege beperkingen in schaalbaarheid en de implementatie van nieuwe mogelijkheden voor klanten. In het bijzonder ontstonden er complicaties bij het toevoegen van functionaliteit die verder gaat dan een eenvoudige gateway en load balancer. Bijvoorbeeld, de noodzaak om in het geval van een fout bij de verwerking van een verzoek server het verzoek opnieuw door te sturen naar een andere server, voorzien van een andere set HTTP-headers.

In plaats van een architectuur waarbij verzoeken worden verdeeld over afzonderlijke verwerkers (worker-processen), maakt Pingora gebruik van een multithreaded model, dat in de gebruiksscenario's van Cloudflare (een hoge concentratie verkeer van verschillende websites met een grote statistische verschuiving) een effectievere verdeling van bronnen tussen CPU-kernen heeft aangetoond. In het bijzonder leidde de binding van ongebalanceerde verzoeken aan processen in NGINX tot een onevenwichtige belasting van de CPU-kernen, waardoor hulpbronneneisende verzoeken en blokkering van I/O de verwerking van andere verzoeken vertraagden. Bovendien stond de binding van de verbindingspool aan verwerkers niet toe om al gevestigde verbindingen van andere verwerkers opnieuw te gebruiken, wat de efficiƫntie bij een groot aantal verwerkers vermindert.

NGINX:

Cloudflare is overgestapt van NGINX naar de eigen proxy Pingora, geschreven in Rust

Pingora:

Cloudflare is overgestapt van NGINX naar de eigen proxy Pingora, geschreven in Rust

De implementatie van Pingora heeft het aantal installaties van nieuwe verbindingen met 160 keer verminderd en het aandeel herbruikbare verzoeken verhoogd van 87,1% naar 99,92%. Naast de vermindering van herhaalde verbindingen en een efficiƫnter gebruik van CPU-kernen, heeft vooral de vervangingen van de langzame Lua-handlers die met nginx werden gebruikt, bijgedragen aan de prestatieverbetering van de nieuwe proxy.

De programmeertaal Rust is gekozen vanwege de hoge prestaties in combinatie met voorzieningen voor veilige geheugenbeheer. Er wordt vermeld dat, ondanks de hoge kwalificatie van de ingenieurs van Cloudflare en de codebeoordeling van geschreven C-code, het niet mogelijk was om fouten te vermijden die leiden tot geheugenproblemen (bijvoorbeeld, een kwetsbaarheid in de HTML-parser). Wat betreft de nieuwe code, zijn er gevallen beschreven van fouten in de werking van Pingora, die het gevolg waren van problemen in de Linux-kernel en hardwarestoringen.

Daarnaast kan worden opgemerkt dat Linus Torvalds tijdens de huidige Open-Source Summit Europe, opmerkingen heeft gemaakt over de opname van ondersteuning voor de programmeertaal Rust in de Linux-kernel. In kernel 6.0 zijn de patches voor de ontwikkeling van stuurprogramma's in Rust niet opgenomen, maar volgens Linus zullen ze waarschijnlijk worden geaccepteerd in kernel 6.1; hij is niet van plan om met de integratie te wachten. Als motivatie voor het toevoegen van ondersteuning voor Rust, naast de positieve invloed op de veiligheid, noemt Linus ook de mogelijkheid om de interesse van nieuwe deelnemers in de ontwikkeling van de kernel te vergroten, wat relevant is gezien de vergrijzing van de huidige deelnemers.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster