Cloudflare ngalih saka NGINX menyang proxy Pingora dhewe, ditulis ing Rust

Cloudflare ngumumake transisi jaringan pangiriman konten kanggo nggunakake proxy Pingora, ditulis ing basa Rust. Proxy anyar ngganti konfigurasi basis server NGINX karo skrip Lua, lan ngolah luwih saka triliun panjalukan saben dina. Kacathet yen transisi menyang proxy khusus diijini ora mung kanggo ngleksanakake fitur-fitur anyar lan nambah keamanan amarga operasi aman saka memori, nanging uga mimpin kanggo Tambah pinunjul ing kinerja lan tabungan sumber daya - solusi basis Pingora ora mbutuhake nggunakake. saka Lua, lan mulane nganggo 70% sumber daya kurang CPU lan 67% memori kurang nalika ngolah jumlah lalu lintas sing padha.

Kanggo wektu sing suwe, sistem proxying lalu lintas antarane pangguna lan server pungkasan adhedhasar skrip NGINX lan Lua nyukupi kabutuhan Cloudflare, nanging nalika jaringan saya tambah lan kerumitan tambah, solusi universal dadi ora cukup, ing babagan kinerja lan amarga watesan ing extensibility lan implementasine saka kesempatan anyar kanggo klien. Ing tartamtu, ana tantangan kanggo nambah fungsi ngluwihi gateway prasaja lan load balancer. Contone, dadi perlu, yen server gagal ngolah panjalukan, ngirim maneh panjalukan menyang server liyane, nyedhiyakake set header HTTP sing beda.

Tinimbang arsitektur sing misahake panjalukan menyang pangolahan buruh kapisah, Pingora nggunakake model multi-threaded, kang ing Cloudflare kasus nggunakake (konsentrasi dhuwur saka lalu lintas saka situs beda karo shift statistik gedhe) nuduhake distribusi luwih efisien sumber daya antarane inti CPU. Utamane, panjalukan nginx sing ora seimbang kanggo pangolahan nyebabake beban sing ora seimbang ing inti CPU, sing nyebabake panjaluk intensif sumber daya lan mblokir I / O nyepetake pangolahan panjaluk liyane. Kajaba iku, naleni blumbang sambungan kanggo pangolahan handler ora ngidini nggunakake maneh sambungan wis diadegaké saka pangolahan handler liyane, kang nyuda efficiency nalika ana akeh pangolahan handler.

NGINX:

Cloudflare ngalih saka NGINX menyang proxy Pingora dhewe, ditulis ing Rust

Pingora:

Cloudflare ngalih saka NGINX menyang proxy Pingora dhewe, ditulis ing Rust

Implementasi Pingora bisa nyuda jumlah instalasi sambungan anyar nganti 160 kaping lan nambah bagean pitakon sing digunakake maneh saka 87.1% dadi 99.92%. Saliyane nyuda sambungan maneh lan panggunaan inti CPU sing luwih efisien, perbaikan kinerja proxy anyar utamane amarga ngilangi panangan Lua alon sing digunakake karo nginx.

Basa Rust dipilih kanggo entuk kinerja dhuwur sing digabungake karo kasedhiyan alat kanggo njamin operasi sing aman karo memori. Disebutake yen sanajan insinyur Cloudflare sing mumpuni lan mriksa kode sing ditulis ing basa C, ora bisa nyegah kesalahan sing nyebabake masalah memori (contone, kerentanan ing parser HTML). Kanggo kode anyar, iki ngomong babagan kasus nganalisa kegagalan ing Pingora, sing ora disebabake masalah ing aplikasi kasebut, nanging amarga kesalahan ing kernel Linux lan kegagalan hardware.

Kajaba iku, kita bisa nyathet komentar Linus Torvalds, sing disuarakake ing konferensi Open-Source Summit Europe sing ditindakake dina iki, babagan kalebu dhukungan kanggo basa Rust ing kernel Linux. Patch kanggo ngembangake driver piranti ing basa Rust ora kalebu ing kernel 6.0, nanging miturut Linus, kemungkinan bakal ditampa ing kernel 6.1; dheweke ora bakal nundha integrasi. Minangka motivasi kanggo nambah support kanggo Rust, saliyane kanggo impact positif ing keamanan, Linus uga nyebutake kesempatan kanggo nambah kapentingan ing karya ing inti peserta anyar, kang penting ing konteks tuwa lawas-timer.

Source: opennet.ru

Add a comment