Cloudflare se prebacio s NGINX-a na vlastiti Pingora proxy, napisan u Rustu

Cloudflare je najavio prijelaz svoje mreže za isporuku sadržaja na korištenje Pingora proxyja, napisanog u jeziku Rust. Novi proxy zamjenjuje konfiguraciju temeljenu na NGINX poslužitelju Lua skriptama i obrađuje više od trilijun zahtjeva dnevno. Napominje se da je prijelaz na specijalizirani proxy omogućio ne samo implementaciju novih značajki i povećanje sigurnosti zbog sigurnog rada memorije, već je doveo i do značajnog povećanja performansi i uštede resursa - rješenje temeljeno na Pingori ne zahtijeva korištenje Lua, te stoga troši 70% manje resursa CPU i 67% manje memorije dok obrađuje istu količinu prometa.

Dugo vremena, sustav za proxyiranje prometa između korisnika i krajnjih korisnika poslužitelji Na temelju NGINX i Lua skripti, potrebe Cloudflarea bile su zadovoljene, ali kako je mreža rasla i njezina složenost se povećavala, univerzalno rješenje pokazalo se nedovoljnim, kako u pogledu performansi, tako i zbog ograničenja u skalabilnosti i implementaciji novih klijentskih značajki. Posebno su se pojavile poteškoće u dodavanju funkcionalnosti izvan jednostavnog pristupnika i uravnoteživača opterećenja. Na primjer, pojavila se potreba za odgovorom na failover u slučaju obrade zahtjeva. poslužitelja ponovno pošaljite zahtjev drugom poslužitelju, pružajući mu drugačiji skup HTTP zaglavlja.

Umjesto arhitekture koja razdvaja zahtjeve u zasebne radne procese, Pingora koristi multi-threaded model, koji je u slučajevima korištenja Cloudflarea (visoka koncentracija prometa s različitih stranica s velikim statističkim pomakom) pokazao učinkovitiju raspodjelu resursa između CPU jezgri. Konkretno, nginxovo vezanje neuravnoteženih zahtjeva za procese rezultiralo je neuravnoteženim opterećenjem jezgri CPU-a, što je rezultiralo zahtjevima koji zahtijevaju velike resurse i blokiranjem I/O-a usporavajući obradu drugih zahtjeva. Osim toga, vezanje skupa veza na procese rukovatelja nije dopuštalo ponovnu upotrebu već uspostavljenih veza iz drugih procesa rukovatelja, što smanjuje učinkovitost kada postoji veliki broj procesa rukovatelja.

NGINX:

Cloudflare se prebacio s NGINX-a na vlastiti Pingora proxy, napisan u Rustu

Pingora:

Cloudflare se prebacio s NGINX-a na vlastiti Pingora proxy, napisan u Rustu

Implementacija Pingore omogućila je smanjenje broja instalacija novih priključaka za 160 puta i povećanje udjela ponovno korištenih zahtjeva sa 87.1% na 99.92%. Uz smanjenje ponovnih povezivanja i učinkovitiju upotrebu CPU jezgri, poboljšanje performansi novog proxyja uglavnom je posljedica uklanjanja sporih Lua rukovatelja koji se koriste s nginxom.

Rust je odabran zbog svoje sposobnosti postizanja visokih performansi uz istovremeno pružanje značajki sigurnosti memorije. Napominje se da unatoč visokim kvalifikacijama Cloudflareovih inženjera i opsežnom procesu pregleda koda, pogreške koje dovode do problema s memorijom (poput ranjivosti u HTML parseru) nisu mogle biti izbjegnute u C kodu. Što se tiče novog koda, spominje se da su analizirani rušenji u Pingori, za koje se pokazalo da ih nisu uzrokovali problemi s aplikacijom, već greška u kernelu. Linux i kvarovi hardvera.

Dodatno, vrijedi spomenuti komentar Linusa Torvaldsa na konferenciji Open-Source Summit Europe, koja je trenutno u tijeku, u vezi s uključivanjem podrške za Rust jezik u kernel. LinuxZakrpe za razvoj upravljačkih programa uređaja u Rustu nisu bile uključene u kernel 6.0, ali prema Linusu, vjerojatno će biti uključene u kernel 6.1, i ne planira odgoditi integraciju. Osim sigurnosnih prednosti, Linus također navodi priliku za povećanje interesa za razvoj kernela među novim suradnicima, što je važno s obzirom na starenje glavnog tima.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster