Cloudflare нь NGINX-ээс Rust дээр бичигдсэн өөрийн Pingora прокси руу шилжсэн

Cloudflare нь агуулга хүргэх сүлжээгээ Rust хэлээр бичсэн Pingora прокси ашиглахад шилжсэнээ зарлав. Шинэ прокси нь NGINX серверт суурилсан тохиргоог Lua скриптээр сольж, өдөрт нэг их наяд гаруй хүсэлтийг боловсруулдаг. Мэргэшсэн прокси руу шилжих нь санах ойн аюулгүй ажиллагааны ачаар шинэ боломжуудыг хэрэгжүүлэх, аюулгүй байдлыг нэмэгдүүлэх боломжийг олгосон төдийгүй гүйцэтгэл, нөөцийн хэмнэлтийг мэдэгдэхүйц нэмэгдүүлэхэд хүргэсэн гэж тэмдэглэжээ - Pingora-д суурилсан шийдэл нь ашиглахыг шаарддаггүй. Энэ нь Lua-г ашигладаг тул ижил хэмжээний траффик боловсруулах явцад CPU-ийн нөөцийг 70%, санах ойг 67% бага зарцуулдаг.

Удаан хугацааны туршид NGINX болон Lua скриптүүд дээр суурилсан хэрэглэгчид болон эцсийн серверүүдийн хоорондох траффикийг прокси хийх систем нь Cloudflare-ийн хэрэгцээг хангаж байсан боловч сүлжээ өсч, түүний нарийн төвөгтэй байдал нэмэгдэхийн хэрээр бүх нийтийн шийдэл нь хангалтгүй байв. гүйцэтгэл болон үйлчлүүлэгчдэд зориулсан шинэ боломжуудыг өргөтгөх, хэрэгжүүлэх хязгаарлалттай холбоотой. Ялангуяа энгийн гарц, ачаалал тэнцвэржүүлэгчээс гадна функцийг нэмэхэд бэрхшээлтэй байсан. Жишээлбэл, хэрэв сервер хүсэлтийг боловсруулж чадаагүй бол өөр сервер рүү өөр HTTP толгойгоор хангах хүсэлтийг дахин илгээх шаардлагатай болсон.

Хүсэлтүүдийг тусад нь ажилчдын процесс болгон хуваах архитектурын оронд Pingora нь олон урсгалтай загварыг ашигладаг бөгөөд энэ нь Cloudflare-ийн хэрэглээний тохиолдлуудад (статистикийн томоохон шилжилттэй өөр өөр сайтуудын траффикийн өндөр төвлөрөл) CPU-ийн цөмүүдийн хооронд нөөцийг илүү үр ашигтай хуваарилдаг болохыг харуулсан. Ялангуяа, nginx тэнцвэргүй хүсэлтийг процессуудтай холбосноор CPU-ийн цөмд тэнцвэргүй ачаалал үүсч, нөөц их шаарддаг хүсэлтүүд гарч, I/O-г хааснаар бусад хүсэлтийн боловсруулалтыг удаашруулсан. Нэмж дурдахад холболтын санг зохицуулагч процессуудтай холбох нь бусад зохицуулагч процессуудаас аль хэдийн тогтоосон холболтыг дахин ашиглахыг зөвшөөрдөггүй бөгөөд энэ нь олон тооны зохицуулагч процессууд байгаа үед үр ашгийг бууруулдаг.

NGINX:

Cloudflare нь NGINX-ээс Rust дээр бичигдсэн өөрийн Pingora прокси руу шилжсэн

Пингора:

Cloudflare нь NGINX-ээс Rust дээр бичигдсэн өөрийн Pingora прокси руу шилжсэн

Pingora-г хэрэгжүүлснээр шинэ холболтын суурилуулалтын тоог 160 дахин бууруулж, дахин ашигласан хүсэлтийн эзлэх хувийг 87.1% -иас 99.92% хүртэл нэмэгдүүлэх боломжтой болсон. Дахин холболтыг багасгаж, CPU-ийн цөмүүдийг илүү үр ашигтай ашиглахаас гадна шинэ проксигийн гүйцэтгэл сайжирсан нь nginx-д ашигладаг удаан Луа зохицуулагчийг устгасантай холбоотой юм.

Rust хэл нь өндөр гүйцэтгэлтэй байхын зэрэгцээ санах ойтой аюулгүй ажиллагааг хангах хэрэгслүүдийн хүртээмжтэй байхаар сонгосон. Cloudflare-ийн өндөр мэргэшсэн инженерүүд Си хэл дээр бичсэн кодыг хянаж үзсэн ч санах ойн асуудалд хүргэдэг алдаанаас зайлсхийх боломжгүй байсан (жишээлбэл, HTML задлагчийн сул тал). Шинэ кодын хувьд энэ нь Pingora дахь алдааг шинжлэх тохиолдлуудын тухай өгүүлдэг бөгөөд энэ нь програмын асуудлаас биш, харин Линуксийн цөмийн алдаа, техник хангамжийн алдаанаас үүдэлтэй юм.

Нэмж дурдахад, Линуксийн цөмд Rust хэлийг дэмжих талаар эдгээр өдрүүдэд болж буй Европын нээлттэй эх сурвалжийн дээд хэмжээний уулзалтын үеэр хэлсэн Линус Торвалдсын тайлбарыг тэмдэглэж болно. Rust хэл дээрх төхөөрөмжийн драйверуудыг хөгжүүлэх засваруудыг 6.0 цөмд оруулаагүй боловч Линусын хэлснээр тэдгээрийг 6.1 цөмд хүлээн авах магадлалтай тул интеграцийг хойшлуулахгүй. Rust-д дэмжлэг үзүүлэх сэдэл болгон, аюулгүй байдалд эерэг нөлөө үзүүлэхээс гадна Линус шинэ оролцогчдын үндсэн дээр ажиллах сонирхлыг нэмэгдүүлэх боломжийг дурдсан бөгөөд энэ нь хуучин цаг үеийн хүмүүсийн хөгшрөлтийн нөхцөлд чухал ач холбогдолтой юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх