Cloudflare se prebacio na Pingoru, vlastiti proxy napisan u Rustu

Cloudflare migrira sa NGINX-a na Pingora

Pingora, je novi HTTP proxy kreiran od strane cloudflarea koristeći Rust

Cloudflare predstavljen nedavno ko migrira svoju mrežu za isporuku sadržaja da koristite proxy «pingora», koji se ističe po tome što je napisan u Rustu. The zamijenjen novi proxy Konfiguracija zasnovana na NGINX serveru sa Lua skriptama i obrađuje preko milijardu zahtjeva dnevno.

Napominje se da je prelazak na specijalizirani proxy «Pingora» omogućio ne samo implementaciju novih funkcija i povećanje sigurnosti zbog sigurnog rada s memorijom, već je doveo i do značajnog povećanja performansi i uštede resursa.

Rješenje zasnovano na Pingori ne zahtijeva korištenje Lua-e i koristi Cloudflare-ovu arhitekturu optimiziranu za opterećenje, trošeći 70% manje CPU resursa i 67% manje memorije dok obrađuje istu količinu prometa.

Dugo vremena, prometni proxy sistem između korisnika i krajnjih servera zasnovan na NGINX skriptama i Lua zadovoljio potrebe Cloudflarea, ali kako je mreža rasla i njena složenost se povećavala, univerzalno rješenje nije bilo dovoljno, kako u pogledu performansi tako i ograničenja u proširivosti i implementaciji novih mogućnosti za kupce.

Konkretno, bilo je poteškoća u dodavanju funkcionalnosti izvan jednostavnog gateway-a i balansera opterećenja. Na primjer, u slučaju da server nije mogao obraditi zahtjev, bilo je potrebno preusmjeriti zahtjev na drugi server, dajući mu drugačiji skup HTTP zaglavlja.

Umjesto arhitekture sa zahtjevima podijeljenim u zasebne radne procese (radnici), Pingora koristi model sa više niti, koji je u scenarijima upotrebe Cloudflarea (visoka koncentracija saobraćaja sa različitih lokacija sa velikim statističkim pomakom) pokazao efikasniju distribuciju resursa između CPU jezgara.

Konkretno, vezivanje neuravnoteženih zahtjeva za procese u nginx-u dovelo je do neuravnoteženog opterećenja CPU jezgara, zbog čega su zahtjevi sa intenzivnim resursima i I/O blokiranje usporavali obradu drugih zahtjeva.

Također, vezivanje spremišta veza za procese kontrolera nije omogućilo ponovno korištenje već uspostavljenih veza iz drugih procesa kontrolera, što smanjuje efikasnost kada postoji veliki broj procesa kontrolera.

Uvođenje Pingore omogućilo je smanjenje broja operacija za 160 puta uspostavljanje novih veza i povećati udio ponovno korištenih zahtjeva sa 87,1% na 99,92%. Pored smanjenog ponovnog povezivanja i efikasnijeg korišćenja CPU jezgara, poboljšanje performansi novog proxy servera je uglavnom posledica uklanjanja sporih Lua drajvera koji se koriste sa nginxom.

Rust jezik je odabran jer omogućava visoke performanse u kombinaciji sa dostupnošću memorijskih alata. Spominje se da uprkos visoko kvalifikovanim Cloudflare inženjerima i pregledu koda, programi napisani u jeziku C nisu mogli da izbegnu greške koje dovode do problema sa memorijom (na primer, ranjivost u HTML parseru).

Što se tiče novog koda, razgovarali smo o slučajevima analize pada u Pingori, za koje se pokazalo da nisu uzrokovani problemima u aplikaciji, već greškom u Linux kernelu i kvarovima hardvera.

Dodatno, može se primijetiti da je Linus Torvalds komentirao uključivanje podrške za Rust jezik u Linux kernel, izraženo na Open-Source Summit Europe konferenciji koja se održava ovih dana. Kernel 6.0 nije uključivao zakrpe za razvoj drajvera uređaja na Rust jeziku, ali prema Linusu, oni će vjerovatno biti prihvaćeni u kernelu 6.1, nećete iskoristiti prednosti integracije.

Kao razlog za dodavanje podrške za Rust, pored pozitivnog uticaja na bezbednost, Linus takođe koristi priliku da poveća interesovanje za rad na kernelu od strane novih učesnika, što je važno u kontekstu starijih veterana.

Konačno ako ste zainteresirani da saznate više o tome, detalje možete provjeriti u sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.