Cloudflare skipti úr NGINX yfir í eigin Pingora umboð, skrifað í Rust

Cloudflare tilkynnti umskipti á efnisafhendingarneti sínu til að nota Pingora umboðið, skrifað á Rust tungumálinu. Nýi umboðsmaðurinn kemur í stað NGINX netþjónsbundinnar stillingar fyrir Lua forskriftir og vinnur úr meira en trilljón beiðnum á dag. Það er tekið fram að umskipti yfir í sérhæft umboð gerði ekki aðeins kleift að innleiða nýja eiginleika og auka öryggi vegna öruggrar notkunar á minni, heldur leiddi einnig til verulegrar aukningar á afköstum og auðlindasparnaði - Pingora-lausnin krefst ekki notkunar af Lua, og eyðir því 70% minna fjármagni CPU og 67% minna minni á meðan unnið er með sömu umferð.

Lengi vel fullnægði kerfi til að miðla umferð milli notenda og endaþjóna sem byggt var á NGINX og Lua forskriftum þörfum Cloudflare, en eftir því sem netið stækkaði og flókið það jókst reyndist alhliða lausn ófullnægjandi, bæði m.t.t. frammistöðu og vegna takmarkana á stækkanleika og innleiðingu nýrra tækifæra fyrir viðskiptavini. Einkum voru áskoranir í því að bæta við virkni umfram einfalda hlið og álagsjafnvægi. Til dæmis varð nauðsynlegt, ef þjónninn tekst ekki að vinna úr beiðni, að senda beiðnina aftur til annars netþjóns og útvega honum annað sett af HTTP hausum.

Í stað arkitektúrs sem aðskilur beiðnir í aðskilda vinnuferla, notar Pingora fjölþráða líkan, sem í Cloudflare notkunartilfellum (hár samþjöppun umferðar frá mismunandi síðum með mikilli tölfræðibreytingu) sýndi skilvirkari dreifingu fjármagns milli CPU kjarna. Sérstaklega leiddi binding nginx á ójafnvægi beiðna við ferla til ójafnvægis álags á CPU kjarna, sem leiddi til auðlindafrekra beiðna og hindrar I/O sem hægði á vinnslu annarra beiðna. Að auki leyfði tenging tengingarhópsins við meðhöndlunarferla ekki endurnotkun á þegar stofnuðum tengingum úr öðrum meðhöndlunarferlum, sem dregur úr skilvirkni þegar fjöldi meðhöndlunarferla er til staðar.

NGINX:

Cloudflare skipti úr NGINX yfir í eigin Pingora umboð, skrifað í Rust

Pingora:

Cloudflare skipti úr NGINX yfir í eigin Pingora umboð, skrifað í Rust

Innleiðing Pingora gerði kleift að fækka uppsetningum nýrra tenginga um 160 sinnum og auka hlut endurnýttra beiðna úr 87.1% í 99.92%. Auk þess að draga úr endurtengingum og skilvirkari notkun á örgjörvakjarna, var frammistöðubót nýja proxysins aðallega vegna þess að hægir Lua meðhöndlarar voru fjarlægðir með nginx.

Rust tungumálið var valið til að ná háum afköstum ásamt því að vera tiltækir á tækjum til að tryggja örugga notkun með minni. Það er nefnt að þrátt fyrir mjög hæfa verkfræðinga Cloudflare og að hafa farið yfir kóðann sem skrifaður er á C tungumálinu, var ekki hægt að forðast villur sem leiddu til minnisvandamála (til dæmis varnarleysi í HTML þáttaranum). Hvað nýja kóðann varðar, þá er talað um tilvik við greiningu á bilunum í Pingora, sem reyndust ekki stafa af vandamálum í forritinu, heldur af villu í Linux kjarna og vélbúnaðarbilunum.

Að auki getum við tekið eftir athugasemd Linus Torvalds, sem kom fram á Open-Source Summit Europe ráðstefnunni sem fer fram þessa dagana, varðandi innlimun á stuðningi við Rust tungumálið í Linux kjarnanum. Plástrar til að þróa tækjarekla á Rust tungumálinu voru ekki innifalin í 6.0 kjarnanum, en samkvæmt Linus verða þeir líklega samþykktir í 6.1 kjarnanum; hann ætlar ekki að tefja samþættingu. Sem hvatning til að bæta við stuðningi við Rust, auk jákvæðra áhrifa á öryggi, nefnir Linus einnig tækifæri til að auka áhuga á að vinna að kjarna nýrra þátttakenda, sem er mikilvægt í samhengi við öldrun gamalmenna.

Heimild: opennet.ru

Bæta við athugasemd