Cloudflare imebadilisha kutoka NGINX hadi seva mbadala ya Pingora, iliyoandikwa kwa Rust

Cloudflare ilitangaza mpito wa mtandao wake wa kuwasilisha maudhui ili kutumia proksi ya Pingora, iliyoandikwa kwa lugha ya Rust. Wakala mpya huchukua nafasi ya usanidi unaotegemea seva ya NGINX na hati za Lua, na huchakata zaidi ya maombi trilioni kwa siku. Ikumbukwe kwamba mpito kwa wakala maalum kuruhusiwa si tu kutekeleza vipengele vipya na kuongeza usalama kutokana na uendeshaji salama wa kumbukumbu, lakini pia imesababisha ongezeko kubwa la utendaji na uokoaji wa rasilimali - ufumbuzi wa msingi wa Pingora hauhitaji matumizi. ya Lua, na kwa hivyo hutumia 70% chini ya rasilimali za CPU na kumbukumbu 67% chini wakati wa kuchakata kiasi sawa cha trafiki.

Kwa muda mrefu, mfumo wa uwakilishi wa trafiki kati ya watumiaji na seva za mwisho kulingana na maandishi ya NGINX na Lua ulikidhi mahitaji ya Cloudflare, lakini kadiri mtandao ulivyokua na ugumu wake kuongezeka, suluhisho la ulimwengu wote liligeuka kuwa haitoshi, kwa suala la utendaji na kutokana na mapungufu katika upanuzi na utekelezaji wa fursa mpya kwa wateja. Hasa, kulikuwa na changamoto katika kuongeza utendaji zaidi ya lango rahisi na usawazishaji wa mzigo. Kwa mfano, ikawa muhimu, ikiwa seva itashindwa kushughulikia ombi, kutuma tena ombi kwa seva nyingine, ikitoa kwa seti tofauti ya vichwa vya HTTP.

Badala ya usanifu unaotenganisha maombi katika michakato tofauti ya mfanyakazi, Pingora hutumia mfano wa nyuzi nyingi, ambao katika matukio ya matumizi ya Cloudflare (mkusanyiko mkubwa wa trafiki kutoka kwa tovuti tofauti na mabadiliko makubwa ya takwimu) ilionyesha usambazaji bora zaidi wa rasilimali kati ya cores za CPU. Hasa, kufunga kwa nginx kwa maombi yasiyo na usawa kwa michakato kulisababisha mzigo usio na usawa kwenye cores za CPU, na kusababisha maombi ya rasilimali nyingi na kuzuia I/O kupunguza kasi ya uchakataji wa maombi mengine. Kwa kuongezea, kushurutisha kidimbwi cha uunganisho kwa michakato ya vidhibiti hakuruhusu utumiaji tena wa miunganisho iliyoanzishwa tayari kutoka kwa michakato mingine ya vidhibiti, ambayo hupunguza ufanisi wakati kuna idadi kubwa ya michakato ya vidhibiti.

NGINX:

Cloudflare imebadilisha kutoka NGINX hadi seva mbadala ya Pingora, iliyoandikwa kwa Rust

Pingora:

Cloudflare imebadilisha kutoka NGINX hadi seva mbadala ya Pingora, iliyoandikwa kwa Rust

Utekelezaji wa Pingora ulifanya iwezekanavyo kupunguza idadi ya mitambo ya viunganisho vipya kwa mara 160 na kuongeza sehemu ya maombi yaliyotumiwa tena kutoka 87.1% hadi 99.92%. Kando na kupunguza miunganisho upya na matumizi bora zaidi ya viini vya CPU, uboreshaji wa utendakazi wa proksi mpya ulitokana hasa na kuondolewa kwa vishikilizi vya polepole vya Lua vinavyotumiwa na nginx.

Lugha ya kutu ilichaguliwa ili kufikia utendaji wa juu pamoja na upatikanaji wa zana za kuhakikisha utendakazi salama na kumbukumbu. Imetajwa kuwa licha ya wahandisi waliohitimu sana wa Cloudflare na kukagua msimbo ulioandikwa kwa lugha ya C, haikuwezekana kuepusha hitilafu zinazosababisha matatizo ya kumbukumbu (kwa mfano, udhaifu katika kichanganuzi cha HTML). Kuhusu nambari mpya, inazungumza juu ya kesi za kuchambua kutofaulu huko Pingora, ambayo haikusababishwa na shida katika programu, lakini kwa makosa katika kernel ya Linux na kushindwa kwa vifaa.

Zaidi ya hayo, tunaweza kutambua maoni ya Linus Torvalds, yaliyotolewa kwenye Kongamano la Open-Source Summit Europe linalofanyika siku hizi, kuhusu kujumuishwa kwa usaidizi wa lugha ya Rust kwenye kernel ya Linux. Viraka vya kutengeneza viendeshi vya kifaa katika lugha ya Rust havikujumuishwa kwenye kernel 6.0, lakini kulingana na Linus, kuna uwezekano mkubwa wa kukubalika kwenye kernel 6.1; hatachelewesha kuunganishwa. Kama motisha ya kuongeza msaada kwa Rust, pamoja na athari chanya kwa usalama, Linus pia anataja fursa ya kuongeza hamu ya kufanya kazi juu ya msingi wa washiriki wapya, ambayo ni muhimu katika muktadha wa wazee wa zamani.

Chanzo: opennet.ru

Kuongeza maoni