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

What is the difference between P2P and Client-Server Architectural model in Distributed Systems

所以我们在分布式系统中有两种架构模型,P2P和Client-Server

我已经熟悉一般网络中的这两个概念,但我的理解是,在客户端-服务器模型中,服务器也可能是另一台服务器的客户端,这让我很困惑,因为不会这不是基本上类似于每台计算机都被视为 "peer" 的 P2P 吗? 怎么会有这两个模型?

这不是一个非常精确的问题,如果答案不是您想要的,请原谅。本质上,Client/Server(C/S)和Peer-to-Peer(P2P)模型表达了两种不同的通信模式:非对称对称,分别。在 C/S 模型中,每个参与者都在做一些完全不同的事情:一个可能发送邮件,另一个接收邮件,或者一个是需要内容的 Web 浏览器,另一个是服务器分发邮件。 P2P模型涉及参与者之间相互合作以完成相同的任务,例如file-sharing.

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

相比之下,P2P 协议倾向于在每个节点上做同样的事情。 Torrent-like file-sharing 是一个明显的例子:参与节点在它们之间分发文件。一些节点具有其他节点想要的数据。可能有主要接收数据的节点(leechers)和主要发送数据的节点(seeders),但协议对所有参与者都是相同的。

一些应用程序甚至会受益于混合方法。在电信应用中,您通常希望一些节点充当服务器,以便于建立呼叫之类的事情,但是一旦发生呼叫,最好 end-nodes 可以作为对等点直接相互通信。