Ma'ajiya - ajiyar fayil ɗin da aka raba

Ma'ajiya - ajiyar fayil ɗin da aka raba

Kafin in fara, dole ne in tafi hanyar haɗi zuwa labarin da ya gabatata yadda a fili yake ainihin abin da muke magana akai.

A cikin wannan labarin zan so in dubi Layer wanda ke da alhakin adana fayiloli, da kuma yadda kowa zai iya amfani da shi. Storacle ɗakin karatu ne mai zaman kansa, babu haɗin kai tsaye tare da kiɗa. Kuna iya tsara ajiyar kowane fayiloli.

A cikin labarin da ya gabata, na “juya ganga” kadan kadan ipfs, amma wannan ya faru daidai a yanayin matsalar da nake warwarewa. Gabaɗaya, ina tsammanin wannan aikin yana da kyau. Na fi son ikon ƙirƙirar cibiyoyin sadarwa daban-daban don ayyuka daban-daban. Wannan yana ba ku damar tsara tsarin da kyau kuma ku rage nauyi a kan nodes na kowane mutum da kuma cibiyar sadarwa gaba ɗaya. Ko da a cikin tsarin aikin ɗaya, idan ya cancanta, za ku iya raba hanyar sadarwa zuwa guda bisa ga wasu ma'auni, rage yawan nauyin.

Don haka Storacle yana amfani da tsarin yadawa don tsara hanyar sadarwa. Mabuɗin fasali:

  • Ana iya ƙara fayiloli zuwa ma'ajiyar ta kowace kumburi.
  • Ana adana fayiloli gaba ɗaya, ba cikin tubalan ba.
  • Kowane fayil yana da hash ɗin abun ciki na musamman don ƙarin aiki tare da shi.
  • Ana iya kwafin fayiloli don ƙarin dogaro
  • Adadin fayiloli akan kumburi ɗaya yana iyakance kawai ta tsarin fayil (akwai keɓancewa, ƙari akan wancan ƙasa)
  • Adadin fayiloli a cikin hanyar sadarwa yana iyakance ta hanyar iyawar da za a iya yadawa bisa ga adadin ingantattun nodes a cikin hanyar sadarwar, wanda a cikin sigar ta biyu za ta iya yin aiki tare da adadin nodes marasa iyaka (ƙari akan wannan a cikin wani labarin)

Misali mai sauƙi na yadda wannan gabaɗaya ke aiki daga shirin:

Sabar:

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);
  }
})();

Abokin ciniki:

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);
  }
})();

Ganin ciki

Babu wani abu mai ban sha'awa a ƙarƙashin kaho. Ana adana bayanai game da adadin fayiloli, jimlar girmansu da sauran maki a cikin bayanan ƙwaƙwalwar ajiya kuma ana sabunta su lokacin da aka share fayiloli da ƙarawa, don haka babu buƙatar samun dama ga tsarin fayil akai-akai. Banda shi ne kunna mai tara shara lokacin da kuke buƙatar zazzage fayiloli lokacin da aka kai takamaiman girman ma'aji, kuma kada ku hana ƙara sababbi. A wannan yanayin, dole ne ku ketare ajiyar ajiya, kuma yin aiki tare da babban adadin fayiloli (> ce miliyan) na iya haifar da manyan lodi. Kuma yana da kyau a adana ƴan fayiloli da gudanar da ƙarin nodes. Idan "cleaner" ya kasance naƙasasshe, to babu irin wannan matsala.

Ma'ajiyar fayil ɗin ta ƙunshi manyan fayiloli 256 da matakan gida guda 2. Ana adana fayiloli a manyan manyan fayiloli na mataki na biyu. Wato idan akwai miliyan 1. Za a sami kusan fayiloli 62500 a cikin kowane irin wannan babban fayil (1000000 / sqrt(256)).

Sunan babban fayil ɗin an ƙirƙira su ne daga hash ɗin fayil ɗin don ku sami damar shiga cikin sauri idan kun san hash ɗin.

An zaɓi wannan tsarin bisa babban adadin buƙatun ajiya daban-daban: goyan baya ga tsarin fayil mai rauni, inda ba a so a sami fayiloli da yawa a cikin babban fayil ɗaya, saurin ƙetare duk manyan fayiloli idan ya cancanta, da sauransu. Wani irin ma'anar zinariya.

caching

Lokacin ƙara fayiloli, kazalika lokacin karɓar su, ana rubuta hanyoyin haɗi zuwa fayiloli zuwa cache.
Godiya ga wannan, sau da yawa babu buƙatar ketare duk hanyar sadarwa don neman fayil. Wannan yana hanzarta karɓar hanyoyin haɗin gwiwa kuma yana rage nauyi akan hanyar sadarwa. Caching kuma yana faruwa ta hanyar taken http.

Isomorphy

An rubuta abokin ciniki a cikin javascript kuma yana da isomorphic, ana iya amfani dashi kai tsaye daga mai bincike. 
Kuna iya loda fayil ɗin https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js a matsayin rubutun da samun dama taga.ClientStoracle ko shigo da su ta tsarin gini, da sauransu.

Hanyoyin da aka jinkirta

Siffa mai ban sha'awa kuma ita ce "batun da aka jinkirta". Wannan hanyar haɗi ce zuwa fayil ɗin da za a iya samu tare tare, nan da yanzu, kuma za a ja fayil ɗin sama lokacin da aka riga an samo shi a cikin ma'ajiyar. Wannan ya dace sosai lokacin, alal misali, kuna buƙatar nuna wasu hotuna akan rukunin yanar gizon. Mun sanya hanyar haɗin da aka jinkirta a cikin src kuma shi ke nan. Kuna iya zuwa da lokuta da yawa.

API ɗin abokin ciniki

  • async Client.prototype.storeFile() - adana fayil ɗin
  • async Client.prototype.getFileLink() - samun hanyar haɗi kai tsaye zuwa fayil ɗin
  • async Client.prototype.getFileLinks() - samun jerin hanyoyin haɗin kai kai tsaye zuwa fayil daga duk nodes inda yake
  • async Client.prototype.getFileToBuffer() - shigar da fayil a cikin buffer
  • async Client.prototype.getFileToPath() - shigar da fayil a cikin tsarin fayil
  • async Client.prototype.getFileToBlob() - sami fayil ɗin a cikin blob (don sigar mai bincike)
  • async Client.prototype.removeFile() - share fayil
  • Client.prototype.createRequestedFileLink() - ƙirƙirar hanyar haɗin da aka jinkirta

Fitar da fayiloli zuwa wani uwar garken

Don canja wurin fayiloli zuwa wani kumburi, kuna iya:

  • Kawai kwafi duk babban fayil ɗin ajiya tare da saitunan. (wannan bazaiyi aiki a gaba ba)
  • Kwafi kawai babban fayil tare da fayiloli. Amma, a wannan yanayin, kuna buƙatar gudanar da aikin sau ɗaya node.normalizeFilesInfo()don sake ƙididdige duk bayanan da shigar da su cikin ma'ajin bayanai.
  • amfani aiki node.exportFiles()wanda zai fara kwafi fayiloli.

Saitunan kumburi na asali
Lokacin fara kumburin ajiya, zaku iya tantance duk saitunan da suka dace.
Zan bayyana mafi mahimmanci, sauran ana iya samun su akan Github.

  • ajiya.data Girman - girman babban fayil tare da fayiloli
  • ajiya.tempSize - Girman babban fayil na wucin gadi
  • ajiya.autoCleanSize - mafi ƙarancin girman ajiya wanda ke buƙatar riƙewa. Idan ka fayyace wannan siga, to da zarar sarari ya fara ƙarewa, za a share fayilolin da ba a yi amfani da su ba.
  • file.maxSize - matsakaicin girman fayil
  • file.min Girman - mafi ƙarancin girman fayil
  • file.preferredDuplicates - fifikon adadin kwafin fayil akan hanyar sadarwa
  • file.mimeWhitelist - nau'ikan fayil masu inganci
  • file.mimeBlacklist - nau'ikan fayil mara inganci
  • file.extWhitelist - m fayil kari
  • file.extBlacklist - kari na fayil mara inganci
  • file.linkCache - saitunan caching daban-daban na hanyar haɗi

Kusan duk sigogi masu alaƙa da girma ana iya shigar da su cikin cikakkiyar ƙima da dangi.

Yin aiki ta hanyar layin umarni
Ana iya amfani da ɗakin karatu ta hanyar layin umarni. Don yin wannan kuna buƙatar shigar da shi a duniya: npm i -g ajiya. Bayan wannan, zaku iya ƙaddamar da ayyukan da suka dace daga kundin aikin inda kumburi yake. Misali, Storacle -a storeFile -f ./file.txt -c ./config.jsdon ƙara fayil ɗin. Ana iya samun duk ayyuka a ciki https://github.com/ortexx/storacle/blob/master/bin/actions.js

Me yasa kuke buƙatar wannan?

  • Idan kana son ƙirƙirar wani nau'in aikin da aka rarraba a cikin abin da kuke shirin adanawa da aiki tare da fayiloli ta amfani da hanyoyi masu dacewa. Misali, aikin kiɗan da aka bayyana a cikin hanyar haɗin gwiwa a farkon labarin yana amfani da shi ajiya.
  • Idan kuna aiki akan wasu ayyukan da kuke buƙatar adana fayiloli a cikin hanyar rarrabawa. Kuna iya gina rufaffiyar hanyar sadarwar ku cikin sauƙi, daidaita nodes kuma ƙara sababbi idan an buƙata.
  • Idan kawai kuna buƙatar adana fayilolin gidan yanar gizon ku a wani wuri kuma yana da yawa a gare ku don rubuta komai da kanku. Wataƙila wannan ɗakin karatu ya fi dacewa da wasu a cikin yanayin ku.
  • Idan kuna da aikin da kuke aiki tare da fayiloli, amma kuna son yin duk magudi daga mai binciken. Kuna iya guje wa rubuta lambar uwar garken.

Abokan hulɗa na:

source: www.habr.com

Add a comment