Cloudflare hà cambiatu da NGINX à u so propiu proxy Pingora scrittu in Rust

Cloudflare hà annunziatu a transizione di a so rete di spedizione di cuntenutu per utilizà u proxy Pingora, scrittu in a lingua Rust. U novu proxy rimpiazza a cunfigurazione basata in u servitore NGINX cù script Lua, è processa più di un trilione di richieste per ghjornu. Hè nutatu chì a transizione à un proxy specializatu hà permessu micca solu di implementà e funzioni novi è di aumentà a sicurità per via di un funziunamentu sicuru di memoria, ma hà ancu purtatu à un aumentu significativu di u rendiment è di risparmiu di risorse - a suluzione basata in Pingora ùn hà micca bisognu di l'usu. di Lua, è dunque cunsuma 70% menu risorse CPU è 67% menu memoria mentre trasfurmendu a stessa quantità di trafficu.

Per un bellu pezzu, un sistema per u trafficu di proxy trà l'utilizatori è i servitori finali basatu nantu à i script NGINX è Lua hà sappiutu i bisogni di Cloudflare, ma cum'è a reta cresce è a so cumplessità aumenta, una suluzione universale hè stata insufficiente, sia in termini di prestazioni è per via di limitazioni in l'estensibilità è l'implementazione di novi opportunità per i clienti. In particulare, ci sò stati sfide in l'aghjunzione di funziunalità oltre un semplice gateway è un equilibratore di carica. Per esempiu, hè diventatu necessariu, se u servitore ùn riesce à processà una dumanda, per rinvià a dumanda à un altru servitore, furnisce cù un altru settore di headers HTTP.

Invece di una architettura chì separa e dumande in prucessi separati di u travagliu, Pingora usa un mudellu multi-threaded, chì in i casi d'usu di Cloudflare (alta cuncentrazione di trafficu da diversi siti cù un grande cambiamentu statisticu) dimustrava una distribuzione più efficaci di risorse trà core CPU. In particulare, u ligame di nginx di e dumande sbilanciate à i prucessi hà risultatu in una carica sbilanciata nantu à i nuclei di CPU, risultatu in richieste intensive di risorse è bluccà I / O rallentendu u processu di altre dumande. Inoltre, ubligatoriu di a piscina di cunnessione à i prucessi di u gestore ùn permettenu micca a reutilizazione di e cunnessione digià stabilitu da altri prucessi di gestore, chì riduce l'efficienza quandu ci hè un gran numaru di prucessi di gestore.

NGINX:

Cloudflare hà cambiatu da NGINX à u so propiu proxy Pingora scrittu in Rust

Pingora:

Cloudflare hà cambiatu da NGINX à u so propiu proxy Pingora scrittu in Rust

L'implementazione di Pingora hà permessu di riduce u numeru di installazioni di novi cunnessione da 160 volte è di aumentà a parte di e dumande riutilizate da 87.1% à 99.92%. In più di riduzzione di e cunnessione ripetute è l'usu più efficaci di i core CPU, a migliione di u rendimentu di u novu proxy hè stata principarmenti dovuta à a rimozione di lenti gestori di Lua utilizati cù nginx.

A lingua Rust hè stata scelta per ottene un rendimentu altu cumminatu cù a dispunibilità di arnesi per assicurà un funziunamentu sicuru cù memoria. Hè mintuatu chì, malgradu l'ingegneri altamente qualificati di Cloudflare è rivisendu u codice scrittu in a lingua C, ùn era micca pussibule di evità l'errori chì portanu à prublemi di memoria (per esempiu, una vulnerabilità in l'analisi HTML). In quantu à u novu codice, si parla di i casi di analisi di fallimenti in Pingora, chì ùn sò micca causati da i prublemi in l'applicazione, ma da un errore in u kernel Linux è i fallimenti hardware.

Inoltre, pudemu nutà u cummentariu di Linus Torvalds, espresso in a cunferenza Open-Source Summit Europe chì si svolge in questi ghjorni, in quantu à l'inclusione di supportu per a lingua Rust in u kernel Linux. Patchs per u sviluppu di i cunduttori di u dispositivu in a lingua Rust ùn sò micca stati inclusi in u kernel 6.0, ma sicondu Linus, seranu assai prubabilmente accettati in u kernel 6.1 ùn hà micca da ritardà l'integrazione. Cum'è una mutivazione per aghjunghje un supportu per Rust, in più di l'impattu pusitivu nantu à a sicurità, Linus cita ancu l'uppurtunità di aumentà l'interessu à travaglià nantu à u core di i novi participanti, chì hè impurtante in u cuntestu di l'anziane di i vechji.

Source: opennet.ru

Add a comment