作业 - 第 5 周

用户头像
Happy-Coming
关注
发布于: 2020 年 07 月 08 日



class Cache {
constructor() {
this.vNodes = [];
}
addNode(node) {
// 0. if it is first node, add virtual node which has max hash
const isFirstNode = this.vNodes.length == 0;
if (isFirstNode) {
this.vNodes.push({
hash: Math.pow(2, 32),
node: node
});
}
// 1. add virtual nodes to this.vNodes
const VNODE_COUNT = 100;
for (let i = 0; i < VNODE_COUNT; i++) {
this.vNodes.push({
hash: Math.floor(Math.random() * Math.floor(Math.pow(2, 32))), // random: 0 ~ 2^32
node: node
})
}
// re-sort this.vNodes
this.vNodes.sort((a, b) => a.hash - b.hash);
}
findNode(hash) {
for (let i = 0; i < this.vNodes.length; i++) {
const vNode = this.vNodes[i];
if (vNode.hash >= hash) {
return vNode.node;
}
}
throw new Error('hash is over 2^32');
}
}



--------------------------------------------------------------------------

--------------------------------------------------------------------------



总结:

网络协议中各层实现分布式

  1. DNS

  2. HTTP 重定向

  3. HTTP

  4. IP

  5. Data Link Layer



用户头像

Happy-Coming

关注

还未添加个人签名 2017.11.24 加入

还未添加个人简介

评论

发布
暂无评论
作业 - 第5周