P2P体系结构

处于边缘部分的用户通信方式:
客户/服务器方式(即Client/Sever方式):客户是服务的请求方,服务器是服务的提供方。
对等方式(即Peer-to-Peer方式):对等连接中的每一个主机既是客户又同时是服务器。

C/S体系结构的应用
Web、电子邮件、DNS

C/S体系结构的特点
极大地依赖于总是打开的基础设施服务器
在C/S文件分发中,该服务器必须向每个对等方发送该文件的一个副本,所以服务器承受了极大的负担,并且消耗了大量的服务器带宽。
在C/S文件分发时,分发时间随着对等方
分发文件时,分发时间随着对等方的数量线性的增加,而且没有上界只有下界。

P2P 体系结构
对等方:成对间歇性连接的主机
分发时间:所有对等方得到服务器上传的文件副本所需要的时间
在P2P文件分发中,在对等方直接分发的数据是其实是文件块,而不是一个个比特(所以不是使用HTTP协议?TCP报文实际上是以比特形式传输的)

答:不是通过HTTP协议,而是通过FTP协议。这是下载电影的两种方式。FTP采用两个TCP连接来传输一个文件。
1.控制连接。服务器以被动的方式,打开众所周知用于 FTP 的端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:lsit - 获取文件目录,reter - 取一个文件,store - 存一个文件;
2.数据连接。每当一个文件在客户端与服务器之间传输时,就创建一个数据连接。

FTP 的工作模式
    在 FTP 的两个 TCP 连接中,每传输一个文件,都要新建立一个数据连接。基于这个数据连接,FTP 又有两种工作模式:主动模式(PORT)和被动模式(PASV),要注意的是,这里的主动和被动都是站在服务器角度来说的。工作模式过程如下:
主动模式工作流程
客户端随机打开一个大于 1024 的端口 N,向服务器的命令端口 21 发起连接,同时开放 N+1 端口监听,并向服务器发出“port N+1” 命令;
由服务器从自己的数据端口 20,主动连接到客户端指定的数据端口 N+1。
被动模式工作流程
客户端在开启一个 FTP 连接时,打开两个任意的本地端口 N(大于1024)和 N+1。然后用 N 端口连接服务器的 21 端口,提交 PASV 命令;
服务器收到命令,开启一个任意的端口 P(大于 1024),返回“227 entering passive mode”消息,消息里有服务器开放的用来进行数据传输的端口号 P。
客户端收到消息,取得端口号 P,通过 N+1 端口连接服务器的 P 端口,进行数据传输。

最为流行的 P2P 文件分发协议:BitTorrent

BitTorrent

用 BitTorrent 的术语来说,参与一个特定文件分发的所有对等方的集合,被称为一个 洪流(torrent)。

一个洪流中的对等方彼此下载等长度的 文件块(chunk),文件块长度一般为 256 KB。

对于一个对等方来说,一开始它加入洪流中,没有任何文件块。随着时间的推移,它的文件块越来越多,在这个过程中,它既从别的对等方那里下载块,也给其它对等方上载块。一旦对等方获得了整个文件,它也许(自私地)离开洪流,也可能(无私地)继续待在洪流中继续向其它对等方上载块。当然,对等方也可能在仅仅具有块的子集时就离开洪流,并在以后又重新加入这个洪流。

接下来,我们以应用程序 迅雷 qBitTorrent 的用户界面为例,对相关知识进行验证,顺便学学 qBitTorrent 中的各种关键词的实际含义,然后……

每个洪流具有一个基础设施节点,称为 追踪器(tracker)。当一个对等方加入某洪流时,它会向追踪器注册自己,并周期性地通知追踪器它仍然在洪流中。

当一个新的对等方(我自己正在使用 qBitTorrent 下载 JOJORabbit 电影的主机)加入该洪流时,追踪器随机的从洪流的对等方中选择一个子集,并将子集中所有对等方的 IP 地址发给我的主机。我的主机持有对等方的这张列表,会试图与该列表上的所有对等方创建并行的 TCP 连接(显然,这可能让我的主机变得非常卡)。

我们称所有与 我的主机 成功建立一个 TCP 连接的对等方为 邻近对等方。所有的邻近对等方我展示在 qBitTorrent 的用户界面中。因为任意时刻,可能有邻近对等方离开,也可能有新的对等方试图与 我的主机 建立 TCP 连接。因此 **一个对等方的邻近对等方将随时间而波动。**这同样在 qBitTorrent 的用户界面中体现:中间的 邻近对等方 列表每时每刻都在动态变化。

qBitTorrent 用户界面:在这里插入图片描述
在这里插入图片描述
因为会并行地与多个对等方建立 TCP 连接传送文件块,因此在使用 qBitTorrent 时,如果文件下载速度很快,电脑的负载就会很大,我们能明显地感受到整个电脑变卡了。

	从这个过程也可以看出,这种方式特别依赖 Tracker。Tracker 需要收集所有 peer 的信息,并将从信息提供给下载者,使下载者相互连接,传输数据。虽然下载的过程是非中心化的,但是加入这个 P2P 网络时,需要借助 Tracker 中心服务器,这个服务器用来登记有哪些用户在请求哪些资源。
	所以,这种工作方式有一个弊端,一旦 Tracker 服务器出现故障或者线路被屏蔽,BT 工具就无法正常工作了。那能不能彻底去中心化呢?答案是可以的。

去中心化网络(DHT)

DHT(Distributed Hash Table),这个网络中,每个加入 DHT 网络的人,都要负责存储这个网络里的资源信息和其他成员的联系信息,相当于所有人一起构成了一个庞大的分布式存储数据库。

	而 Kedemlia 协议 就是一种著名的 DHT 协议。我们来基于这个协议来认识下这个神奇的 DHT 网络。
	当一个客户端启动 BitTorrent 准备下载资源时,这个客户端就充当了两个角色:

peer 角色:监听一个 TCP 端口,用来上传和下载文件。对外表明我这里有某个文件;
DHT Node 角色:监听一个 UDP 端口,通过这个角色,表明这个节点加入了一个 DHT 网络。
在 DHT 网络里面,每一个 DHT Node 都有一个 ID。这个 ID 是一个长字符串。每个 DHT Node 都有责任掌握一些“知识”,也就是文件索引。也就是说,每个节点要知道哪些文件是保存哪些节点上的。注意,这里它只需要有这些“知识”就可以了,而它本身不一定就是保存这个文件的节点。
当然,每个 DHT Node 不会有全局的“知识”,也就是说它不知道所有的文件保存位置,只需要知道一部分。这里的一部分,就是通过哈希算法计算出来的。

————————————————
原文链接:https://blog.csdn.net/qq_44960253/article/details/110245516
https://zhuanlan.zhihu.com/p/87327257

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式系统的体系结构可以分为以下几种: 1. 客户端-服务器(Client-Server)体系结构:客户端-服务器模式是最常见的分布式系统体系结构之一。在这种体系结构中,客户端向服务器发送请求,服务器处理请求并返回结果。客户端和服务器可以运行在不同的计算机上,通过网络进行通信。 2. 对等网络(Peer-to-Peer,P2P体系结构:在对等网络中,所有的节点都是平等的,没有中心节点。每个节点都可以提供服务和请求服务。P2P体系结构通常用于文件共享和数据传输等应用场景。 3. 三层体系结构(Three-Tier):三层体系结构将应用程序分为三个层次:用户界面层、应用服务层和数据存储层。用户界面层提供用户与应用程序交互的界面,应用服务层提供应用程序的业务逻辑,数据存储层负责数据的存储和管理。 4. 微服务(Microservices)体系结构:微服务是一种将应用程序拆分成小的、自治的服务的体系结构。每个微服务都可以独立部署、扩展和维护。微服务体系结构通常用于大型、复杂的应用程序。 5. 消息总线(Message Bus)体系结构:消息总线体系结构使用消息传递来进行通信。应用程序通过将消息发送到消息总线来与其他应用程序通信。消息总线将消息路由到接收方应用程序。 以上是分布式系统的五种主要体系结构,不同的体系结构适用于不同的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值