为什么要分权?许多人不太理解其中的含义,因为一切似乎都工作良好。实际上有几个原因,但是通常该方法的支持者仅涉及复杂的技术问题,并且外行人很难辨别本质。例如,对我来说,一切都很简单。
假设您开始了一个很棒的项目。随着发展,它将开始需要越来越多的计算机资源。问题是普通人的资金非常有限。但是,如果其他人对您的想法感兴趣,他们将能够独立启动服务器,更改和添加新功能,扩展常规功能等。同时,对于个人而言,成本并不算太大。它们分布在每个人中,并且每个人的总利润相加。这使普通百姓可以创建不简单的解决方案。
实际上,当您需要寻找将为整个宴会支付费用的投资者时,这是当前主导选择的替代方案。通常只有在这种情况下,您才需要从外部世界中关闭该项目,并完全依靠这些人,做出任何决定,因为它“对企业有利”,等等。在某些时候,您甚至可能是一个额外的元素,他们会与您道别。
如果一个想法可以通过分散的方式有效地实施,那么最好这样做。当临界点达到这一点时,将有许多标准化且方便的机制可用于实施更高级别的解决方案。同时,让我们看一个简单的算法来创建分散式网络- 可传播。
选项一:单层
: 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]: .
- , . .
- , .
- .
, - , , , ... , , . (EventEmitter). , , .
目前,您可以使用现有扩展的示例了解如何继承所有内容:metastocle,storacle和museria。如果有道理,那么我将以某种方式写一篇文章,介绍如何为我的项目扩展和使用该库。
我的联系方式: