A Cloudflare átváltott az NGINX-ről a saját Rust nyelven írt Pingora proxyjára

A Cloudflare bejelentette, hogy a tartalomelosztó hálózatát egy Rust nyelven írt Pingora proxyra állította át. Az új proxy felváltotta az NGINX alapú Lua szkripteket, és napi több mint egy billió kérést kezel. Megjegyzik, hogy a speciális proxyra való áttérés nemcsak új lehetőségeket valósított meg és növelte a biztonságot a memória biztonságos kezelésével, hanem jelentős teljesítménynövekedést és erőforrás-megtakarítást is eredményezett – a Pingora alapú megoldás nem igényel Lua használatát, így 70%-kal kevesebb CPU-erőforrást és 67%-kal kevesebb memóriát fogyaszt ugyanannyi forgalom kezelésekor.

Hosszú ideig a felhasználók és a végpontok közötti forgalom proxizálására szolgáló rendszer, szerverek amely az NGINX és Lua szkriptek alapján készült, kielégítette a Cloudflare igényeit, de a hálózat növekedésével és összetettségének növekedésével az univerzális megoldás nem bizonyult elegendőnek, sem teljesítmény, sem a bővíthetőség és az új ügyfélfunkciók megvalósítása szempontjából. Különösen problémák merültek fel a funkcionalitás bővítésében, amely a egyszerű átjáró és terheléselosztó túlmutatott. Például szükségessé vált, hogy hiba esetén a kérdést újra átirányítsák szerverrel egy másik szerverre, más HTTP-fejlécekkel ellátva azt.

A Pingorában a kérdések külön folyamatokba (worker) való szétválasztásával szemben a több szálas modell került alkalmazásra, amely a Cloudflare használati forgatókönyveiben (nagy forgalom koncentráció különböző webhelyekről nagymértékű statisztikai eltolódással) hatékonyabb erőforrás-elosztást mutatott a CPU magok között. Különösen, a kiegyensúlyozatlan kérdések NGINX folyamatokhoz való kötése a CPU magokra egyenlőtlen terhelést okozott, ami miatt az erőforrás-igényes kérések és a blokkoló I/O lassították más kérések feldolgozását. Ezenkívül a kapcsolatok medencéjének folyamatokhoz való kötése nem tette lehetővé más folyamatok által már létrehozott kapcsolatok újrahasználatát, ami csökkentette a hatékonyságot nagy számú processzor esetén.

NGINX:

A Cloudflare átváltott az NGINX-ről a saját Rust nyelven írt Pingora proxyjára

Pingora:

A Cloudflare átváltott az NGINX-ről a saját Rust nyelven írt Pingora proxyjára

A Pingora bevezetése 160-szor csökkentette az új kapcsolatok telepítési műveleteinek számát, és a megismételhető lekérdezések arányát 87,1%-ról 99,92%-ra növelte. A lassú Lua-nyelvű feldolgozók nginx használatának megszüntetése alapvetően hozzájárult a teljesítmény növeléséhez az új proxy, valamint a kapcsolatok ismételt használatának csökkentésével és a CPU magok hatékonyabb kihasználásával együtt.

A Rust nyelvet választották, mivel lehetővé teszi a magas teljesítmény elérését a memória biztonságos kezelésére szolgáló eszközök jelenlétével kombinálva. Megemlítik, hogy a Cloudflare mérnökeinek magas szakértelme és a C nyelven írt kódok ellenőrzése ellenére nem sikerült elkerülni a memória problémákat okozó hibákat (például egy HTML elemző sebezhetőségét). Ami az új kódot illeti, a Pingora hibáival kapcsolatban említések történtek, amelyeket nem az alkalmazás problémái, hanem a Linux kernel hibái és hardverhibák okoztak.

Továbbá említhetjük Linus Torvalds a jelenlegi Open-Source Summit Europe konferencián elhangzott megjegyzését, amely a Rust nyelv támogatásának beépítésére vonatkozik a Linux kernelbe. A 6.0-ás kernelbe a Rust nyelven íródott eszközmeghajtó fejlesztéséhez szükséges javítások nem kerültek be, de Linus szerint valószínűleg a 6.1-es kernelbe elfogadják őket, mert nem akarja húzni az integrációt. Linus a biztonságra gyakorolt jótékony hatás mellett a Rust támogatásának hozzáadásához az új résztvevők érdeklődésének fokozását is megemlíti, ami aktuális a már régóta a területen dolgozó szakemberek elöregedése miatt.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster