Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution

Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution

Sechaba se Ratehang, Sengoliloeng sena se tla shebana le ho boloka le ho khutlisa lifaele tse nyane tse limilione tse makholo. Mothating ona, tharollo ea ho qetela e hlahisoa bakeng sa litsamaiso tsa faele tse lumellanang le POSIX tse nang le ts'ehetso e felletseng ea liloko, ho kenyeletsoa liloko tsa lihlopha, le tse bonahalang li se na lithupa.

Kahoo ke ngotse seva ea ka ea tloaelo molemong ona.
Ha re ntse re kenya ts'ebetsong mosebetsi ona, re ile ra khona ho rarolla bothata bo ka sehloohong, 'me ka nako e ts'oanang re fumana polokelo sebakeng sa disk le RAM, eo tsamaiso ea rona ea li-file ea lihlopha e neng e e sebelisa ka mokhoa o se nang mohau. Haele hantle, palo e joalo ea lifaele e kotsi ho sistimi efe kapa efe e kopaneng ea lifaele.

Morero ke ona:

Ka mantsoe a bonolo, lifaele tse nyenyane li kenngoa ka seva, li bolokiloe ka ho toba ka har'a li-archive, hape li bala ho eona, 'me lifaele tse kholo li behiloe ka lehlakoreng le leng. Leano: 1 foldara = 1 polokelo, ka kakaretso re na le li-archives tse limilione tse 'maloa tse nang le lifaele tse nyane, eseng lifaele tse limilione tse makholo a' maloa. 'Me sena sohle se kenngoa ts'ebetsong ka botlalo, ntle le mangolo kapa ho kenya lifaele ka har'a li-archives tsa tar/zip.

Ke tla leka ho e boloka e khuts'oane, ke kopa tšoarelo esale pele haeba poso e le telele.

Tsohle li qalile ka taba ea hore ha kea ka ka fumana seva se loketseng lefats'eng se ka bolokang data e fumanoeng ka protocol ea HTTP ka kotloloho ho li-archives, ntle le mefokolo e teng ho li-archives tse tloaelehileng le polokelo ea ntho. 'Me lebaka la ho batla e ne e le sehlopha sa Tšimoloho ea li-server tsa 10 tse neng li se li hōlile ka tekanyo e kholo, moo lifaele tse nyenyane tsa 250,000,000 li neng li se li bokelletse,' me mokhoa oa ho hōla o ne o sa khaotse.

Bakeng sa ba sa rateng ho bala lingoliloeng, litokomane tse nyane li bonolo:

mona и mona.

Le docker ka nako e ts'oanang, joale ho na le khetho feela ka nginx kahare haeba ho ka etsahala:

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

E latelang:

Haeba ho na le lifaele tse ngata, lisebelisoa tsa bohlokoa lia hlokahala, 'me karolo e mpe ka ho fetisisa ke hore tse ling tsa tsona li senyehile. Ka mohlala, ha u sebelisa tsamaiso ea lifaele tse kopantsoeng (tabeng ena, MooseFS), faele, ho sa tsotellehe boholo ba eona ba sebele, e lula e nka bonyane 64 KB. Ke hore, bakeng sa lifaele tsa 3, 10 kapa 30 KB ka boholo, 64 KB e hlokahalang disk. Haeba ho na le kotara ea limilione tse likete tsa lifaele, re lahleheloa ke 2 ho ea ho 10 terabytes. Ho ke ke ha khoneha ho etsa lifaele tse ncha ka nako e sa lekanyetsoang, kaha MooseFS e na le moeli: ha ho na ho feta 1 bilione e nang le setšoantšo se le seng sa faele ka 'ngoe.

Ha palo ea lifaele e ntse e eketseha, RAM e ngata ea hlokahala bakeng sa metadata. Lits'oants'o tse kholo tsa metadata khafetsa le tsona li kenya letsoho ho taboheng le ho taboheng ha li-drive tsa SSD.

wZD seva. Re beha lintho ka tatellano ka li-disk.

Seva e ngotsoe ka Go. Pele ho tsohle, ke ne ke hloka ho fokotsa palo ea lifaele. Joang ho e etsa? Ka lebaka la ho boloka boitsebiso, empa tabeng ena ntle le khatello, kaha lifaele tsa ka ke litšoantšo tse hatelitsoeng feela. BoltDB e ile ea thusa, e neng e ntse e tlameha ho tlosoa mefokolong ea eona, sena se bontšoa litokomaneng.

Ka kakaretso, ho e-na le lifaele tsa kotara ea limilione tse likete, tabeng ea ka ho ne ho e-na le li-archives tsa Bolt tse limilione tse 10 tse setseng. Haeba ke ne ke e-na le monyetla oa ho fetola sebopeho sa faele sa hona joale sa li-directory, ho ne ho tla khoneha ho e fokotsa ho hoo e ka bang lifaele tse limilione tse 1.

Lifaele tsohle tse nyane li pakiloe ka har'a li-archives tsa Bolt, tse amohelang mabitso a li-directory tseo li leng ho tsona ka bo eona, 'me lifaele tsohle tse kholo li sala haufi le li-archives; ha ho na lebaka la ho li paka, sena se ka khoneha. Tse nyane li bolokiloe, tse kholo li sala li sa fetohe. Seva e sebetsa ka mokhoa o hlakileng ka bobeli.

Mehaho le likarolo tsa seva sa wZD.

Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution

Seva e sebetsa tlas'a tsamaiso ea Linux, BSD, Solaris le OSX. Ke lekile meralo ea AMD64 feela tlasa Linux, empa e lokela ho sebetsa bakeng sa ARM64, PPC64, MIPS64.

Lintlha tse ka sehloohong:

  • Multithreading;
  • Multiserver, ho fana ka mamello ea liphoso le ho leka-lekanya mojaro;
  • Ponaletso e kholo bakeng sa mosebelisi kapa moqapi;
  • Mekhoa e tšehetsoeng ea HTTP: GET, HEAD, PUT le DELETE;
  • Taolo ea boitšoaro ba ho bala le ho ngola ka lihlooho tsa bareki;
  • Tšehetso bakeng sa mabotho a bonolo a tloaelehileng;
  • Tšehetsa botšepehi ba data ea CRC ha u ngola/bala;
  • Li-buffers tsa semi-dynamic bakeng sa tšebeliso e fokolang ea memori le tokiso e nepahetseng ea ts'ebetso ea marang-rang;
  • Khatiso ea data e chechisetsoang morao;
  • Ho phaella moo, wZA ea li-archiver tse ngata e fanoa bakeng sa ho falla ha lifaele ntle le ho emisa tšebeletso.

Boiphihlelo ba 'Nete:

Ke ntse ke nts'etsapele le ho leka seva le li-archiver ho data e phelang nako e telele, joale e sebetsa ka katleho sehlopheng se kenyelletsang lifaele tse nyane tsa 250,000,000 (litšoantšo) tse fumanehang ho li-directory tsa 15,000,000 ho li-drive tse fapaneng tsa SATA. Sehlopha sa li-server tse 10 ke seva sa Origin se kentsoeng ka mor'a marang-rang a CDN. Ho e sebeletsa, ho sebelisoa li-server tse 2 tsa Nginx + 2 wZD li-server.

Bakeng sa ba nkang qeto ea ho sebelisa seva sena, e ka ba bohlale ho rera sebopeho sa li-directory, haeba ho hlokahala, pele ba sebelisoa. E-re ke etse pehelo hang-hang hore seva ha ea rereloa ho kenya ntho e 'ngoe le e' ngoe polokelong ea 1 Bolt.

Teko ea tšebetso:

Ha boholo ba faele e zip e nyane, ts'ebetso e potlakileng ea GET le PUT e etsoa ho eona. Ha re bapise nako eohle ea ho ngola moreki oa HTTP le lifaele tse tloaelehileng le li-archives tsa Bolt, hammoho le ho bala. Sebetsa ka lifaele tsa boholo ba 32 KB, 256 KB, 1024 KB, 4096 KB le 32768 KB e bapisoa.

Ha u sebetsa le li-archives tsa Bolt, botšepehi ba data ea faele e 'ngoe le e' ngoe boa hlahlojoa (CRC e sebelisoa), pele ho rekota le ka mor'a ho rekota, ho bala ka sefofaneng le ho bala hape ho etsahala, sena ka tlhaho se hlahisa ho lieha, empa ntho e ka sehloohong ke ts'ireletso ea data.

Ke entse liteko tsa ts'ebetso ho li-drive tsa SSD, kaha liteko tsa li-drive tsa SATA ha li bontše phapang e hlakileng.

Kerafo ho latela liphetho tsa liteko:

Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution
Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution

Joalokaha u bona, bakeng sa lifaele tse nyane, phapang pakeng tsa linako tsa ho bala le ho ngola lipakeng tsa lifaele tse bolokiloeng le tse sa bolokoang e nyane.

Re fumana setšoantšo se fapaneng ka ho felletseng ha re leka ho bala le ho ngola lifaele tsa 32 MB ka boholo:

Boloka ka nepo limilione tse makholo tsa lifaele tse nyane. Self-Hosted solution

Phapang ea nako pakeng tsa lifaele tsa ho bala e ka hare ho 5-25 ms. Ka ho rekota, lintho li mpefala, phapang e ka bang 150 ms. Empa ntlheng ena ha ho na tlhoko ea ho kenya lifaele tse kholo; ha ho na lebaka la ho etsa joalo; ba ka phela ka thoko ho li-archives.

* Ha e le hantle, u ka sebelisa seva sena bakeng sa mesebetsi e hlokang NoSQL.

Mekhoa ea mantlha ea ho sebetsa le seva sa wZD:

E kenya faele e tloaelehileng:

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

Ho kenya faele polokelong ea Bolt (haeba parameter ea seva fmaxsize, e khethollang boholo ba boholo ba faele bo ka kenyelletsoang polokelong, ha e fetisetsoe; haeba e fetisitsoe, faele e tla kenngoa joalo ka tloaelo pel'a polokelo):

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

Ho khoasolla faele (haeba ho na le lifaele tse nang le mabitso a tšoanang ho disk le polokelong ea polokelo, joale ha u khoasolla, ntho e tlang pele ho file e sa sebetsoang e fanoa pele ka ho sa feleng):

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

Ho khoasolla faele ho tsoa polokelong ea Bolt (e qobelloang):

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

Litlhaloso tsa mekhoa e meng li teng litokomaneng.

Litokomane tsa wZD
wZA Litokomane

Seva hajoale e ts'ehetsa protocol ea HTTP feela; ha e sebetse le HTTPS hajoale. Mokhoa oa POST le oona ha o tšehetsoe (ha o so ka o etsoa qeto ea hore na oa hlokahala kapa che).

Mang kapa mang ea cheka khoutu ea mohloli o tla fumana butterscotch moo, eseng bohle ba e ratang, empa ha kea ka ka tlama khoutu e kholo mesebetsing ea moralo oa marang-rang, ntle le mohlokomeli oa litšitiso, kahoo nakong e tlang ke khona ho e ngola ka potlako hoo e ka bang leha e le efe. enjene.

Seo u ka se Etsang:

  • Nts'etsopele ea mohatisi oa hau le morekisi + geo bakeng sa monyetla oa ho sebelisoa litsamaisong tse kholo ntle le litsamaiso tsa lifaele tsa cluster (Ntho e 'ngoe le e 'ngoe bakeng sa batho ba baholo)
  • Monyetla oa ho khutlisa metadata ka ho felletseng haeba e lahlehile ka botlalo (haeba o sebelisa morekisi)
  • Native protocol bakeng sa bokhoni ba ho sebelisa likhokahano tsa marang-rang tse phehellang le bakhanni bakeng sa lipuo tse fapaneng tsa mananeo
  • Menyetla e tsoetseng pele ea ho sebelisa karolo ea NoSQL
  • Likhatello tsa mefuta e fapaneng (gzip, zstd, snappy) bakeng sa lifaele kapa boleng ka har'a li-archives tsa Bolt le bakeng sa lifaele tse tloaelehileng.
  • Encryption ea mefuta e fapaneng ea lifaele kapa boleng ka har'a li-archives tsa Bolt le lifaele tse tloaelehileng
  • Phetoho e liehile ea video ea lehlakore la seva, ho kenyeletsoa le GPU

Ke na le ntho e 'ngoe le e' ngoe, ke tšepa hore seva sena se tla ba molemo ho motho e mong, lengolo la BSD-3, litokelo tse peli tsa litokelo, kaha haeba ho ne ho se na k'hamphani moo ke sebetsang teng, seva se ka be se sa ngoloa. Ke 'na feela moqapi. Ke tla leboha liphoso leha e le life le likopo tsa likarolo tseo u li fumanang.

Source: www.habr.com

Eketsa ka tlhaloso