Cloudflare qaleb minn NGINX għall-prokura tiegħu stess Pinora, miktuba f'Rut

Cloudflare ħabbar it-tranżizzjoni tan-netwerk tal-kunsinna tal-kontenut tiegħu biex juża l-proxy Pinora, miktub bil-lingwa Rust. Il-prokura l-ġdida tissostitwixxi l-konfigurazzjoni bbażata fuq is-server NGINX bi skripts Lua, u tipproċessa aktar minn triljun talba kuljum. Huwa nnutat li t-tranżizzjoni għal prokura speċjalizzata ppermettiet mhux biss li timplimenta karatteristiċi ġodda u żżid is-sigurtà minħabba tħaddim sikur tal-memorja, iżda wasslet ukoll għal żieda sinifikanti fil-prestazzjoni u l-iffrankar tar-riżorsi - is-soluzzjoni bbażata fuq Pingora ma teħtieġx l-użu. tal-Lua, u għalhekk tikkonsma 70% inqas riżorsi CPU u 67% inqas memorja waqt li tipproċessa l-istess ammont ta 'traffiku.

Għal żmien twil, sistema għall-proxying tat-traffiku bejn l-utenti u s-servers finali bbażata fuq skripts NGINX u Lua ssodisfat il-ħtiġijiet ta 'Cloudflare, iżda hekk kif in-netwerk kiber u l-kumplessità tiegħu żdiedet, soluzzjoni universali rriżultat insuffiċjenti, kemm f'termini ta' prestazzjoni u minħabba limitazzjonijiet fl-estensibbiltà u l-implimentazzjoni ta 'opportunitajiet ġodda għall-klijenti. B'mod partikolari, kien hemm sfidi fiż-żieda tal-funzjonalità lil hinn minn sempliċi gateway u load balancer. Pereżempju, sar meħtieġ, jekk is-server jonqos milli jipproċessa talba, li terġa 'tibgħat it-talba lil server ieħor, billi tipprovdiha b'sett differenti ta' headers HTTP.

Minflok arkitettura li tissepara t-talbiet fi proċessi separati tal-ħaddiema, Pingora juża mudell multi-threaded, li f'każijiet ta 'użu ta' Cloudflare (konċentrazzjoni għolja ta 'traffiku minn siti differenti b'ċaqliq statistiku kbir) wera distribuzzjoni aktar effiċjenti tar-riżorsi bejn il-qlub tas-CPU. B'mod partikolari, l-irbit ta 'nginx ta' talbiet mhux ibbilanċjati ma 'proċessi rriżulta f'tagħbija żbilanċjata fuq il-qlub tas-CPU, li jirriżulta f'talbiet intensivi fir-riżorsi u l-imblukkar tal-I/O li jnaqqas l-ipproċessar ta' talbiet oħra. Barra minn hekk, l-irbit tal-pool ta' konnessjoni mal-proċessi ta' handler ma ppermettiex l-użu mill-ġdid ta' konnessjonijiet diġà stabbiliti minn proċessi oħra ta' handler, li jnaqqas l-effiċjenza meta jkun hemm numru kbir ta' proċessi handler.

NGINX:

Cloudflare qaleb minn NGINX għall-prokura tiegħu stess Pinora, miktuba f'Rut

Pingora:

Cloudflare qaleb minn NGINX għall-prokura tiegħu stess Pinora, miktuba f'Rut

L-implimentazzjoni ta 'Pingora għamlitha possibbli li jitnaqqas in-numru ta' installazzjonijiet ta 'konnessjonijiet ġodda b'160 darba u jiżdied is-sehem ta' mistoqsijiet użati mill-ġdid minn 87.1% għal 99.92%. Minbarra t-tnaqqis tal-konnessjonijiet mill-ġdid u l-użu aktar effiċjenti tal-qalba tas-CPU, it-titjib tal-prestazzjoni tal-prokura l-ġdida kien prinċipalment minħabba t-tneħħija ta 'handlers Lua bil-mod użati ma' nginx.

Il-lingwa Rust intgħażlet biex tikseb prestazzjoni għolja flimkien mad-disponibbiltà ta 'għodod biex jiżguraw tħaddim sikur bil-memorja. Huwa msemmi li minkejja l-inġiniera kwalifikati ħafna ta 'Cloudflare u jirrevedu l-kodiċi miktub fil-lingwa C, ma kienx possibbli li jiġu evitati żbalji li jwasslu għal problemi ta' memorja (per eżempju, vulnerabbiltà fl-parser HTML). Fir-rigward tal-kodiċi l-ġdid, titkellem dwar każijiet ta 'analiżi ta' fallimenti f'Pingora, li rriżultaw li mhux ikkawżati minn problemi fl-applikazzjoni, iżda minn żball fil-kernel tal-Linux u fallimenti tal-hardware.

Barra minn hekk, nistgħu ninnotaw il-kummentarju ta' Linus Torvalds, espress fil-konferenza Open-Source Summit Europe li qed issir f'dawn il-jiem, dwar l-inklużjoni ta' appoġġ għal-lingwa Rust fil-kernel tal-Linux. Irqajja għall-iżvilupp ta 'sewwieqa ta' apparat fil-lingwa Rust ma kinux inklużi fil-kernel 6.0, iżda skond Linus, x'aktarx se jiġu aċċettati fil-kernel 6.1; mhux se jdewwem l-integrazzjoni. Bħala motivazzjoni għaż-żieda ta 'appoġġ għal Rust, minbarra l-impatt pożittiv fuq is-sigurtà, Linus isemmi wkoll l-opportunità li jżid l-interess fil-ħidma fuq il-qalba ta' parteċipanti ġodda, li huwa importanti fil-kuntest tat-tixjiħ tal-anzjani.

Sors: opennet.ru

Żid kumment