Cloudflare kaloi nga NGINX në përfaqësuesin e vet Pingora, të shkruar në Rust

Cloudflare njoftoi kalimin e rrjetit të shpërndarjes së përmbajtjes për të përdorur përfaqësuesin Pingora, të shkruar në gjuhën Rust. Proxy i ri zëvendëson konfigurimin e bazuar në server NGINX me skriptet Lua dhe përpunon më shumë se një trilion kërkesa në ditë. Vihet re se kalimi në një përfaqësues të specializuar lejoi jo vetëm zbatimin e veçorive të reja dhe rritjen e sigurisë për shkak të funksionimit të sigurt të kujtesës, por gjithashtu çoi në një rritje të konsiderueshme të performancës dhe kursimeve të burimeve - zgjidhja e bazuar në Pingora nuk kërkon përdorimin e Lua, dhe për këtë arsye konsumon 70% më pak burime CPU dhe 67% më pak memorie ndërsa përpunon të njëjtën sasi trafiku.

Për një kohë të gjatë, një sistem për proxying trafikun midis përdoruesve dhe serverëve fundorë i bazuar në skriptet NGINX dhe Lua plotësonte nevojat e Cloudflare, por ndërsa rrjeti u rrit dhe kompleksiteti i tij u rrit, një zgjidhje universale doli të ishte e pamjaftueshme, si në aspektin e performancës dhe për shkak të kufizimeve në shtrirjen dhe zbatimin e mundësive të reja për klientët. Në veçanti, kishte sfida në shtimin e funksionalitetit përtej një porte të thjeshtë dhe balancues të ngarkesës. Për shembull, u bë e nevojshme, nëse serveri nuk arrin të përpunojë një kërkesë, të ridërgojë kërkesën në një server tjetër, duke i siguruar atij një grup të ndryshëm titujsh HTTP.

Në vend të një arkitekture që ndan kërkesat në procese të veçanta të punëtorëve, Pingora përdor një model me shumë fije, i cili në rastet e përdorimit të Cloudflare (përqendrimi i lartë i trafikut nga faqe të ndryshme me një zhvendosje të madhe statistikore) tregoi një shpërndarje më efikase të burimeve midis bërthamave të CPU. Në veçanti, lidhja e kërkesave të pabalancuara nga nginx me proceset rezultoi në ngarkesë të pabalancuar në bërthamat e CPU, duke rezultuar në kërkesa intensive të burimeve dhe bllokimi i I/O duke ngadalësuar përpunimin e kërkesave të tjera. Për më tepër, lidhja e grupit të lidhjes me proceset e mbajtësit nuk lejoi ripërdorimin e lidhjeve tashmë të krijuara nga proceset e tjera të mbajtësit, gjë që redukton efikasitetin kur ka një numër të madh procesesh mbajtëse.

NGINX:

Cloudflare kaloi nga NGINX në përfaqësuesin e vet Pingora, të shkruar në Rust

Pingora:

Cloudflare kaloi nga NGINX në përfaqësuesin e vet Pingora, të shkruar në Rust

Zbatimi i Pingora bëri të mundur uljen e numrit të instalimeve të lidhjeve të reja me 160 herë dhe rritjen e përqindjes së kërkesave të ripërdorura nga 87.1% në 99.92%. Përveç reduktimit të rilidhjeve dhe përdorimit më efikas të bërthamave të CPU-së, përmirësimi i performancës së përfaqësuesit të ri ishte kryesisht për shkak të heqjes së mbajtësve të ngadaltë Lua të përdorur me nginx.

Gjuha Rust u zgjodh për të arritur performancë të lartë të kombinuar me disponueshmërinë e mjeteve për të siguruar funksionim të sigurt me memorie. Përmendet se pavarësisht nga inxhinierët shumë të kualifikuar të Cloudflare dhe rishikimi i kodit të shkruar në gjuhën C, nuk ishte e mundur të shmangeshin gabimet që çonin në probleme me kujtesën (për shembull, një dobësi në analizuesin HTML). Sa i përket kodit të ri, ai flet për raste të analizimit të dështimeve në Pingora, të cilat rezultuan të shkaktoheshin jo nga problemet në aplikacion, por nga një gabim në kernelin Linux dhe dështimet e harduerit.

Për më tepër, mund të vërejmë komentin e Linus Torvalds, i shprehur në konferencën e Open-Source Summit Europe që po zhvillohet këto ditë, në lidhje me përfshirjen e mbështetjes për gjuhën Rust në kernelin Linux. Arnimet për zhvillimin e drejtuesve të pajisjes në gjuhën Rust nuk u përfshinë në kernelin 6.0, por sipas Linus, ato ka shumë të ngjarë të pranohen në kernelin 6.1; ai nuk do të vonojë integrimin. Si një motivim për të shtuar mbështetjen për Rust, përveç ndikimit pozitiv në siguri, Linus përmend gjithashtu mundësinë për të rritur interesin për të punuar në thelbin e pjesëmarrësve të rinj, gjë që është e rëndësishme në kontekstin e vjetërsisë së vjetër.

Burimi: opennet.ru

Shto një koment