Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay

Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay

Bulshada Qaaliga ah, Maqaalkani waxa uu diiradda saari doonaa kaydinta iyo soo saarida boqollaal milyan oo faylal yaryar ah. Marxaladdan, xalka kama dambaysta ah ayaa loo soo jeediyay nidaamyada faylalka ku habboon ee POSIX oo leh taageero buuxda oo loogu talagalay qufullada, oo ay ku jiraan qufullada cluster-ka, oo u muuqda xitaa aan lahayn biro.

Markaa waxaan u qoray server-kayga gaarka ah ujeedadan.
Intii aan ku guda jirnay hirgelinta hawshan, waxaan ku guuleysanay inaan xallino dhibaatada ugu weyn, isla markaana aan gaarno kaydinta booska diskka iyo RAM, kaas oo nidaamka feylasha kooxdayadu ay si naxariis darro ah u cunayaan. Dhab ahaantii, tiradan oo kale ah ee faylasha ayaa waxyeello u leh nidaam kasta oo faylal ah oo urursan.

Fikraddu waa tan:

Erayada fudud, faylal yaryar ayaa lagu shubaa server-ka, si toos ah ayaa loogu kaydiyaa kaydka, oo sidoo kale laga akhriyo, iyo faylalka waaweyn ayaa la barbar dhigayaa. Qorshaha: 1 folder = 1 archive, wadar ahaan waxa aanu haynaa dhawr milyan oo kayd ah oo ay ku jiraan faylal yaryar, mana aha dhawr boqol oo milyan. Oo waxaas oo dhan si buuxda ayaa loo fuliyaa, iyada oo aan wax qoraal ah ama la gelin faylasha tar/zip archives.

Waxaan isku dayi doonaa inaan soo koobo, horay ayaan uga cudur daaranayaa haddii qoraalku dheer yahay.

Waxaas oo dhami waxay ku bilowdeen xaqiiqda ah inaanan adduunka ka heli karin server ku habboon oo badbaadin kara xogta lagu helo hab-maamuuska HTTP si toos ah kaydinta, iyada oo aan la helin faa'iido darrooyinka ku jira kaydadka caadiga ah iyo kaydinta shayga. Sababta raadintana waxay ahayd kooxda asalka ah ee 10 server oo koray baaxad weyn, kuwaas oo 250,000,000 oo faylal yaryar ah ay hore u urursadeen, isbeddelka korriinkana ma joogsan doono.

Kuwa aan jeclayn inay akhriyaan maqaallada, dukumeenti yar ayaa u fudud:

halkan ΠΈ halkan.

Iyo docker isla waqti isku mid ah, hadda waxaa jira ikhtiyaar kaliya oo leh nginx gudaha haddii ay dhacdo:

docker run -d --restart=always -e host=localhost -e root=/var/storage 
-v /var/storage:/var/storage --name wzd -p 80:80 eltaline/wzd

Xiga:

Haddii ay jiraan faylal badan, waxaa loo baahan yahay ilo muhiim ah, ta ugu daranna waa in qaarkood la lunsado. Tusaale ahaan, marka la isticmaalayo nidaam faylal isku dhafan (kiiskan, MooseFS), faylka, iyadoon loo eegin cabbirkiisa dhabta ah, had iyo jeer wuxuu qaataa ugu yaraan 64 KB. Taasi waa, faylasha 3, 10 ama 30 KB ee cabbirkooda, 64 KB ayaa looga baahan yahay saxanka. Haddii ay jiraan rubuc bilyan faylal, waxaan luminay 2 ilaa 10 terabyte. Suurtagal ma noqon doonto in la abuuro faylal cusub si aan xad lahayn, maadaama MooseFS ay leedahay xaddid: aan ka badnayn 1 bilyan oo leh hal nuqul oo fayl kasta ah.

Marka tirada faylalku kordho, RAM badan ayaa loo baahan yahay xogta badan. Tuubooyin badan oo badan oo soo noqnoqda ayaa sidoo kale gacan ka geysta jeexjeexa iyo dillaaca darawallada SSD.

wZD server. Waxa aanu u habaysanay saxanka.

Seerfarku wuxuu ku qoran yahay Go. Ugu horreyntii, waxaan u baahday inaan yareeyo tirada faylasha. Sidee loo sameeyaa? Sababtoo ah kaydinta, laakiin kiiskan iyada oo aan la xakameynin, maaddaama faylalkaygu ay yihiin sawirro la isku duubay. BoltDB waxay u timid samatabbixinta, taas oo weli ahayd in laga saaro cilladaheeda, tani waxay ka muuqataa dukumentiyada.

Wadar ahaan, halkii ay ka ahaan lahaayeen rubuc bilyan faylal, xaaladdeyda waxaa ka haray 10 milyan oo kayd Bolt ah. Haddii aan fursad u helo inaan beddelo qaab dhismeedka faylka tusaha ee hadda, waxay suurtogal noqon lahayd in la yareeyo ilaa 1 milyan oo fayl.

Dhammaan faylalka yaryar waxaa lagu ururiyaa kaydka Bolt, kuwaas oo si toos ah u helaya magacyada hagayaasha ay ku yaalliin, dhammaan faylasha waaweyni waxay ku harsan yihiin meel u dhow kaydka; ma jirto wax macno ah in la xidho, tani waa wax la beddeli karo. Kuwo yaryar ayaa kaydsan, kuwa waaweyni waxba ma beddelaan. Seerfarku si hufan ayuu ula shaqeeyaa labadaba.

Dhismaha iyo sifooyinka server-ka wZD

Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay

Server-ku waxa uu ka hoos shaqeeyaa Linux, BSD, Solaris iyo OSX. Kaliya waxaan ku tijaabiyay naqshadaha AMD64 ee hoosta Linux, laakiin waa inay u shaqeyso ARM64, PPC64, MIPS64.

Tilmaamaha ugu muhiimsan:

  • Xargaha badan;
  • Multiserver, siinta dulqaadka qaladka iyo dheellitirka culeyska;
  • Daah-furnaanta ugu badan ee isticmaalaha ama horumariyaha;
  • Hababka HTTP ee la taageeray: HEL, MADAXA, KU dheji oo tirtir;
  • Xakamaynta hab-dhaqanka wax-akhriska iyo qoraalka iyada oo loo marayo madax-madaxeedka macmiilka;
  • Taageerada martigeliyayaasha farsamada ee dabacsan;
  • Taageer daacadnimada xogta CRC marka aad wax qorayso/akhrinayso;
  • Qaybaha-dhaqdhaqaaqa yar ee isticmaalka xusuusta ugu yar iyo hagaajinta waxqabadka shabakada ugu fiican;
  • Cufnaanta xogta dib loo dhigay;
  • Intaa waxaa dheer, wZA archiver-threaded multi-threaded waxaa la bixiyaa si loo haajiro faylasha iyada oo aan la joojin adeegga.

Waayo-aragnimada dhabta ah:

Waxaan horumarinayey oo tijaabiyey server-ka iyo kaydiyaha xogta tooska ah muddo dheer, hadda waxay si guul leh ugu shaqaynaysaa koox ay ku jiraan 250,000,000 oo faylal yaryar ah (sawiro) oo ku yaal 15,000,000 hagayaal ee SATA Drives gaar ah. Koox ka kooban 10 adeegayaal waa adeegaha asalka ah ee lagu rakibay gadaasha shabakada CDN. Si loogu adeego, 2 Nginx server + 2 wZD server ayaa la isticmaalaa.

Kuwa go'aansada inay adeegsadaan serfarkan, waxa caqli yeelan lahayd inay qorsheeyaan qaab-dhismeedka hagaha, haddii ay khusayso, ka hor intaan la isticmaalin. Aan isla markaaba boos sii qabsi sameeyo in server-ka aan loogu talagalin inuu wax walba ku xajiyo kaydka 1 Bolt.

Imtixaanka waxqabadka:

Inta yar ee uu le'eg yahay faylka la shubay, GET-ga iyo hawlgallada PUT ee degdega ah ayaa lagu sameeyaa. Aynu is barbar dhigno wadarta wakhtiga qoraalka macmiilka HTTP iyo faylalka caadiga ah iyo kaydadka Bolt, iyo sidoo kale akhriska. Ku shaqee faylalka cabbirkooda 32 KB, 256 KB, 1024 KB, 4096 KB iyo 32768 KB ayaa la barbardhigay.

Markaad la shaqeyneyso kaydka Bolt, xogta xogta ee fayl kasta waa la hubiyaa (CRC waa la isticmaalaa), ka hor inta aan la duubin iyo sidoo kale duubista ka dib, akhrinta duulimaadka iyo dib u xisaabinta ayaa dhacda, tani waxay si dabiici ah u soo bandhigaysaa dib u dhac, laakiin waxa ugu muhiimsan waa amniga xogta.

Waxaan sameeyay imtixaanada waxqabadka ee darawalada SSD, maadaama imtixaanada SATA Drive-yada aysan muujin farqi cad.

Garaafyada ku salaysan natiijooyinka tijaabada:

Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay
Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay

Sida aad arki karto, faylasha yaryar farqiga u dhexeeya akhrinta iyo qorista ee u dhexeeya faylalka kaydsan iyo kuwa aan la kaydin ayaa yar.

Waxaan helnaa sawir gebi ahaanba ka duwan marka la tijaabinayo akhrinta iyo qorista faylasha cabbirkoodu yahay 32 MB:

Si hufan u kaydi boqolaal milyan oo faylal yaryar ah. Xalka is-martigaliyay

Farqiga u dhexeeya akhrinta faylalka waa 5-25 ms. Marka la duubo, arrimuhu way ka sii daraan, faraqa u dhexeeya waa 150 ms. Laakiin kiiskan looma baahna in la geliyo faylal waaweyn; ma jirto wax macno ah in sidaas la sameeyo; waxay si gooni ah ugu noolaan karaan kaydadka.

* Farsamo ahaan, waxaad u isticmaali kartaa server-kan hawlaha u baahan NoSQL.

Hababka aasaasiga ah ee la shaqaynta wZD server:

Soo dejinaya faylka caadiga ah:

curl -X PUT --data-binary @test.jpg http://localhost/test/test.jpg

Soo raritaanka faylka kaydka Bolt (haddii cabbirka server-ka fmaxsize, kaas oo go'aaminaya cabbirka faylka ugu badan ee lagu dari karo kaydka, aan la dhaafin; haddii la dhaafo, faylka waxaa loo soo dhejin doonaa sida caadiga ah ee ku xigta kaydka):

curl -X PUT -H "Archive: 1" --data-binary @test.jpg http://localhost/test/test.jpg

Soo dejinta faylka (haddii ay jiraan faylal leh magacyo isku mid ah saxanka iyo kaydka, ka dib marka la soo dejinayo, mudnaanta waxaa la siiyaa si caadi ah faylka aan la kaydin):

curl -o test.jpg http://localhost/test/test.jpg

Soo dejinta faylka kaydka Bolt (lagu qasbay):

curl -o test.jpg -H "FromArchive: 1" http://localhost/test/test.jpg

Sharaxaada hababka kale ayaa ku jira dukumeentiyada.

Dukumentiyada wZD
Dukumentiyada wZA

Seerfarku hadda waxa uu taageeraa borotokoolka HTTP; weli lama shaqeeyo HTTPS. Habka POST sidoo kale lama taageero (wali lama go'aamin in loo baahan yahay iyo in kale).

Qof kasta oo qodaya koodhka isha wuxuu ka heli doonaa butterscotch halkaas, qof kastaa ma jecla, laakiin maan xidhin koodhka ugu muhiimsan ee hawlaha qaab dhismeedka webka, marka laga reebo maamulaha carqaladaynta, sidaas darteed mustaqbalka waxaan si dhakhso ah u qori karaa wax kasta. mishiinka.

La Sameeyo:

  • Horumarinta qaybiyahaaga iyo qaybiyahaaga + geo suurtagalnimada isticmaalka nidaamyada waaweyn iyada oo aan la helin nidaamyada faylka kooxda (Wax walba oo loogu talagalay dadka waaweyn)
  • Suurtagalnimada dib u soo kabashada xogta badan ee dhamaystiran haddii ay si buuxda u lunto (haddii la isticmaalayo qaybiyaha)
  • Hab-maamuuska asalka u ah awoodda isticmaalka isku xirka shabakadaha joogtada ah iyo darawallada luuqadaha barnaamijyada kala duwan
  • Fursadaha horumarsan ee isticmaalka qaybta NoSQL
  • Cadaadiska noocyada kala duwan (gzip, zstd, snappy) ee faylasha ama qiyamka gudaha kaydka Bolt iyo faylalka caadiga ah
  • Sirta noocyada kala duwan ee faylalka ama qiyamka gudaha kaydka Bolt iyo faylalka caadiga ah
  • Beddelka fiidiyoowga-dhinaca server-ka, oo ay ku jirto GPU-da

Waxaan haystaa wax walba, waxaan rajeynayaa in server-kani uu faa'iido u yeelan doono qof, shatiga BSD-3, xuquuqda daabacaadda ee labanlaab ah, maadaama aysan jirin shirkad aan ka shaqeeyo, server-ka lama qori lahayn. Waxaan ahay hormariyaha kaliya. Waxaan uga mahadcelin lahaa wax kasta oo kutaanno ah iyo codsiyo muuqaal ah oo aad hesho.

Source: www.habr.com

Add a comment