Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted

Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted

Ry vondrom-piarahamonina malala, ity lahatsoratra ity dia hifantoka amin'ny fitahirizana sy fakana rakitra kely an-jatony tapitrisa. Amin'ity dingana ity, ny vahaolana farany dia atolotra ho an'ny rafitra rakitra mifanaraka amin'ny POSIX miaraka amin'ny fanohanana feno hidin-trano, ao anatin'izany ny hidin'ny cluster, ary toa tsy misy tehina.

Noho izany dia nanoratra ny mpizara manokana ho an'ity tanjona ity aho.
Nandritra ny fanatanterahana ity asa ity dia nahavita namaha ny olana lehibe izahay, ary tamin'izany fotoana izany dia nahatratra ny tahiry amin'ny habaka kapila sy ny RAM, izay nandany tsy nisy antra ny rafitra fichier cluster. Raha ny marina, ny rakitra maromaro toy izany dia manimba ny rafitra fichier cluster rehetra.

Ny hevitra dia izao:

Amin'ny teny tsotra, ny rakitra kely dia ampidirina amin'ny alΓ lan'ny mpizara, voatahiry mivantana ao amin'ny arisiva, ary mamaky azy io koa, ary apetraka mifanila. Rafitra: lahatahiry 1 = arisiva 1, amin'ny fitambarany dia manana arisiva an-tapitrisany maro misy rakitra kely isika, fa tsy rakitra an-jatony tapitrisa. Ary izany rehetra izany dia ampiharina tanteraka, tsy misy sora-baventy na fametrahana rakitra ao anaty tahiry tar/zip.

Hiezaka aho hafohy, ialako tsiny mialoha raha lava ny lahatsoratra.

Nanomboka tamin'ny zava-misy fa tsy nahita mpizara sahaza eto amin'izao tontolo izao aho izay afaka mitahiry angon-drakitra voaray amin'ny protocol HTTP mivantana ao anaty tahiry, tsy misy ny tsy fahampiana ao amin'ny tahiry mahazatra sy ny fitahirizana zavatra. Ary ny anton'ny fikarohana dia ny cluster Origin amin'ny mpizara 10 izay nitombo ho lehibe, izay efa nahangona rakitra kely 250,000,000, ary tsy hijanona ny fironana fitomboana.

Ho an'ireo izay tsy tia mamaky lahatsoratra dia mora kokoa ny antontan-taratasy kely:

eto ΠΈ eto.

Ary ny docker amin'ny fotoana iray ihany, ankehitriny dia misy safidy miaraka amin'ny nginx ao anatiny raha tsy izany:

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

Next:

Raha be dia be ny rakitra dia ilaina ny loharanon-karena lehibe, ary ny ratsy indrindra dia ny sasany amin'izy ireo dia very maina. Ohatra, rehefa mampiasa rafitra fichier mivondrona (amin'ity tranga ity, MooseFS), ny rakitra, na inona na inona tena habeny, dia mahatratra 64 KB farafahakeliny. Izany hoe, ho an'ny rakitra 3, 10 na 30 KB ny habeny, 64 KB no takiana amin'ny kapila. Raha misy rakitra ampahefatry ny arivo tapitrisa dia very 2 ka hatramin'ny 10 terabytes isika. Tsy azo atao ny mamorona rakitra vaovao mandritra ny fotoana tsy voafetra, satria ny MooseFS dia manana fetra: tsy mihoatra ny 1 lavitrisa miaraka amin'ny kopia iray isaky ny rakitra.

Rehefa mitombo ny isan'ny rakitra dia mila RAM be ny metadata. Ny fanariana metadata lehibe matetika dia manampy amin'ny fahatapahan'ny SSD.

mpizara wZD. Mametraka zavatra amin'ny kapila izahay.

Ny mpizara dia voasoratra ao amin'ny Go. Voalohany indrindra, nila nahena ny isan'ny rakitra aho. Ahoana no hanaovana izany? Noho ny arsiva, fa amin'ity tranga ity tsy misy famatrarana, satria ny rakitra dia sary compressed fotsiny. Tonga nanavotra ny BoltDB, izay mbola tsy maintsy nesorina tamin'ny lesoka, hita taratra amin'ny antontan-taratasy izany.

Amin'ny fitambarany, raha tokony ho ampahefatry ny arivo tapitrisa ny rakitra, raha ny ahy dia 10 tapitrisa Bolt sisa tavela. Raha nanana fahafahana hanova ny firafitry ny rakitra lahatahiry aho, dia azo atao ny mampihena izany ho rakitra 1 tapitrisa eo ho eo.

Ny rakitra kely rehetra dia fenoina ao amin'ny arisiva Bolt, izay mandray avy hatrany ny anaran'ny lahatahiry misy azy, ary ny rakitra lehibe rehetra dia mijanona eo akaikin'ny arisiva; tsy misy dikany ny famonosana azy ireo, azo zahana izany. Ny kely dia voatahiry, ny lehibe tsy ovaina. Ny mpizara dia miasa mangarahara miaraka amin'izy roa.

Architecture sy ny endri-javatra amin'ny mpizara wZD.

Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted

Ny mpizara dia miasa amin'ny Linux, BSD, Solaris ary OSX. Nisedra ny maritrano AMD64 ihany aho teo ambanin'ny Linux, fa tokony hiasa amin'ny ARM64, PPC64, MIPS64.

Endri-javatra lehibe:

  • Multithreading;
  • Multiserver, manome fandeferana diso sy fifandanjana entana;
  • Mangarahara faratampony ho an'ny mpampiasa na developer;
  • Fomba HTTP tohana: GET, HEAD, PUT ary DELETE;
  • Fanaraha-maso ny fihetsika mamaky teny sy manoratra amin'ny alΓ lan'ny lohatenin'ny mpanjifa;
  • Fanohanana ireo mpampiantrano virtoaly mora vidy;
  • Manohana ny fahamendrehan'ny angon-drakitra CRC rehefa manoratra / mamaky;
  • Ny buffers semi-dynamika ho an'ny fanjifana fahatsiarovana kely indrindra sy ny fandrindrana ny fahombiazan'ny tambajotra;
  • Fampitahana data nahemotra;
  • Ho fanampin'izay, apetraka ny archiver wZA misy kofehy maromaro mba hamindra rakitra nefa tsy manakana ny serivisy.

Tena traikefa:

Efa ela no namolavola sy nanandrana ny mpizara sy ny archiver amin'ny angon-drakitra mivantana aho, ankehitriny dia mandeha tsara amin'ny cluster izay misy rakitra kely 250,000,000 (sary) hita ao amin'ny lahatahiry 15,000,000 amin'ny kapila SATA misaraka. Ny cluster misy mpizara 10 dia mpizara Origin napetraka ao ambadiky ny tambajotra CDN. Mba hanompoana azy dia ampiasaina ny mpizara Nginx 2 + mpizara wZD 2.

Ho an'ireo izay manapa-kevitra ny hampiasa an'ity mpizara ity, dia fahendrena ny manomana ny firafitry ny lahatahiry, raha azo atao, alohan'ny hampiasana azy. MamelΓ  ahy hanao famandrihana avy hatrany fa ny mpizara dia tsy natao hametaka ny zava-drehetra ao anaty tahiry 1 Bolt.

Fitsapana fahombiazana:

Arakaraka ny kely kokoa ny haben'ny rakitra zip, ny GET sy ny PUT haingana kokoa no atao eo aminy. Andeha isika hampitaha ny fitambaran'ny fotoana hanoratana mpanjifa HTTP amin'ny rakitra mahazatra sy ny tahiry Bolt, ary koa ny famakiana. Ny asa miaraka amin'ny rakitra habe 32 Kio, 256 Kio, 1024 Kio, 4096 Kio ary 32768 Kio dia ampitahaina.

Rehefa miasa miaraka amin'ny arisiva Bolt, dia voamarina ny fahamarinan'ny angon-drakitra isaky ny rakitra (CRC no ampiasaina), alohan'ny handraketana ary aorian'ny firaketana an-tsoratra, ny famakiana sy ny famerenam-bidy amin'ny sidina dia mitranga, izany dia miteraka fahatarana, fa ny tena zava-dehibe dia ny fiarovana ny data.

Nanao fitsapana fampisehoana tamin'ny kapila SSD aho, satria tsy misy fahasamihafana mazava ny fitsapana amin'ny kapila SATA.

Saripika mifototra amin'ny valin'ny fitsapana:

Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted
Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted

Araka ny hitanao, ho an'ny rakitra kely dia kely ny fahasamihafana eo amin'ny fotoana famakiana sy fanoratana eo amin'ny rakitra voatahiry sy tsy voatahiry.

Mahazo sary hafa tanteraka isika rehefa manandrana mamaky sy manoratra rakitra mirefy 32 MB:

Mitahiry rakitra kely an-jatony tapitrisa amin'ny fomba mahomby. Vahaolana Self-Hosted

Ny fahasamihafan'ny fotoana eo amin'ny famakiana rakitra dia ao anatin'ny 5-25 ms. Miaraka amin'ny firaketana dia ratsy kokoa ny zava-drehetra, manodidina ny 150 ms ny fahasamihafana. Saingy amin'ity tranga ity dia tsy ilaina ny mampakatra rakitra lehibe; tsy misy dikany ny manao izany; afaka miaina misaraka amin'ny arsiva izy ireo.

* Ara-teknika, azonao ampiasaina ity mpizara ity amin'ny asa mitaky ny NoSQL.

Fomba fototra miasa amin'ny mpizara wZD:

Mametraka rakitra mahazatra:

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

Mampakatra rakitra ao amin'ny arisiva Bolt (raha toa ka tsy mihoatra ny fmaxsize ny parameter mpizara, izay mamaritra ny haben'ny rakitra ambony indrindra azo ampidirina ao amin'ny arisiva; raha mihoatra izany, dia halefa toy ny mahazatra eo akaikin'ny arisiva ilay rakitra):

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

Misintona rakitra (raha misy rakitra mitovy anarana ao amin'ny kapila sy ao amin'ny arisiva, rehefa misintona dia omena laharam-pahamehana ny rakitra tsy voatahiry):

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

Misintona rakitra avy amin'ny tahiry Bolt (voatery):

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

Ny famaritana ny fomba hafa dia ao amin'ny antontan-taratasy.

wZD Documentation
wZA Documentation

Ny mpizara amin'izao fotoana izao dia tsy manohana afa-tsy ny protocol HTTP; mbola tsy mandeha amin'ny HTTPS izany. Ny fomba POST ihany koa dia tsy tohanana (mbola tsy tapaka na ilaina na tsia).

Na iza na iza mikaroka ao amin'ny kaody loharano dia hahita butterscotch ao, tsy ny rehetra no tia azy, fa tsy namatotra ny kaody fototra amin'ny asan'ny tranokalan'ny tranonkala aho, afa-tsy amin'ny mpandrindra interrupt, ka amin'ny ho avy dia afaka mamerina manoratra azy haingana aho amin'ny saika rehetra. maotera.

Manao:

  • Fampandrosoana ny replicator anao manokana sy ny mpizara + geo ho an'ny fampiasana amin'ny rafitra lehibe tsy misy rafitra fichier cluster (Ny zava-drehetra ho an'ny olon-dehibe)
  • Mety hamerenana tanteraka ny metadata raha very tanteraka (raha mampiasa mpaninjara)
  • Protocol native ho an'ny fahafahana mampiasa fifandraisana maharitra sy mpamily ho an'ny fiteny fandaharana samihafa
  • Ny fahafahana mandroso amin'ny fampiasana ny singa NoSQL
  • Fampidirana karazana isan-karazany (gzip, zstd, snappy) ho an'ny rakitra na soatoavina ao anaty tahiry Bolt ary ho an'ny rakitra mahazatra
  • Encryption karazana isan-karazany ho an'ny rakitra na soatoavina ao anaty tahiry Bolt sy ho an'ny rakitra mahazatra
  • Nahemotra ny fiovam-peo amin'ny lafiny mpizara, anisan'izany ny GPU

Manana ny zava-drehetra aho, manantena aho fa hahasoa olona iray ity mpizara ity, fahazoan-dΓ lana BSD-3, zon'ny mpamorona indroa, satria raha tsy nisy orinasa niasako dia tsy ho nosoratana ny mpizara. Izaho irery no mpamorona. Ho feno fankasitrahana aho amin'ny bibikely rehetra sy ny fangatahana endri-javatra hitanao.

Source: www.habr.com

Add a comment