P2P架构

P2P 架构是两个或多个客户端不经过服务器而直接通信的架构。可能首先会使用服务器以让客户端间能查找到对方,但在此之后就不再需要服务器了。具体也分两种不同的形式:一种是完整连接拓扑架构,指的是每个客户端与其他每个客户端之间都必须有连接,信息可以直接在用户间交换;另一种是环状拓扑架构,指的是信息只有流经一个或多个客户端后才能传递过来的架构。本章中当谈到P2P 架构时,指的是完整连接拓扑架构。

注意  在进一步讨论之前,必须首先说明一点:Flash Player 9 及更早的版本不支持P2P架构,从Flash Player 10 起才开始有一些特性能支持它(稍后详述)。

一般来说,P2P 架构在游戏方面用得不多。很多情况下游戏似乎是在使用P2P 架构,但实际上其中的一个玩家已被设定为主机来充当服务器的角色(在2.1.1 节第2 小节中详述)。然而,P2P 架构非常适用于搭建文件共享网络。通过它,网络游戏经常能够高效地为玩家们发放游戏补丁(比如《魔兽世界》),这不仅减轻了Web 服务器的负担,而且也加速了玩家下载补丁的速度。

与C/S 架构相比,P2P 架构技术有几个明显的优势,当然也存在几个缺点。先讲讲它的优点。

1. P2P 架构的优点

延时较小。延时就是指信息在从发出到接收这个过程中所用的传输时间。在C/S 模式中,信息是先从一个客户端传到服务器端,而后再从服务器端传到另一个客户端。但P2P 架构则是让信息直接在两个客户端间传递,这样就比C/S 模式减少了一半的传递时间(见图2-2)。

注意  延时越小,游戏的实时性越好。

不需要服务器端。既然P2P 架构全是由客户端构建成的,因此也就没必要使用服务器端。这对于无论是游戏开发者还是发布者来说都是一件好事,因为他们不用再为维持运行游戏中央服务器而支付主机托管和管理费了。

 
(点击查看大图)图2-2 P2P 架构的响应时间要比C/S 架构的响应时间约少一半

上面我们谈了对等网络架构的两个优点,下面我们来看看其不足之处。

2. P2P 架构的缺点

游戏的可扩展性差。当游戏的客户端相当少的时候,那就用P2P 架构吧,因为它产生的延时很小且不需要使用服务器端。但是当游戏有很多客户端时,比如说成百或上千个客户端,那么P2P 架构就不适用了。因为它需要每个客户端都和其他客户端保持一个独立的连接。那么如果有1 000 个客户端的话,完整拓扑架构就要求每一个客户端都要建立并维持1 000 个开放的连接,其中每一个客户端都要接受来自其他客户端发出的所有信息。而在C/S 架构中,一个客户端只从服务器端接受经其智能筛选和归集后的信息。

另外,还要考虑一下此种网络的应用环境。假设你有1 000 个客户端,但是它们全都在学校的子网络中,1 000 个用户彼此相连导致产生了1 000 000 个连接,这将会使网络因不堪重负而瘫痪。但是如果同样数目的连接放到全球互联网上,则根本不会出任何问题。

争议解决机制不健全。假如有个双人P2P 游戏,每一方都能操纵鼠标去吃奶酪。玩家A 接近第一块奶酪,然后确定离它足够近时就可以吃了它,于是玩家A 因为吃了奶酪而获得了一定的积分,然后他传递信息给玩家B,告诉B:这块奶酪已经被我吃了。玩家B 接收并处理了这条信息后从自己的屏幕上删除了那块奶酪,并且更新了玩家A 的得分。谁都没有异议,两个客户端对当前游戏的状态达成了一致。

但比如说现在玩家A 和玩家B 都在对下一块奶酪跃跃欲试。不巧的是这一次他们相互之间逻辑决策的时间就差了几毫秒,双方都各自认定是自己吃了这块奶酪,然后都给自己加上了分,然后互发信息给对方证明是自己把奶酪吃了。结果两个玩家就会互不相让。

所以,P2P 架构的一个缺点就是:没有中心逻辑决策者。还有一些范例更能说明问题。

两个战斗到. 最后的玩家间互发了一个必杀技,谁先倒下?

在赛车游戏中,谁第一个冲过终点?

玩家争着抢地上的钥匙,哪一位先抢到呢?

处理此类问题最好的方法就是采用C/S 架构,让服务器来维护游戏运行中的状态,充当逻辑决策争议的逻辑决策者。

P2P 架构可通过选派一个客户端充当主机(但其本身还是P2P 架构中的一个客户端)来解
决逻辑争端,而这样做会带来下面两个新麻烦。

(1) 如果所有重要的逻辑冲突都要通过充当主机的客户端来解决的话,那就丧失了对等网络架构的延时较低这个优点,因为信息要从客户端传到主机由其处理完后再传回给客户端。

(2) P2P 架构游戏本身存在安全隐患,因为所有的重要逻辑行为都运行在客户端而没有在一个中央节点得到验证。那么如果你把所有重要的逻辑决策权都交给主机的话,无疑会使这个特殊的客户端在理论上具有了某种控制能力上的优势(作弊的机会大大增加)。

3. Flash Player 10 对P2P 架构的支持

Flash Player 10 引入了一个新的通信协议:RTMFP(Real-time Media Flow Protocol)。此协议主要用于实现P2P 架构的信息传输。这意味着开发者可以直接把一个Flash 客户端和其他客户端连接起来。Flash 客户端必须首先连接到支持RTMFP 协议的服务器上,比如Adobe Stratus服务器(Adobe 云服务器);当然,在编写这本书时该服务器还处于测试状态。这个Stratus 服务器的目的是帮助Flash Player 的终端(Flash 客户端)相互连接。终端必须与服务器连接才能与服务器上的其他终端连接。

使用Stratus 服务器,除了可以开发游戏外,Flash 开发者还能创建延时更低的语音或视频聊天程序。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
B/S架构、C/S架构P2P架构是常见的三种系统架构,它们的主要特点如下: 1. B/S架构(Browser/Server架构):B/S架构是一种基于Web浏览器和Web服务器的分布式系统架构,其主要特点包括: - 前端通过Web浏览器向后端Web服务器发送请求,后端Web服务器处理请求并响应给前端,前端解析响应数据并呈现给用户; - 系统部署简单,只需要安装Web服务器和浏览器即可,无需在客户端安装专门的客户端软件; - 前后端分离,前端负责呈现数据,后端负责处理业务逻辑和数据存储。 2. C/S架构(Client/Server架构):C/S架构是一种基于客户端和服务器的分布式系统架构,其主要特点包括: - 客户端通过专门的客户端软件向服务器发送请求,服务器处理请求并响应给客户端,客户端解析响应数据并呈现给用户; - 系统部署和维护相对复杂,需要在客户端和服务器端都安装专门的软件; - 客户端负责呈现数据和处理用户输入,服务器负责处理业务逻辑和数据存储。 3. P2P架构(Peer-to-Peer架构):P2P架构是一种分布式系统架构,其主要特点包括: - 系统中的所有节点对等,可以互相通信和交换数据; - 每个节点既是客户端,也是服务器,可以向其他节点请求数据,也可以提供数据给其他节点; - 系统具有高度的容错性和可扩展性,节点之间可以自由加入和离开。 综上所述,B/S架构、C/S架构P2P架构都有各自的优势和适用场景,需要根据实际情况选择合适的架构

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值