Cloudflare teatas, et on liikunud oma sisu edastamise vĂ”rgu kasutusele Pingora proksi peale, mis on kirjutatud Rust keeles. Uus proksi asendas NGINX serveri ja Lua skriptide pĂ”hise konfiguratsiooni ning töötleb ĂŒle ĂŒhe triljoni pĂ€ringu pĂ€evas. TĂ”detakse, et ĂŒleminek spetsialiseeritud proksile on vĂ”imaldanud mitte ainult uusi vĂ”imalusi rakendada ja suurendada turvalisust tĂ€nu mĂ€luga turvalisele töötlemisele, vaid see on toonud kaasa ka mĂ€rkimisvÀÀrse tĂ”usu jĂ”udluses ja ressursi sÀÀstus â Pingora pĂ”hine lahendus ei vaja Lua kasutamist, seetĂ”ttu tarbib see sama liikluse töötlemisel CPU-d 70% ja mĂ€lu 67% vĂ”rra vĂ€hem.
Pikka aega rahuldas liikluse proksitamise sĂŒsteem, mis töötas kasutajate ja lĂ”ppsihtkohtade vahel, serveritega NGINX ja Lua skriptide pĂ”hjal Cloudflare'i vajadusi, kuid vĂ”rgustiku kasvamise ja selle keerukuse suurenemisega osutus universaalne lahendus ebapiisav nii jĂ”udluse kui ka laiendatavuse ja uute klientide vĂ”imaluste tĂ€itmise seisukohalt. Eristi tĂ”usid probleemid funktsionaalsuse lisamisel, mis ĂŒletas lihtsa vĂ€rava ja koormuse tasakaalu lahenduse. NĂ€iteks tekkis vajadus taaskĂ€ivitada pĂ€ring teisele serverile, serverilt varustades seda erineva HTTP-pealkirjade kogumiga.
Pingoras on rakendatud mitme lĂ”ime mudel, mis eristab seda protsesside (töötlejad) baasil olevast arhitektuurist, ning on nĂ€idanud Cloudflare'i kasutusstsenaariumites (kĂ”rge liikluse kontsentratsioon erinevatelt saitidelt suure statistilise nihkega) tĂ”husamat ressursside jaotust CPU tuumade vahel. Eriti paljude tasakaalustamata pĂ€ringute seondamine NGINX protsessidesse viis tasakaalustamata koormuseni CPU tuumadel, mistĂ”ttu ressursimahukad pĂ€ringud ja blokeeriv sisend-vĂ€ljund aeglustasid teiste pĂ€ringute töötlemist. Lisaks ei vĂ”imaldanud ĂŒhenduste rĂŒhmade seondamine töötlusprotsessidega olemasolevaid ĂŒhendusi uuesti kasutada, mis vĂ€hendas töö efektiivsust, kui töötlejaid oli palju.
NGINX:

Pingora:

Pingora rakendamine on vĂ”imaldanud vĂ€hendada uute ĂŒhenduste loomise operatsioonide arvu 160 korda ja suurendada taaskasutatavate pĂ€ringute osakaalu 87,1% -lt 99,92% -ni. Lisaks korduvate ĂŒhenduste vĂ€henemisele ja CPU tuumade tĂ”husama kasutamisele aitas uue proksi jĂ”udluse tĂ”usule mĂ€rgatavalt kaasa ka nginx'iga kasutatavate aeglaste Lua keele töötlejate mahajĂ€tmine.
Rust keel on valitud tĂ€nu sellele, et see vĂ”imaldab saavutada kĂ”rget jĂ”udlust koos mĂ€lu turvalise kĂ€itlemise vahenditega. Mainitakse, et vaatamata Cloudflare'i inseneride kĂ”rgele kvalifikatsioonile ja C keeles kirjutatud koodi ĂŒlevaatusele ei ole suudetud vĂ€ltida vigu, mis pĂ”hjustavad mĂ€lu probleeme (nĂ€iteks HTML parsi vulneraablus). Uue koodi osas rÀÀgitakse Pingora tĂ”rgete analĂŒĂŒsist, mis osutus mitte rakenduse probleemiks, vaid Linuxi tuuma ja riistvarade tĂ”rgete vigadeks.
Lisaks on mÀrkimisvÀÀrne Linus Torvalds'i kommentaar, mis kÔlas praegu toimuval Open-Source Summit Europe konverentsil, seoses Rust keele toe lisamisega Linuxi tuumasse. 6.0 tuuma patƥid, mis kÀsitlevad seadme draiverite arendamist Rust'is, ei ole veel lisatud, kuid Linuse sÔnul vÔetakse need tÔenÀoliselt vastu 6.1 tuumas, ta ei plaani integratsiooniga viivitada. Rust'i toe lisamise motivatsiooni, peale positiivse mÔju turvalisusele, nimetab Linus ka vÔimaluseks tÔsta uute osalejate huvi tuuma arendamise vastu, mis on aktuaalne vanadele meistritele aeglaselt vananedes.
Allikas: opennet.ru
