分布式原理:P2P系统
时间:2023-04-30 00:39:01 | 来源:网站运营
时间:2023-04-30 00:39:01 来源:网站运营
分布式原理:P2P系统:什么是P2P系统呢?就是由用户自发组成的系统,摒弃到了中央服务器。(self organized)
下面介绍几种不同的p2p系统,也算是这种模式的发展历史了。
Napster:
简单来说,就是有一个中央服务器存储了所有file的信息,你想下载一个文件,先去找中央服务器去问从哪里下载,中央服务器会告诉你具体的位置,你去下载就可以。(类似于图书馆找书,需要一个系统)
这是一个非常初级的p2p系统,甚至都没有去除中央服务器。也会有很多问题,比如用户有防火墙而无法访问,中央服务器崩了咋办,里面混入fake msg或者是黑客咋办
Gnutella:
这是一个完全的分布式的系统,由用户相互连接形成了overlay 的网络,这个系统的思想取自于‘世界上任何两个人之间最多隔6层关系’。也就是说,我想要找一个资源,我就问我附近的人,然后我附近的人再问附近的人,以此类推,一直到我找到想要的资源。
看看问的时候的格式:
再看看回复的时候的格式:
那么就有一个问题,大家同时都在问,这个网络必然会一直很繁忙,这是不可取的,所以我们需要avoid excessive traffic。
- 每个peer存着最近收到的消息,下次问的时候如果是一样的直接给他
- 消息转发给所有的邻居,但别传回自己这就行
- 每个query只转发一次,根据descriptor ID
我们还是看出来了,其实这种系统会出现很多问题,
- 大部分的traffic都在搞ping pong
- 如果有一个node 的带宽低,就会拉垮整条链路的带宽,类似于我转机去了个三线机场
- 有大部分摸鱼的node (freeloader)
- 如果有人恶意搞这个系统,就会出现大量恶意的信息
FaskTrack:
Hybrid between Gnutella and Napster选中healthy的node作为supernode,就像转机时候的一线机场
supernode是带宽高,性能好的node,把大部分的信息都保存在supernode上,这样只需要咨询它就可以拿到想要的信息。
BitTorrent:
就是我们常见的BT下载,它鼓励peer互相分享自己的file,首先有一个人作为tracker,类似于napster,一个中央服务器,它保存了file blocks都在哪里,给你一个地址,你只需要找这些peer下载即可