Cloudflare het oorgeskakel van NGINX na sy eie Pingora-instaanbediener wat in Rust geskryf is

Cloudflare het die oorgang van sy inhoudafleweringsnetwerk aangekondig om die Pingora-instaanbediener te gebruik, geskryf in die Rust-taal. Die nuwe instaanbediener vervang die NGINX-bedienergebaseerde konfigurasie met Lua-skrifte, en verwerk meer as 'n triljoen versoeke per dag. Daar word kennis geneem dat die oorgang na 'n gespesialiseerde instaanbediener nie net toegelaat het om nuwe funksies te implementeer en sekuriteit te verhoog as gevolg van veilige werking van geheue nie, maar ook gelei het tot 'n aansienlike toename in werkverrigting en hulpbronbesparings - die Pingora-gebaseerde oplossing vereis nie die gebruik nie. van Lua, en verbruik dus 70% minder hulpbronne SVE en 67% minder geheue terwyl dieselfde hoeveelheid verkeer verwerk word.

Vir 'n lang tyd het 'n stelsel om verkeer tussen gebruikers en eindbedieners gebaseer op NGINX- en Lua-skrifte te voorsien aan die behoeftes van Cloudflare bevredig, maar namate die netwerk gegroei en die kompleksiteit daarvan toegeneem het, het 'n universele oplossing onvoldoende geblyk te wees, beide t.o.v. prestasie en as gevolg van beperkings in uitbreidbaarheid en implementering van nuwe geleenthede vir kliënte. Daar was veral uitdagings om funksionaliteit by te voeg as 'n eenvoudige poort en lasbalanseerder. As die bediener nie 'n versoek verwerk nie, het dit byvoorbeeld nodig geword om die versoek weer na 'n ander bediener te stuur en dit van 'n ander stel HTTP-opskrifte te voorsien.

In plaas van 'n argitektuur wat versoeke in aparte werkerprosesse skei, gebruik Pingora 'n multi-draadmodel, wat in Cloudflare-gebruiksgevalle (hoë konsentrasie van verkeer vanaf verskillende werwe met 'n groot statistiese verskuiwing) 'n meer doeltreffende verspreiding van hulpbronne tussen SVE-kerns getoon het. In die besonder, nginx se binding van ongebalanseerde versoeke aan prosesse het gelei tot ongebalanseerde las op die SVE-kerns, wat gelei het tot hulpbron-intensiewe versoeke en die blokkering van I/O wat die verwerking van ander versoeke vertraag het. Daarbenewens het die binding van die verbindingspoel aan hanteerderprosesse nie hergebruik van reeds gevestigde verbindings van ander hanteerderprosesse toegelaat nie, wat doeltreffendheid verminder wanneer daar 'n groot aantal hanteerderprosesse is.

NGINX:

Cloudflare het oorgeskakel van NGINX na sy eie Pingora-instaanbediener wat in Rust geskryf is

Pingora:

Cloudflare het oorgeskakel van NGINX na sy eie Pingora-instaanbediener wat in Rust geskryf is

Die implementering van Pingora het dit moontlik gemaak om die aantal installasies van nuwe verbindings met 160 keer te verminder en die aandeel van hergebruikte versoeke van 87.1% tot 99.92% te verhoog. Benewens die vermindering van herverbindings en meer doeltreffende gebruik van SVE-kerns, was die nuwe instaanbediener se prestasieverbetering hoofsaaklik te wyte aan die verwydering van stadige Lua-hanteerders wat met nginx gebruik word.

Die Rust-taal is gekies om hoë werkverrigting te behaal gekombineer met die beskikbaarheid van gereedskap om veilige werking met geheue te verseker. Daar word genoem dat ten spyte van die hoogs gekwalifiseerde ingenieurs van Cloudflare en die hersiening van die kode wat in die C-taal geskryf is, dit nie moontlik was om foute te vermy wat tot geheueprobleme gelei het nie (byvoorbeeld 'n kwesbaarheid in die HTML-ontleder). Wat die nuwe kode betref, praat dit oor gevalle van ontleding van foute in Pingora, wat blykbaar nie veroorsaak word deur probleme in die toepassing nie, maar deur 'n fout in die Linux-kern en hardeware-foute.

Daarbenewens kan ons kennis neem van die kommentaar van Linus Torvalds, uitgespreek tydens die Open-Source Summit Europe-konferensie wat deesdae plaasvind, met betrekking tot die insluiting van ondersteuning vir die Rust-taal in die Linux-kern. Patches vir die ontwikkeling van toestelbestuurders in die Rust-taal is nie by die 6.0-kern ingesluit nie, maar volgens Linus sal dit heel waarskynlik in die 6.1-kern aanvaar word; hy gaan nie integrasie vertraag nie. As 'n motivering om ondersteuning vir Rust by te voeg, noem Linus, benewens die positiewe impak op sekuriteit, ook die geleentheid om belangstelling te verhoog om aan die kern van nuwe deelnemers te werk, wat belangrik is in die konteks van veroudering van oumense.

Bron: opennet.ru

Voeg 'n opmerking