Spreadable-分散型ネットワークオプション

画像



なぜ分散化するのか?すべてがうまく機能しているように見えるため、多くの人はその意味を完全に理解していません。実際にはいくつかの理由がありますが、通常、アプローチの支持者は複雑な技術的な問題にのみ触れ、一般の人が本質を識別することが難しくなります。たとえば、私にとっては、すべてが非常に簡単です。



あなたがクールなプロジェクトを始めたとしましょう。開発に伴い、ますます多くのコンピューターリソースが必要になります。問題は、平均的な人のリソースが非常に限られていることです。しかし、他の人があなたのアイデアに興味を持っている場合、彼らは独自にサーバーを起動し、新しい機能を変更および追加し、一般的な機能を拡張することができます。さらに、コストは個人にとってそれほど重要ではありません。それらはすべてに分配され、それぞれの合計利益が要約されます。これにより、一般の人々は複雑なソリューションを作成できます。



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



- , . , . , — spreadable.



:



: master slave (M S). . . M S, , . M : 9 , M 3 . M S. S . , 9 3 M 3 S. , M .





:



  • -
  • — , .
  • , M, .
  • M S , .
  • , , , - .


. . 50ms. 3 * 50 = 150 ms .





, . , , , .



:



  • /
  • ,


:



  • .
  • , .


. 10000-100000 . , .



:



, . , . 2 . . , ... (M1, M2 ...). M3 M2, M2 -> M1,  M1 -> S.





. 4, M2, 6, M3, 12 .



, , . .





:



  • ,


:







. , , - . , . , :



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


. , — . , , , , , . , . , . ,



. . - , , , . , . - . , . , — .





, , - . , , ip , . ? — . - , , . approval. ip . .



, :



  • approversCount — , . , , - .
  • decisionLevel — . , 66.6%. .
  • period — . , 5 .


decisionLevel , . , . .



. , . , approversCount=3, decisionLevel=2, period=10m - . , 3 . , , - .





, , , , . (, ). , . 2 3 , , .





, , " " 2 , ( , ) , , - N .



, , , .



.





, . , , . . . , . . . , . , .





nodejs. :



:



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

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


:



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

(async () => {
  try {
    const client = new Client({
      address: 'localhost:4000'
    });
    await client.init();
  }
  catch(err) {
    console.error(err.stack);
    process.exit(1);
  }
})();


Node. Client.



:



  • http . https. 
  • (port) (initialNetworkAddress). — , . (hostname).
  • . : . IP-. ipv6 [ip]: .
  • , . .
  • , .
  • .


readme.





, - , , , ... , , . (EventEmitter). , , .



現時点では、既存の拡張機能の例(metastoclestoraclemuseria)を使用してすべてを継承する方法を確認できます理にかなっている場合は、プロジェクトのライブラリを拡張して使用する方法について、なんとか記事を書きます。



私の連絡先:






All Articles