分布式系统中的P2P和客户端-服务器体系结构模型有什么区别

时间:2019-06-07 10:35:23

标签: networking distributed-computing distributed-system

所以我们在分布式系统中有两个体系结构模型,即P2P和Client-Server

我已经在一般网络中熟悉了这两个概念,但据我了解,在客户端-服务器模型中,服务器也可能是另一台服务器的客户端,这确实使我感到困惑,因为不会基本上类似于将每台计算机都视为“对等”的P2P? 为什么仍然有两个模型?

1 个答案:

答案 0 :(得分:1)

这不是一个非常精确的问题,如果答案不是您想要的,请原谅我。本质上,客户/服务器(C / S)和对等(P2P)模型表示两种不同的通信模式:分别为 asymmetric symmetric 。在C / S模型中,每个参与者的行为都大不相同:一个可能正在发送邮件,另一个正在接收邮件,或者一个是需要内容的Web浏览器,另一个是服务器发送的邮件。 P2P模型包括参与者之间相互合作以完成相同的任务,例如文件共享。

也许让您对C / S模型感到困惑的是诸如 proxy 之类的模式,其中代理服务器是某些节点的服务器,而另一些节点的客户端。这仍然是C / S而不是P2P的操作模型,但是代理同时在客户端和服务器角色中运行,很可能在两种情况下都使用相同的协议(当协议不同时,通常称为“网关” )。例如,在使用HTTP代理的情况下,浏览器客户端将HTTP代理视为普通的Web服务器。实际上,就浏览器而言,代理可能是 Web服务器:大多数体面的大型网站实际上是负载均衡代理(或类似代理)之后的许多服务器。代理可能不保存所请求的数据,在这种情况下,它会以客户端的身份从其他Web服务器获取数据。

相比之下,P2P协议往往在每个节点上做同样的事情。类似Torrent的文件共享就是一个明显的例子:参与节点在它们之间分发文件。一些节点具有其他节点想要的数据。可能有一些节点主要接收数据(获取者),而某些节点主要发送数据(播种者),但是所有参与者的协议都相同。

某些应用程序甚至将从混合方法中受益。在电信应用程序中,通常希望某些节点充当服务器,以促进诸如建立呼叫之类的事情,但是一旦发生呼叫,最好是终端节点可以作为对等方直接相互通信。