Cloudflare on läinud NGINX-ilt üle omaenda Rusti keeles kirjutatud Pingora proksile

Cloudflare teatas, et on üle läinud oma sisu edastamise võrgustiku kasutamisele Rust keeles kirjutatud Pingora proksile. Uus proksi asendas NGINX serverile põhineva seadistuse Lua skriptidega ning käsitleb üle triljoni päringu päevas. Tõdetakse, et üleminek spetsialiseeritud proksile võimaldas mitte ainult uusi võimalusi ellu viia ja suurendada turvalisust tänu mäluga seotud ohutusele, vaid tõi kaasa ka märkimisväärse jõudluse paranemise ja ressursside kokkuhoiu — Pingora lahendus ei vaja Lua kasutamist, seega tarbib see 70% vähem CPU ressursse ja 67% vähem mälu sama liikluse mahu töötlemisel.

Pika aja jooksul on süsteem, mis suunab liiklust kasutajate ja lõpp-punktide vahel serveritega NGINX-i ja Lua skriptide baasil rahuldati Cloudflare'i vajadusi, kuid võrgustiku kasvades ja selle keerukuse suurenedes osutus universaalne lahendus ebapiisav, nii jõudluse kui ka laiendatavuse ja uute funktsioonide rakendamise piirangute tõttu. Konkreetsemalt tekkisid probleemid funktsionaalsuse lisamisega, mis ületas tavalise värava ja koormuse tasakaalustaja. Näiteks tekkis vajadus taasalustada päringut teisele serverile, varustades seda teistsuguste HTTP-päiste kogumiga. serveriga taasalustades päringu teisele serverile, varustades seda muu HTTP-päiste kogumiga.

Pingoras rakenduses on traditsioonilise eraldusprotsesside töötluse arhitektuuri asemel kasutatud mitme lõime mudelit, mis on Cloudflare'i kasutusstsenaariumide puhul (suure liikluse kontsentratsioon erinevatelt saitidelt koos suure statistilise nihkega) osutunud tõhusamaks CPU tuumade vaheliste ressursside jaotuse osas. Eriti probleemiks oli tasakaalustamata päringute sidumine protsessidega nginx-is, mis põhjustas CPU tuumade ebaühtlast koormust, mille tulemusena aeglustasid ressursimahukad päringud ja blokeeritud I/O teiste päringute töötlemist. Lisaks ei võimaldanud ühenduste basseinide sidumine töötlusprotsessidega taaskasutada juba loodud ühendusi teistelt töötlusprotsessidelt, mis vähendas töö efektiivsust suurte töötlusprotsesside korral.

NGINX:

Cloudflare on läinud NGINX-ilt üle omaenda Rusti keeles kirjutatud Pingora proksile

Pingora:

Cloudflare on läinud NGINX-ilt üle omaenda Rusti keeles kirjutatud Pingora proksile

Pingora rakendamine on lihtsustanud uute ühenduste loomise operatsioonide arvu 160 korda ja tõstnud korduvkasutatavate päringute osakaalu 87,1% -lt 99,92% -le. Lisaks korduvate ühenduste vähenemisele ja CPU tuumade efektiivsemale kasutamisele aitavad uue proxy jõudluse tõstmisel peamiselt kaasa nginx-i aeglaste Lua töötluste kõrvaldamine.

Rust'i keel valiti, kuna see võimaldab saavutada kõrget jõudlust koos mälu turvalisuse tagamise vahenditega. Mainitakse, et hoolimata Cloudflare'i inseneride kõrgest kvalifikatsioonist ja C keeles kirjutatud koodi ülevaatusest ei ole äpardusi, mis on põhjustanud mälu probleemide (näiteks HTML parsi haavatavuse), vältida õnnestunud. Uue koodi osas on räägitud Pingoras toimunud tõrgete analüüsist, mis osutusid mitte rakenduse probleemide, vaid Linuxi tuuma ja riistvararike vigadeks.

Lisaks võib märkida, et Open-Source Summit Europe konverentsil, mis praegu toimub, tegi Linus Torvalds kommentaari Rusti keele toe lisamise kohta Linuxi kerneli. Kerneli versioonis 6.0 ei ole Rusti seadme draiverite arendamiseks mõeldud patše, kuid Linuse sõnul tõenäoliselt need võetakse vastu kerneli versioonis 6.1 — ta ei kavatse integratsiooniga venitada. Rusti toe lisamise motiivideks, lisaks positiivsele mõjule turvalisusele, toob Linus välja ka võimaluse suurendada uute osalejate huvi kerneli arendamise vastu, mis on aktuaalne vananevate veteranide tingimustes.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster