基于
Peer-to-Peer
通信的消息服务
1 Peer-to-Peer通信
在
Peer-to-Peer
通信中,每个消息终端既是服务器,又同时扮演着客户端的角色。也就是说每个消息终端既可以向其它终端节点发送请求,同时也有能力响应并处理来自其它消息终端的请求。
典型的
Peer-to-Peer
通信应用一般有以下几点特征:
l
具有发现其它消息终端的功能
:每个消息终端节点都应该能够发现与它共享信息的其它节点。有几种方法可以实现该功能,例如建立一个中央服务器,它保持一个所有注册入网的的消息终端的列表,当一个新的节点连接时,把这个列表告知新的消息终端节点;或是通过网络广播、发现算法等其它方法来实现。
l
请求消息服务
:当其它消息终端节点被发现后,就可以向这些消息伙伴发送请求信息了。
l
共享消息服务
:反过来,消息终端节点可以使它的信息共享。
2 纯Peer-to-Peer
纯
Peer-to-Peer
如图
1
所示,每个消息终端动态的发现网络上的其它伙伴(消息终端),然后与它们交互,进行信息的发送或接收。它不依赖任何的中心服务器来注册消息终端以备被其它消息终端找到,但同时这也限制了消息终端的数目,扩展性差。每个终端可以利用本地的配置信息来发现其它伙伴节点,或者是利用网络广播和发现技术,例如
IP
的多点传送。
图1. 纯Peer-to-Peer
|
由于
IP
多点传送技术在
Internet
上的限制,它被更多的用在
intranet
上,因为内部企业网更容易被控制,也有用于多点传送的设施。用在
Internet
上的纯
Peer-to-Peer
一般不采用多点传送技术,它采用一些其它的替代方案,例如
a well-known node
方法,每个消息终端至少能够找到其它伙伴节点中的一个,它们互相共享这些连接信息,这样形成了一个松散的网络连接。
3 具有发现、查找服务器的Peer-to-Peer
如图
2
所示,除了依赖一个中心的服务器来发现消息终端外,该方案与纯
Peer-to-Peer
工作方式基本相同。一般当一个新的消息终端节点加入时,它通知中心服务器,并从服务器上下载网络中其它终端节点的列表。当终端之间互相通信时,它们从列表中获取要通信节点的信息,然后根据目标节点相应的信息发送消息或接收消息,而无须服务器的参入。
此外,消息终端还可以定期的向服务器上传它本身特殊的一些信息内容。当应用需要查询一些特殊的信息时,它可以向服务器发出请求,而不是发送消息到每个消息终端。然后,服务器返回包含请求内容的客户端列表,在终端上的应用就可以与这些指定的客户端直接通信以获取内容。
图2. 具有中心服务器的Peer-to-Peer
|
该方案与上述方案相比,最大的减少了网络上的请求流量。然而,带来的直接后果就是需要一个中心服务器来参与共享信息的处理,消息终端的请求也会占用更重要的资源。这样,一旦中心服务器出现故障,消息终端就无法发现其它的伙伴节点了。