
قبل أن أبدأ ، يجب أن أترك رابطًا للمقالة السابقة ، بحيث يكون من الواضح ما هو المقصود بالضبط.
في هذه المقالة ، أرغب في تحليل الطبقة المسؤولة عن تخزين الملفات ، وكيف يمكن لأي شخص استخدامها. 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.
- , . , , .
- - . , .
- , , . .
: