Storacle - malo osungira mafayilo

Storacle - malo osungira mafayilo

Ndisanayambe, ndiyenera kuchoka ulalo ku nkhani yapitakotero kuti ziwonekere zomwe tikukamba.

M'nkhaniyi ndikufuna kuyang'ana wosanjikiza omwe ali ndi udindo wosunga mafayilo, ndi momwe angagwiritsidwe ntchito ndi aliyense. Storacle ndi laibulale yokhayokha, palibe kugwirizana mwachindunji ndi nyimbo. Mutha kukonza kusungirako mafayilo aliwonse.

M'nkhani yapitayi, "ndinagudubuza mbiya" pang'ono ipfs, koma izi zidachitika ndendende m'nkhani ya vuto lomwe ndimathetsa. Ponseponse, ndikuganiza kuti polojekitiyi ndiyabwino. Ndimangokonda luso lopanga maukonde osiyanasiyana pantchito zosiyanasiyana. Izi zimakuthandizani kuti mukonzekere bwino kapangidwe kake ndikuchepetsa katundu pa node zapayekha komanso maukonde onse. Ngakhale mkati mwa dongosolo la polojekiti imodzi, ngati kuli kofunikira, mukhoza kugawa maukonde mzidutswa malinga ndi zofunikira zina, kuchepetsa katundu wonse.

Chifukwa chake storacle imagwiritsa ntchito makinawo zofalikira kwa kupanga netiweki. Zofunika Kwambiri:

  • Mafayilo amatha kuwonjezeredwa kunkhokwe kudzera mu node iliyonse.
  • Mafayilo amasungidwa kwathunthu, osati mu block.
  • Fayilo iliyonse ili ndi hashi yakeyake yomwe imagwira ntchito nayo.
  • Mafayilo amatha kubwerezedwa kuti akhale odalirika kwambiri
  • Chiwerengero cha mafayilo pa node imodzi chimangokhala ndi mafayilo amafayilo (pali chosiyana, zina zambiri pansipa)
  • Chiwerengero cha mafayilo pa intaneti chimachepa ndi kuthekera kofalikira malinga ndi kuchuluka kwa node zovomerezeka pamaneti, zomwe mu mtundu wachiwiri zitha kugwira ntchito ndi nambala yopanda malire (zambiri pa izi m'nkhani ina)

Chitsanzo chosavuta cha momwe izi zimagwirira ntchito kuchokera ku pulogalamuyi:

Seva:

const  Node = require('storacle').Node;

(async () => {
  try {
    const node = new Node({
      port: 4000,
      hostname: 'localhost'
    });
    await node.init();
  }
  catch(err) {
    console.error(err.stack);
    process.exit(1);
  }
})();

Makasitomala:

const  Client = require('storacle').Client;

(async () => {
  try {
    const client = new  Client({
      address: 'localhost:4000'
    });
    await client.init();
    const hash = await client.storeFile('./my-file');
    const link = await client.getFileLink(hash); 
    await client.removeFile(hash);
  }
  catch(err) {
    console.error(err.stack);
    process.exit(1);
  }
})();

Mukuwona

Palibe chokongola pansi pa hood. Zambiri zokhudzana ndi kuchuluka kwa mafayilo, kukula kwawo konse ndi mfundo zina zimasungidwa mumndandanda wazokumbukira ndipo zimasinthidwa mafayilo akachotsedwa ndikuwonjezeredwa, kotero palibe chifukwa chofikira pafupipafupi pamafayilo. Kupatulapo ndikupangitsa wotolera zinyalala pamene mukufunika kufalitsa mafayilo pamene kukula kwina kosungirako kukufika, ndipo osaletsa kuwonjezera zatsopano. Pankhaniyi, muyenera kudutsa zosungirako, ndipo kugwira ntchito ndi mafayilo ambiri (> kunena miliyoni) kumatha kubweretsa katundu wambiri. Ndipo ndi bwino kusunga mafayilo ochepa ndikuyendetsa ma node ambiri. Ngati "woyeretsa" ali wolumala, ndiye kuti palibe vuto.

Kusungirako mafayilo kumakhala ndi zikwatu 256 ndi magawo awiri a nesting. Mafayilo amasungidwa m'mafoda achiwiri. Ndiye kuti, ngati pali 2 miliyoni. Padzakhala mafayilo pafupifupi 1 mufoda iliyonse yotere (62500 / sqrt(1000000)).

Mayina a chikwatu amapangidwa kuchokera ku hashi ya fayilo kuti mutha kuyipeza mwachangu ngati mukudziwa hashi.

Kapangidwe kameneka kanasankhidwa kutengera kuchuluka kwa zofunikira zosungirako zosiyanasiyana: kuthandizira machitidwe ofooka a fayilo, pomwe sikofunikira kukhala ndi mafayilo ambiri mufoda imodzi, kuthamanga mwachangu mafoda onse ngati kuli kofunikira, ndi zina zambiri. Mtundu wina wa golide.

posungira

Powonjezera mafayilo, komanso powalandira, maulalo amafayilo amalembedwa ku cache.
Chifukwa cha izi, nthawi zambiri palibe chifukwa chodutsa pa intaneti posaka fayilo. Izi zimafulumizitsa kulandira maulalo ndikuchepetsa katundu pamaneti. Caching imapezekanso kudzera pamitu ya http.

Isomorphy

Makasitomala amalembedwa mu javascript ndipo ndi isomorphic, atha kugwiritsidwa ntchito mwachindunji kuchokera kwa osatsegula. 
Mutha kukweza fayilo https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js monga script ndi mwayi zenera.ClientStoracle kapena lowetsani kudzera munjira yomanga, ndi zina.

Maulalo ochedwetsedwa

Chinthu chochititsa chidwi ndi "deferred reference". Uwu ndi ulalo wa fayilo yomwe ingapezeke mwachisawawa, pano ndi pano, ndipo fayiloyo idzakokedwa ikapezeka kale posungira. Izi ndizothandiza kwambiri pamene, mwachitsanzo, muyenera kuwonetsa zithunzi zina patsamba. Tangoyika ulalo wochedwetsedwa mu src ndipo ndi momwemo. Mutha kubwera ndi milandu yambiri.

Client API

  • async Client.prototype.storeFile() - kusunga fayilo
  • async Client.prototype.getFileLink() - kupeza ulalo wolunjika ku fayilo
  • async Client.prototype.getFileLinks() - kupeza mndandanda wamalumikizidwe achindunji ku fayilo kuchokera kumalo onse komwe ilipo
  • async Client.prototype.getFileToBuffer() - lowetsani fayilo mu buffer
  • async Client.prototype.getFileToPath() - pezani fayilo mu fayilo yamafayilo
  • async Client.prototype.getFileToBlob() - pezani fayiloyo mu blob (ya mtundu wa msakatuli)
  • async Client.prototype.removeFile() - Chotsani fayilo
  • Client.prototype.createRequestedFileLink() - pangani ulalo wochedwetsedwa

Tumizani mafayilo ku seva ina

Kuti mutumize mafayilo ku node ina, mutha:

  • Ingotengerani chikwatu chonse chosungira pamodzi ndi zoikamo. (izi sizingagwire mtsogolo)
  • Koperani chikwatu chomwe chili ndi mafayilo. Koma, mu nkhani iyi, muyenera kuthamanga ntchito kamodzi node.normalizeFilesInfo()kuwerengeranso deta yonse ndikuyiyika mu database.
  • Gwiritsani ntchito node.exportFiles()yomwe imayamba kukopera mafayilo.

Zokonda za Basic node
Mukayamba node yosungira, mutha kufotokozera zokonda zonse zofunika.
Ndifotokoza zofunika kwambiri, zina zonse zitha kupezeka pa Github.

  • storage.dataSize - kukula kwa chikwatu chokhala ndi mafayilo
  • storage.tempSize - kukula kwafoda kwakanthawi
  • storage.autoCleanSize - kukula kochepa kosungirako komwe kumayenera kusungidwa. Ngati mutchula chizindikiro ichi, ndiye mwamsanga pamene malo ayamba kutha, mafayilo osagwiritsidwa ntchito kwambiri adzachotsedwa.
  • file.maxSize - kukula kwa fayilo
  • file.minSize - osachepera wapamwamba kukula
  • file.preferredDuplicates - kuchuluka komwe kumakonda kwamafayilo obwereza pamaneti
  • file.mimeWhitelist - mitundu yoyenera ya mafayilo
  • file.mimeBlacklist - mitundu ya mafayilo osavomerezeka
  • file.extWhitelist - zowonjezera mafayilo ovomerezeka
  • file.extBlacklist - mafayilo owonjezera osavomerezeka
  • file.linkCache - makonda osiyanasiyana osungira maulalo

Pafupifupi magawo onse okhudzana ndi miyeso amatha kulowetsedwa mumtheradi komanso pazogwirizana.

Kugwira ntchito kudzera pamzere wolamula
Laibulale ikhoza kugwiritsidwa ntchito kudzera pamzere wolamula. Kuti muchite izi muyenera kuyiyika padziko lonse lapansi: npm i -g yosungirako. Pambuyo pake, mutha kuyambitsa zofunikira kuchokera ku bukhu la polojekiti komwe node ili. Mwachitsanzo, storacle -a storeFile -f ./file.txt -c ./config.jskuti muwonjezere fayilo. Zochita zonse zitha kupezeka mu https://github.com/ortexx/storacle/blob/master/bin/actions.js

Chifukwa chiyani mungafunikire izi?

  • Ngati mukufuna kupanga mtundu wina wa polojekiti yomwe mukufuna kusunga ndikugwira ntchito ndi mafayilo pogwiritsa ntchito njira zosavuta. Mwachitsanzo, pulojekiti yanyimbo yomwe yafotokozedwa mu ulalo womwe uli koyambirira kwa nkhaniyi imagwiritsa ntchito nkhokwe.
  • Ngati mumagwira ntchito zina zilizonse zomwe muyenera kusunga mafayilo m'njira yogawidwa. Mutha kupanga netiweki yanu yotsekedwa mosavuta, sinthani ma node ndikuwonjezera atsopano pakafunika.
  • Ngati mumangofunika kusunga mafayilo anu a webusaiti kwinakwake ndipo ndizochuluka kuti mulembe zonse nokha. Mwina laibulale iyi ndi yoyenera kuposa ena mwa inu.
  • Ngati muli ndi pulojekiti yomwe mumagwira ntchito ndi mafayilo, koma mukufuna kuchita zosintha zonse kuchokera pasakatuli. Mutha kupewa kulemba nambala ya seva.

Magulu anga:

Source: www.habr.com

Gulani kuchititsa kodalirika kwamasamba okhala ndi chitetezo cha DDoS, ma seva a VPS VDS Gulani malo odalirika osungira mawebusayiti okhala ndi chitetezo cha DDoS, ma seva a VPS VDS | ProHoster