Storacle - تخزين الملفات اللامركزي

صورة


قبل أن أبدأ ، يجب أن أترك رابطًا للمقالة السابقة ، بحيث يكون من الواضح ما هو المقصود بالضبط.


في هذه المقالة ، أرغب في تحليل الطبقة المسؤولة عن تخزين الملفات ، وكيف يمكن لأي شخص استخدامها. Storacle هي مكتبة مستقلة ، لا يوجد اتصال مباشر بالموسيقى. يمكنك تنظيم تخزين أي ملفات.


في المقالة السابقة ، قمت بتدوير البرميل قليلاً على ipfs ، لكن هذا حدث بالضبط في سياق المشكلة التي كنت أحلها . بشكل عام ، أعتقد أن هذا المشروع رائع. تعجبني الفرصة لإنشاء شبكات مختلفة لمهام مختلفة. هذا يسمح لك بتنظيم الهيكل بشكل أفضل وتقليل الحمل على العقد الفردية والشبكة ككل. من الممكن ، حتى في إطار مشروع واحد ، إذا لزم الأمر ، تقسيم الشبكة إلى أجزاء وفقًا لبعض المعايير ، مما يقلل من الحمل الكلي.


لذلك، يستخدم storacle و دهن آلية للتواصل. دلائل الميزات:


  • يمكن إضافة الملفات إلى المستودع من خلال أي عقدة.
  • يتم حفظ الملفات بكاملها ، وليس في كتل.
  • يحتوي كل ملف على تجزئة فريدة خاصة به على المحتويات لمزيد من العمل معه.
  • يمكن تكرار الملفات لزيادة الموثوقية.
  • عدد الملفات الموجودة على عقدة واحدة يقتصر فقط على نظام الملفات (هناك استثناء ، سيكون أقل حوله)
  • عدد الملفات الموجودة على الشبكة محدود بالقدرات القابلة للانتشار لعدد العقد المسموح بها على الشبكة ، والتي ستتمكن في الإصدار الثاني من العمل مع عدد لا نهائي من العقد (المزيد عن ذلك في مقال آخر)

مثال بسيط على كيفية عمل هذا بشكل عام من برنامج:


الخادم:


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

الزبون:


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

نظرة داخلية


. , in-memory , . , - , . , (> ) . . "" , .


256 2 . . 1. 62500 (1000000 / sqrt(256)).


, , .


: , , , ... .



, , .
. . http .



javascript , . 
https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js window.ClientStoracle ...



" ". , , , . , , , - . src . .


Api


  • async Client.prototype.storeFile()
  • async Client.prototype.getFileLink()
  • async Client.prototype.getFileLinks() — ,
  • async Client.prototype.getFileToBuffer()
  • async Client.prototype.getFileToPath()
  • async Client.prototype.getFileToBlob() — blob( )
  • async Client.prototype.removeFile()
  • Client.prototype.createRequestedFileLink()


, :


  • . ( )
  • . , , node.normalizeFilesInfo(), .
  • node.exportFiles(), .


, .
, .


  • storage.dataSize
  • storage.tempSize
  • storage.autoCleanSize — , . , .
  • file.maxSize
  • file.minSize
  • file.preferredDuplicates
  • file.mimeWhitelist
  • file.mimeBlacklist
  • file.extWhitelist
  • file.extBlacklist
  • file.linkCache

, .



. : npm i -g storacle. , . , storacle -a storeFile -f ./file.txt -c ./config.js, . https://github.com/ortexx/storacle/blob/master/bin/actions.js



  • - , . , , , storacle.
  • , . , , .
  • - . , .
  • , , . .

:



All Articles