Cloudflare ngalih ti NGINX ka proxy Pingora sorangan anu ditulis dina Rust

Cloudflare ngumumkeun transisi jaringan pangiriman eusi na ngagunakeun proxy Pingora, ditulis dina basa Rust. Proksi anyar ngagentos konfigurasi basis server NGINX sareng skrip Lua, sareng ngolah langkung ti samilyar pamundut per dinten. Perhatikeun yén transisi ka proxy husus diwenangkeun teu ukur pikeun nerapkeun fitur anyar jeung ningkatkeun kaamanan alatan operasi aman memori, tapi ogé ngarah ka kanaékan signifikan dina kinerja sarta tabungan sumberdaya - solusi basis Pingora teu merlukeun pamakéan. tina Lua, sarta ku kituna meakeun 70% kirang sumberdaya CPU na 67% memori kirang bari ngolah jumlah sarua lalulintas.

Pikeun lila, sistem pikeun proxying lalulintas antara pamaké sarta server tungtung dumasar kana NGINX jeung Aksara Lua nyugemakeun kaperluan Cloudflare, tapi salaku jaringan tumuwuh sarta pajeulitna ngaronjat, solusi universal tétéla teu cukup, duanana dina watesan kinerja sarta alatan watesan dina extensibility sarta palaksanaan kasempetan anyar pikeun klien. Khususna, aya tantangan dina nambahkeun fungsionalitas saluareun gateway basajan tur load balancer. Contona, janten diperlukeun, upami server gagal pikeun ngolah pamundut a, ngirim ulang pamundut ka server sejen, nyadiakeun eta kalawan set béda tina headers HTTP.

Gantina hiji arsitéktur nu misahkeun requests kana prosés worker misah, ngagunakeun Pingora model multi-threaded, nu dina kasus pamakéan Cloudflare (konsentrasi luhur lalulintas ti loka béda jeung shift statistik badag) némbongkeun distribusi leuwih efisien sumberdaya antara cores CPU. Khususna, beungkeutan nginx tina pamundut anu henteu saimbang kana prosés nyababkeun beban henteu saimbang dina inti CPU, nyababkeun paménta intensif sumber daya sareng ngahalangan I / O ngalambatkeun pamrosésan paménta anu sanés. Sajaba ti éta, mengikat kolam renang sambungan kana prosés Handler teu ngidinan pamakéan deui sambungan geus ngadegkeun tina prosés Handler séjén, nu ngurangan efisiensi lamun aya sajumlah badag prosés Handler.

NGINX:

Cloudflare ngalih ti NGINX ka proxy Pingora sorangan anu ditulis dina Rust

Pingora:

Cloudflare ngalih ti NGINX ka proxy Pingora sorangan anu ditulis dina Rust

Palaksanaan Pingora ngamungkinkeun pikeun ngirangan jumlah pamasangan sambungan anyar ku 160 kali sareng ningkatkeun pangsa patarosan anu dianggo deui tina 87.1% ka 99.92%. Salian ngurangan reconnections sarta pamakéan leuwih efisien cores CPU, pamutahiran kinerja proxy anyar utamana alatan ngaleupaskeun panangan Lua slow dipaké kalawan nginx.

Basa Rust dipilih pikeun ngahontal kinerja luhur digabungkeun jeung kasadiaan parabot pikeun mastikeun operasi aman jeung memori. Disebutkeun yén sanajan insinyur Cloudflare anu mumpuni sareng marios kodeu anu ditulis dina basa C, teu mungkin pikeun nyingkahan kasalahan anu nyababkeun masalah mémori (contona, kerentanan dina parser HTML). Sedengkeun pikeun kodeu anyar, éta ngobrol ngeunaan kasus analisa gagal dina Pingora, anu tétéla henteu disababkeun ku masalah dina aplikasi, tapi ku kasalahan dina kernel Linux Ubuntu jeung hardware gagal.

Salaku tambahan, urang tiasa ngémutan koméntar Linus Torvalds, disuarakeun dina konperénsi Open-Source Summit Europe anu lumangsung dinten-ayeuna, ngeunaan ngalebetkeun dukungan pikeun basa Rust dina kernel Linux. Patch pikeun ngembangkeun drivers alat dina basa Rust teu kaasup kana 6.0 kernel, tapi nurutkeun Linus, maranéhna bakal paling dipikaresep ditarima kana 6.1 kernel anjeunna moal reureuh integrasi. Salaku motivasi pikeun nambahkeun rojongan pikeun Rust, sajaba ti dampak positif kana kaamanan, Linus ogé CITES kasempetan pikeun ngaronjatkeun minat gawé dina inti pamilon anyar, nu penting dina konteks sepuh old-timers.

sumber: opennet.ru

Tambahkeun komentar