Cloudflare kursen 100 TB memorie nga 1.1.1.1 duke ridizajnuar brendësinë e cache-it DNS
Cloudflare zvogëloi strukturat e të dhënave pas cache-it DNS të 1.1.1.1, duke kursyer rreth 100 TB RAM pa ngadalësuar kërkimet.
Në një postim teknik të publikuar më 27 gusht 2026, inxhinieri i Cloudflare, Sebastiaan Neuteboom, përshkroi se si kompania liroi rreth 100 terabajt memorie duke ribërë mënyrën se si rezolucioni publik DNS 1.1.1.1 ruan përgjigjet e ruajtura në cache. Ndryshimi ishte i padukshëm për përdoruesit, por është një shembull i qartë se si joefikasitetet e vogla në kod mund të rriten në kosto të mëdha kur shumëzohen në një rrjet global.
Për të kuptuar arritjen, ndihmon të dish se çfarë bën një rezolucion DNS. Sistemi i Emrave të Domenit, ose DNS, është librari telefonik i internetit: kur shkruani një emër faqeje, një rezolucion si 1.1.1.1 kërkon adresën numerike përkatëse dhe ia dërgon pajisjes suaj. Meqenëse kjo ndodh për miliarda pyetje çdo ditë, rezolucionet mbajnë një cache DNS, një ruajtje të përkohshme memorie me përgjigje të fundit, në mënyrë që të mos përsërisin kërkimin e plotë çdo herë. Kjo cache është një nga pjesët më të uritura për memorie të shërbimit, dhe mënyra se si është organizuar në RAM ndikon drejtpërdrejt në shpejtësi, kosto dhe besueshmëri.
Rezolucioni 1.1.1.1 i Cloudflare është shkruar në Rust, një gjuhë programimi e njohur për sigurinë dhe performancën. Çdo artikull i ruajtur përfaqësohet nga një palë strukturash: një çelës që identifikon kërkimin, dhe një vlerë e quajtur CacheEntry që ruan vetë përgjigjen. CacheEntry i treguar në postim përmban një vulë kohore, një kohë fillimi, një vlerë Time-to-Live (TTL), një numërues goditjesh, dhe tre lista të regjistrave DNS për seksionet e përgjigjes, autoritetit dhe shtesë, plus fusha për të dhënat e gabimeve. Secila prej këtyre listave është një Vec, vargu standard i rritshëm i Rust. Një Vec ruan tre gjëra: një tregues te të dhënat, gjatësinë aktuale të listës, dhe kapacitetin, që është hapësira totale e alokuar tashmë. Kapaciteti është shpesh më i madh se gjatësia sepse vargu rritet në blloqe, dhe ajo hapësirë shtesë, plus vetë fushat e treguesit dhe gjatësisë, i shton peshë çdo hyrjeje.
Ekipi kuptoi se disa lloje fushash mbanin më shumë peshë sesa e nevojshme pasi një hyrje ruhej. Për shembull, vulat kohore dhe metadatat e tjera mund të mbahen në forma më të vogla dhe më kompakte kur nuk kanë më nevojë për fleksibilitetin e llojeve origjinale. Duke kaluar në përfaqësime më të lehta dhe duke ristrukturuar listat, ata reduktuan ndjeshëm koston e memories për hyrje. Kjo u zbatua si për çelësin e cache-it ashtu edhe për vlerën e cache-it, dhe kursimet erdhën pa sakrifikuar informacionin e nevojshëm për të shërbyer përgjigjet në mënyrë korrekte.
Për të matur çdo optimizim, Cloudflare ndërtoi një benchmark që mbush cache-in me hyrje të gjeneruara rastësisht që përputhen me përzierjen e trafikut në prodhim: 56% regjistra A, regjistrat klasikë që lidhin emrat me adresat IPv4; 25% regjistra AAAA, që lidhin emrat me adresat IPv6; dhe 19% regjistra TXT, që mbajnë tekst arbitrar dhe përfaqësojnë të gjitha llojet e tjera të përgjigjeve me gjatësi të ndryshueshme në test. Çdo hyrje përmban midis një dhe katër regjistrash, dhe regjistrat TXT janë të rastësishëm midis 64 dhe 224 bajt, afër madhësisë mesatare të përgjigjes për atë kategori. Benchmark-u gjurmon përdorimin e memories përmes një alokuesi të personalizuar që mbështjell alokuesin e sistemit të Rust dhe regjistron numrin dhe madhësinë e çdo alokimi për hyrje cache. Në të njëjtën kohë, ai mat xhiron e futjes dhe vonesën e kërkimit në të gjithë rrjedhën e cache-it, duke siguruar që kursimet e memories nuk erdhën në kurriz të pyetjeve më të ngadalta.
Rezultati ishte një reduktim prej rreth 100 terabajt në të gjitha instancat e prodhimit. Ekipi gjithashtu verifikoi përmirësimin duke vëzhguar memorien rezidente, RAM-in aktual në përdorim, gjatë një vendosjeje graduale. Një gjurmë më e vogël për hyrje do të thotë se e njëjta memorie fizike mund të mbajë më shumë përgjigje të ruajtura, gjë që përmirëson kohën e përgjigjes për përdoruesit dhe mund të vonojë nevojën për të shtuar më shumë serverë. Edhe disa bajt të kursyer për hyrje bëhen të mëdha kur shumëzohen me miliarda emra të ruajtur dhe mijëra makina.
Për lexuesit që mbështeten në një shërbim DNS privat dhe të koduar si AEU DNS, kjo është lloji i inxhinierisë që ndihmon t'i mbajë kërkimet të shpejta, të besueshme dhe të pajtueshme me një qasje strikte pa regjistra, sepse një cache i dizajnuar mirë ruan vetëm atë që nevojitet dhe asgjë më shumë. Optimizimi gjithashtu tregon se puna më efektive e performancës shpesh ndodh jashtë syve, në kodin e nivelit të ulët që përdoruesit nuk e shohin kurrë, por e ndjejnë çdo herë që një faqe ngarkohet shpejt.
Termat e shpjeguar
- DNS
- Sistemi i Emrave të Domenit, librari telefonik i internetit që përkthen emra të njohur si example.com në adresat numerike që përdorin kompjuterët.
- DNS cache
- Një ruajtje e përkohshme memorie me përgjigje të fundit DNS që përdoret për të shpejtuar kërkimet e përsëritura dhe për të reduktuar trafikun e rrjetit.
- A record
- Një regjistër DNS që lidh një emër domeni me një adresë IPv4, formati klasik i adresës së internetit.
- AAAA record
- Një regjistër DNS që lidh një emër domeni me një adresë IPv6, formati më i ri dhe shumë më i madh i adresës.
- TXT record
- Një lloj regjistri DNS që mban tekst arbitrar, i përdorur zakonisht për kode verifikimi dhe cilësime sigurie.
- Time-to-Live (TTL)
- Një vlerë në një përgjigje DNS që i tregon zgjidhësve për sa sekonda duhet ta mbajnë përgjigjen në cache përpara se të kontrollojnë për një të re.
- Vec
- Në gjuhën e programimit Rust, një listë e rritshme që i ruan të dhënat në heap dhe e menaxhon kapacitetin automatikisht.
- RAM
- Memorie me qasje të rastësishme, hapësira e shpejtë e punës që përdor kompjuteri për të ekzekutuar programe; ky artikull flet për reduktimin e sasisë së saj që konsumon cache-i DNS.
Si të mbroheni
- Ndryshoni adresën e serverit DNS të ruterit tuaj në shtëpi në një zgjidhës të besuar që fokusohet në privatësi (shikoni te cilësimet e internetit ose WAN të ruterit) në mënyrë që ofruesi juaj i internetit të mos mund të regjistrojë çdo faqe
- Aktivizoni DNS të koduar, ndonjëherë i etiketuar 'DNS over HTTPS' ose 'DNS over TLS', në cilësimet e telefonit ose shfletuesit tuaj në mënyrë që emrat që kërkoni të mos mund të lexohen ose ndryshohen.
- Nëse drejtoni një faqe interneti, zgjidhni një ofrues DNS që shpjegon qartë praktikat e tij të cache-it dhe performancës, pasi cache-t e optimizuara reduktojnë ngarkesën në serverët tuaj dhe shpejtojnë vizitat.
- Rinisni ruterin ose pajisjen tuaj nëse faqet vazhdojnë të tregojnë adresa të vjetra pas një lëvizjeje domeni ose përmirësimi, sepse kjo pastron hyrjet e vjetruara nga cache-i juaj lokal DNS.
