84
2006-3-14 1 构建 P2P平台上的Web服务 Ruixuan Li, Feng Ke College of Computer Science, HUST [email protected] http://idc.hust.edu.cn/~rxli/

构建 P2P平台上的Web服务 - Huazhong University of ...idc.hust.edu.cn/~rxli/teaching/p2p/5 JXTA.pdf · 术以及编程语言,真正达到跨平台。 jxta被设计成数量少、概念简单的p2p系统

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

2006-3-14 1

构建 P2P平台上的Web服务

Ruixuan Li, Feng KeCollege of Computer Science, HUST

[email protected]://idc.hust.edu.cn/~rxli/

2006-3-14 2

主要内容

• JXTA P2P平台• P2P平台上的Web服务

2006-3-14 3

JXTA P2P平台• 概述

JXTA(Juxtapose,并列)是Sun公司于2001年推出的新技术。JXTA是为P2P的网络应用开发提供一个统一的平台,是使用户能更便捷地访问连接在互联网上的个人电脑资源的新框架。

JXTA是Sun ONE互联网战略的延续。JXTA采用了开放源码的方式,http://www.jxta.org。

SUN ONE(Open Net Environment,即Sun开放网络环境)集中了SUN的软件产品,是一个开发并且配置“按需服务”的理念、架构、平台以及经验的集合。

SUN ONE(Open Net Environment,即Sun开放网络环境)集中了SUN的软件产品,是一个开发并且配置“按需服务”的理念、架构、平台以及经验的集合。

2006-3-14 4

JXTA P2P平台

Bill Joy-JXTA项目创始人、Sun首席科学家

“JXTA技术是网络编程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题。”

1977年,在Berkeley时主持开发了最早版本的BSD Unix,1982年,Bill Joy、Scott McNealy等人合资成立了Sun公司,Bill Joy被誉为“互联网领域的爱迪生“,2003年离职。

1977年,在Berkeley时主持开发了最早版本的BSD Unix,1982年,Bill Joy、Scott McNealy等人合资成立了Sun公司,Bill Joy被誉为“互联网领域的爱迪生“,2003年离职。

2006-3-14 5

JXTA P2P平台• P2P对等计算出现的问题(系统设计方面)

1. 互操作性:应该能提供无缝跨越不同P2P系统的服务。而许多现有的P2P系统仅能提供简单类型的服务,如

Napster-音乐文件共享Gnutella-通用文件共享AIM-即时消息由于这些服务的不同特性和缺乏通用的底层P2P结构,每个软件商创建了互不兼容的系统,它们之间彼此不能互操作。

2006-3-14 6

JXTA P2P平台• P2P对等计算出现的问题2. 平台无关性:

P2P系统应该设计成独立于编程语言如C、Java等;独立于系统平台如Windows、Unix等;独立于网络协议如TCP/IP、Bluetooth等。而目前许多P2P系统通过在一定平台和一定网络协议上发布一组API来提供特性和服务-效率低下。

2006-3-14 7

JXTA P2P平台• P2P对等计算出现的问题3. 普遍存在性:

P2P系统应该设计成可以运行在任何有数字处理功能的设备上,如传感器、消费电子、PDA、手机、桌面计算机、中心服务器等等。

基于任何特殊硬件和软件系统之上的应用都经不起未

来的考验!

2006-3-14 8

JXTA P2P平台• P2P对等计算出现的问题4. 安全性:传统:身份识别认证、授权、数据完整性、保密性和

不可否认性等

特殊:知识产权保护问题;如何建立节点之间的信誉问题;P2P新型网络病毒传播模式防阻断问题;基于P2P的隐蔽通讯与隐私保护问题;P2P网络服务健壮性与抗毁能力等等。

2006-3-14 9

JXTA P2P平台• JXTA设计目标

(1) 互操作性(2) 平台无关性(3) 普遍存在性(4) 安全性

JXTA被设计成数量少、概念简单的P2P系统构成“积木”,这几块“积木”是构架P2P系统的基本模块,能独立于操作系统、网络传输技术以及编程语言,真正达到跨平台。

JXTA被设计成数量少、概念简单的P2P系统构成“积木”,这几块“积木”是构架P2P系统的基本模块,能独立于操作系统、网络传输技术以及编程语言,真正达到跨平台。

2006-3-14 10

JXTA P2P平台• JXTA概念目标

(1) 使用组来组织Peer,在组内提供服务和应用的环境。(2) 组可以使用认证和验证方式来控制组内访问权限。(3) 通过网络来发布/请求关于Peer和网络资源的信息。(5) 提供一个基础平台,供Peer之间做路由和通信。在防火墙或者其他障碍后面的Peer之间的通信是这个目标中很关键的一部分。(6) 提供一种机制允许Peer之间能彼此监视状态和资源利用情况。

2006-3-14 11

JXTA P2P平台• JXTA概念目标

(7) 系统应允许任何设备直接加入到JXTA网络中去。(8) 系统应允许ISP对网络上的Peer进行集中管理。(9) 系统应支持数字产品版权的管理。(10)系统应封装和抽象一些特定的核心功能,以便产

生出商业方面的应用。

2006-3-14 12

1.即时通信和文件共享(myJXTA)

• JXTA应用

myJXTA是在J2SE平台上的一个JXTA演示程序,主要为展示JXTA项目和P2P的一些概念,它提供了一些功能,诸如安全的一对一的交谈、组内的交谈、组内文档的共享、搜索和下载等。myJXTA使用JXTA平台的核心服务,完成发现组、加入组和创建组的功能;还有在两个Peer 间创建连接,完成一对一的交谈;或者在组内建立连接,完成组内的交谈以及组内文件的搜索和下载。

http://myjxta.jxta.org/servlets/ProjectHome

2006-3-14 13

2. 网络游戏(Chess)

• JXTA应用

JXTA技术已在许多游戏应用方面得到了展示,一个互动式的国际象棋比赛的应用程序使用JXTA来传递两个棋手间的对奕过程,一个游戏者可以创建一个新的JXTAPeer组并邀请全世界其他游戏者加入他的游戏。

http://chess.jxta.org/servlets/ProjectHome

2006-3-14 14

3. 协同工作(JXTA-CAD)

• JXTA应用

JXTA-CAD项目为一些工业领域的CAD设计提供了更好的辅助技术,它能够将咨询人员、设计人员和用户联系起来,以便共享各自领域中最好的设计并且交换他们的看法,实现协同工作目的。

http://jxta-cad.jxta.org/servlets/ProjectHome

2006-3-14 15

4. JXTA社区

• JXTA应用

在JXTA社区可以获取最新的JXTA文档和程序代码,而且可以注册并加入JXTA项目,参与并推动项目的进展等。

http://www.jxta.org/

2006-3-14 16

JXTA P2P平台• JXTA核心概念

1. Peer(对等节点)Peer是一个虚拟的通信点。在一台计算机或者设备上可以有很多个Peer,一个Peer并不是一个用户,因为一个用户可以有多个Peer,同一个设备上也可以有多个Peer (在测试的时候经常用到)。因为Peer不等同于用户,所以需要将用户和Peer抽象出来并分离开。

2006-3-14 17

JXTA虚拟网络

2006-3-14 18

JXTA P2P平台• JXTA核心概念

2. PeerGroup(对等组)对等组是一种组织Peer并发布组内特定服务的工作方式;一般情况下,具有相同兴趣的Peers自组成一个对等组;对等组可以被创建、加入和退出,在一个组里还可以更新一个组成员的关系;对等组需要对成员关系进行一些限制,例如为了通信的安全、隐私的需要等;

可以把对等组看成一个虚拟的私人网络VPN。

2006-3-14 19

JXTA对等组示意

NetPeerGroup是最特殊的一个对等组,Peer在初始化时都默认加入该组。NetPeerGroup是最特殊的一个对等组,Peer在初始化时都默认加入该组。

2006-3-14 20

JXTA P2P平台• JXTA核心概念

3. EdgePeer(边缘节点)边缘节点本质上是易变的,有可能频繁地加入和退出。JXTA网络中大多数节点都会是边缘节点。一个边缘节点不转发查询请求,它可能维护、也可能不维护自己的本地公告缓存。要参与 P2P 网络,一个边缘节点只需知道如何到达单个集合点。通常,一个边缘节点维护一个已知集合点的列表。每个JXTA节点都可以假定为边缘节点或者集合点。

2006-3-14 21

JXTA P2P平台• JXTA核心概念

4. Rendezvous Peer(集合点) 集合点是一个能够处理来自其他Peer请求的Peer。集合点通常可以存储大量的有关它周围Peer的信息。集合点可以转发发现请求到其他的集合点。

使用集合点的主要目的就是为了方便在本地网络之外搜索资源信息。而且传播只发生在更稳定的且成员数更少的集合点中,这降低了网络范围内消息风暴或者泛洪的可能性。

集合点一般变化较少并且更稳定,当它们连接到网络上后,它们将保持连接,这样由集合点聚集构成的P2P网络称为集合超级节点网络(Rendezvous Super-Peers Network)。

2006-3-14 22

集合点工作示意

Peer A和Peer B分别将自己的通告索引发送(或更新)给各自的集合点Rdv1和 Rdv2。当Peer A想要得到保存在Peer B上通告时,向自己的集合点Rdv1发送通告查询,Rdv1首先验查自己是否有此通告索引,如果没有,它将这个查询扩散给下一个集合点Rdv2,Rdv2找到Peer B通告索引后,然后将查询转发给Peer B,最后Peer B将反馈信息发送给Peer A。

Peer A和Peer B分别将自己的通告索引发送(或更新)给各自的集合点Rdv1和 Rdv2。当Peer A想要得到保存在Peer B上通告时,向自己的集合点Rdv1发送通告查询,Rdv1首先验查自己是否有此通告索引,如果没有,它将这个查询扩散给下一个集合点Rdv2,Rdv2找到Peer B通告索引后,然后将查询转发给Peer B,最后Peer B将反馈信息发送给Peer A。

2006-3-14 23

JXTA P2P平台• JXTA核心概念

5. Router Peer(路由器Peer)JXTA中的一个路由器Peer是一个支持ERP协议的Peer,不是所有的Peer都需要实现该协议,因为和传统的网络路由器一样,我们只需要少数几个路由器去支持一个大网络,JXTA路由器和传统的路由器非常相像,最主要的区别是P2P不是非常固定并且包括了很多非静态地址。

2006-3-14 24

JXTA P2P平台• JXTA核心概念

6. Gateway Peer(网关Peer)JXTA中的一个网关Peer是一个作为通信中继Peer。网关Peer和集合点的不同之处在于,网关是用来在Peer间传递消息,而集合点是用来传递请求的。

因为有防火墙、NAT设备和代理服务器的存在,网关对网络的连通具有决定性的作用,网关可以存储消息,并且等待希望得到这些消息的接收者来收集它们。

2006-3-14 25

通过网关Peer进行Peer间的通信示例在因特网上网关是与大多数安全机制交互的关键,防火墙、代理服务器和NAT设备是主要的通信屏障。

当消息从Peer1发出时,是通过TCP发往网关Peer2;网关Peer2存储了这个消息,直到Peer3向它发出获得消息的HTTP请求;

网关Peer2将缓存的消息反馈给Peer3。

当消息从Peer1发出时,是通过TCP发往网关Peer2;网关Peer2存储了这个消息,直到Peer3向它发出获得消息的HTTP请求;

网关Peer2将缓存的消息反馈给Peer3。

2006-3-14 26

JXTA P2P平台• JXTA核心概念

7. Endpoint(端点)端点是最基本的通信方法。一个端点就是实现了特定通信协议的Peer的地址,如:IP地址+端口。端点不一定要是物理地址,端点可以允许物理地址发生变化。

一个Peer可以有多个端点,这样可以通过不同的协议来与其他Peer通信。例如:两个Peer都在防火墙的后面,可以直接通过它们的TCP端点来通信;如果两个Peer要穿过防火墙去通信,则需要使用HTTP的端点。

2006-3-14 27

JXTA P2P平台• JXTA核心概念

8. Pipe(管道)管道是Peer之间的虚拟通道。它提供了一种很好的方案,使得Peer在大多数网络情况下都可以通信,而不用去管防火墙或者其他的障碍,即使不知道另外一个Peer的位置以及它所使用的协议等信息,通过管道仍然可以与之通信。

管道作为一种抽象的方法,隐藏了一些细节,比如在多个连接的时候可能会有多个Peer参与进去,管道可以重新定位,找到原来的Peer。

2006-3-14 28

JXTA 管道示意图

2006-3-14 29

JXTA P2P平台• JXTA核心概念

Pipe管道类型点到点类型----点到点的管道连接两个不同的Peer。可以使用多个起网关作用的Peer来创建连接。广播类型----将一个Peer连接到多个目标Peer。

2006-3-14 30

JXTA P2P平台• JXTA核心概念

Pipe管道按工作方式分类:① 单向异步----这种管道只用来做单向通信。管道是异步的,消息到达时可能不是顺序的。这是JXTA平台上最基本的一种类型的管道。

② 同步的请求/应答----所有发出的信息都会收到一个应答消息,消息到达的顺序是按照它们发送时候的顺序。

③ 成批发送----用来发送大量的数据。④ 流传送----通过流可以更有效地传送诸如声音、视频等大量的数据。

⑤ 双向----它是两个单向异步管道的组合。⑥ 单向同步----所有发出的信息都会收到一个应答消息,消息到达的顺序是按照它们发送时候的顺序。

⑦ 单向可靠安全的管道----所有发出的信息都会收到一个应答消息,并且这些消息都是加密的。

2006-3-14 31

JXTA P2P平台• JXTA核心概念

9. Advertisement(通告)通告是一个XML文档,JXTA网络中的任何资源信息,包括Peer、对等组、管道等都可以用通告来描述。通告是JXTA的核心,只有通过寻找通告才能发现JXTA资源,而且只有通过发布通告才能向外界提供自己的服务。

JXTA通告有7种类型:对等节点通告、对等组通告、管道通告、模块类通告

模块规范通告、模块实现通告、集合点通告。

2006-3-14 32

JXTA P2P平台管道通告示例:

<?xml version="1.0"?><!DOCTYPE jxta:PipeAdvertisement><jxta:PipeAdvertisement xmlns:jxta="http://jxta.org">

<Id>urn:jxta:uuid-9CCCDF5AD8154D3D87A391210404E59B

E4B888209A2241A4A162A10916074A9504</Id><Type>

JxtaUnicast</Type><Name>

HelloWorldPipe</Name>

</jxta:PipeAdvertisement>

URN是Uniform Resource Name(统一资源名称)的缩写.它通常用来标识持久的而且有专门标志的资源。

URN是Uniform Resource Name(统一资源名称)的缩写.它通常用来标识持久的而且有专门标志的资源。

UUID是128位整数(16字节)的全局唯一标识符(Universally Unique Identifier)。

UUID是128位整数(16字节)的全局唯一标识符(Universally Unique Identifier)。

2006-3-14 33

JXTA P2P平台• JXTA核心概念

10. Message(消息) 在JXTA中,有两种类型的消息:

XML消息。它用于只支持文本的传输机制或作为一种普通的消息发送方式。

XML消息本质上就是一些名称/数值对的集合。二进制消息。它是一个紧凑包,用来以数据流的形式发送消息。通常传输效率较高。

2006-3-14 34

JXTA P2P平台• JXTA核心概念

XML消息示例:

<?xml version="1.0"?><!DOCTYPE Message><Element Name=“JXTA:product” Mime_Type=“text/plain”>

<Brand> HaierTV </Brand><Price> 1200.00 </Price><Specials> 1000.00 </Specials >

</Message>

2006-3-14 35

JXTA P2P平台• JXTA层次结构

核心层(JXTA Core):这一层封装了最根本的东西,包括管道、对等组、通告、ID管理、Peer监视和相关的安全原语。服务层(JXTA Services):这一层包括对于P2P网络不是必需的、但很通用的功能,如查找、索引、共享、成员管理等。应用层(JXTA Applications):这一层包括了应用JXTA开发出来的应用,例如即时通信、文件共享等。

2006-3-14 36

JXTA P2P平台• JXTA协议

对等节点发现协议Peer Discovery Protocol(PDP)管道绑定协议Pipe Binding Protocol(PBP) 对等节点信息协议Peer Information Protocol(PIP) 集合点协议Rendezvous Protocol(RVP)端点路由协议Endpoint Routing Protocol(ERP) 对等节点解析协议Peer Resolver Protocol(PRP)

对等节点发现协议Peer Discovery Protocol(PDP)管道绑定协议Pipe Binding Protocol(PBP) 对等节点信息协议Peer Information Protocol(PIP) 集合点协议Rendezvous Protocol(RVP)端点路由协议Endpoint Routing Protocol(ERP) 对等节点解析协议Peer Resolver Protocol(PRP)

2006-3-14 37

1. 对等节点发现协议Peer Discovery Protocol(PDP)

PDP是发现其他Peer和资源的协议,该协议包括两个方面:(1)用于请求发现其他Peer上的通告;(2)用于响应其他Peer的这种请求。

通告包括Peer通告、对等组通告、服务通告、管道通告等。

2006-3-14 38

Dicovery消息的交换过程

1.Peer1给所有已知的普通Peer和Rendezvous发送一个Discovery Query Message。

2. 收到请求的Rendezvous对discovery请求进行处理,并返回一个Discovery Response Message,其中包含它缓存的通告信息。另外,它还把这个请求转发给它所有知道的Peer

3. 收到请求的普通Peer搜索本地缓存寻找匹配的通告,如果找到,就直接给最初的请求方发送一个Discovery Response Message。

2006-3-14 39

请求消息基本格式:

请求类型如0-Peer通告,1-对等组通告

指定最多可接受响应数目,多余的舍弃(可选元素)

请求方自身的通告,该通告可以在网络上唯一标志某一个Peer。

规定响应中的通告需要满足的条件。

2006-3-14 40

响应消息基本格式:

响应类型如0-Peer通告,1-对等组通告

响应通告的总个数

响应方自身的通告。

与请求消息中值相同,如果原请求中没有要求,在响应中也会忽略这对选项。

符合请求要求的通告信息。Expiration指明该通告有效时间。可包含多个Response元素,其通告总数等于Count值。

2006-3-14 41

2. 管道绑定协议Pipe Binding Protocol(PBP)

允许Peer之间建立虚拟的通信通道。当Peer想用Pipe来发送数据时,它需要发现另一个Peer,并且该Peer的Endpoint已绑定到同一个PipeID的Pipe上,并在那里监听数据。

PBP定义两种消息格式来使用Pipe:(1) Pipe Binding Query Message-Pipe绑定请求消息(2) Pipe Binding Answer Message-Pipe绑定响应消息

2006-3-14 42

管道绑定过程:

1. Peer1根据管道通告创建一个Input Pipe,并将管道通告发布出去, 等待或监听消息到达。

2.如Peer2想给Peer1发送一个消息, 那么Peer2首先要得到Peer1的管道通告,然后创建一个对应该管道的Output Pipe。因此,Peer2给它所知的Peer和Rendezvous发送一个Pipe Binding Query Message。

3. Peer1收到Pipe Binding Query Message后,检查本地缓存看是否有匹配的Pipe,如果有,它就回复一个Pipe Binding Answer,其中包含它管道信息。

4. Peer2收到Pipe Binding Answer Message后,从其中的Peer通告中提取endpoint信息,用这个endpoint信息创建一个Output Pipe,创建后,Peer2就可以给Peer1发送消息了。

2006-3-14 43

3. 对等节点信息协议Peer Information Protocol(PIP)

用来获得已知Peer的状态信息,包括在线时间、更新时间、流量信息等。该协议有时被用做ping命令。

PIP只用两种类型的消息:(1) Peer Info Query Message-请求获得远程Peer状态的消息

(2) Peer Info Response Message-给其他Peer提供状态信息的消息

2006-3-14 44

获取Peer Info消息过程:

1. Peer1给普通Peer2发送一个Peer Info Query Message

2. 普通Peer接收到这个请求后,它的Peer Info Service就会检查请求中的targetID是否与本地Peer ID相匹配,如果匹配,就给请求方Peer发一个Peer Info Response Message,如果不匹配,就什么都不做。

2006-3-14 45

4. 集合点协议Rendezvous Protocol(RVP)

RVP负责在JXTA对等组内传播消息,然而不同的对等组可能使用不同的传播方法,因此RVP定义了一个简单的协议来实现如下功能:

(1) 传播消息并接受传播过来的消息;(2) 控制消息的传播(TTL、循环检测等)。

RVP定义了四种消息格式:(1) 租约请求消息(Lease Request): Peer用来请求同集合点建立连接。

(2) 租约同意消息(Lease Granted): 集合点用来同意Peer的租约请求,通告租约的有效时间。

(3) 租约中断请求消息(Lease Cancel Request): Peer用来请求断开同集合点连接。

(4) 租约取消消息(Lease Cancelled): 集合点发送给Peer来终止租约。

2006-3-14 46

RVP消息交换过程:

租约请求消息

租约同意消息

2006-3-14 47

5. 端点路由协议Endpoint Routing Protocol(ERP)

ERP定义了一组由路由服务处理的请求/查询消息,该路由服务将消息发送到目的地。

ERP定义了三种消息格式:(1) 路由请求消息-Route Query Message(2) 路由响应消息-Route Response Message

描述到达目标Peer的一定顺序的端点地址(3) 端点路由消息-Endpoint Route Message

提供将消息路由到目标Peer的所有信息

2006-3-14 48

ERP流程:

1. Peer1想给Peer4发送消息,但它不能直接连接到Peer4,于是Peer1给所有已知的普通Peer和集合点发送Route Query Message,以便确定到Peer4 的路由。

2. 集合点知道到Peer4的路由,它给Peer1发送一个Route Response Message。

3. Peer1收到Route Response Message后,把Endpoint Route Message添加到要发送到Peer4的消息中,然后将消息发送给路由中的第一个Endpoint地址。

4. Peer3 接收到Endpoint Route Message,确定路由中的下一个Peer,增补Endpoint Route Message,然后发送给路由中的下一个Endpoint地址。

5. Peer4 收到Endpoint Route Message并确定自己是消息的最终目的地后,通过端点服务提取出Peer1发送的原始消息。

2006-3-14 49

6. 对等节点解析协议Peer Resolver Protocol(PRP)

该协议是一个基础通信协议,它按照一种请求/响应格式来进行,要使用这个协议,需要提供一个查询的Peer和一个包含能被目标Peer理解的XML请求消息,该协议被用来支持JXTA中的其他协议(PDP、PBP和PIP),而且允许传播查询,即将请求分发到组内的一个或者多个匹配的处理器。

2006-3-14 50

JXTA P2P平台• JXTA核心协议

简单理解

Peer Discovery Protocal----搜索资源Peer Resolver Protocal----解析请求响应服务Peer Information Protocal----监控Pipe Binding Protocal----可寻址的消息管道传递Rendezvous Protocal----消息传播Endpoint Routing Protocol----路由

2006-3-14 51

基于集合点的消息扩散机制

(1) 共享资源分布式索引( Shared Resource Distributed Index,SRDI )

JXTA使用了一种称为共享资源分布式索引的分布式算法,以创建并维护网络中资源的一个总体索引。

在JXTA中,资源是用公告形式的元数据(实质上就是XML文档)来描述的。通过一组特定的属性,用SRDI在网络范围索引这些公告。维护的分布式索引类似于一个哈希表(Hush Table),其索引的属性作为哈希键,而哈希值映射回包含实际公告的源节点。因而可以在聚集网络上任何地方根据这些属性进行查询。这样,通过定位具有所需公告的节点,SRDI就可以答复在网络中的公告查询。

当发布新的通告时,对等节点使用SRDI将通告索引发送给所属的集合点。这种集合点与所属对等节点的层次关系保证了解析请求只在集合点之间扩散,于是在查找某个通告时,大大减轻了被搜索的对等节点的数量。

2006-3-14 52

基于集合点的消息扩散机制

(2) 分布式哈希表(Distributed Hash Table, DHT)

DHT是大多数P2P网络所采取的资源定位方式。

首先将网络中的每一个节点分配虚拟地址(VID),同时用一个关键字(KEY)来表示其可提供的共享内容。取一个哈希函数,这个函数可以将KEY转换成一个哈希值H(KEY)。网络中节点相邻的定义是哈希值相邻。发布信息的时候就把(KEY, VID)二元组发布到具有和H(KEY)相近地址的节点上去,其中VID指出了文档的存储位置。资源定位的时候,就可以快速根据H(KEY)到相近的节点上获取二元组(KEY, VID),从而获得文档的存储位置。

不同的DHT算法决定了P2P网络的逻辑拓扑,比如CAN就是一个N维向量空间,而CHORD是一个环形拓扑,TAPESTRY则是一个网状的拓扑。

2006-3-14 53

基于集合点的消息扩散机制

(3) 松散一致的分布式哈希表(loosely-consistent DHT)

虽然在访问数据时DHT(Distributed Hush Table)方法是一个有效机制,但是随着索引更新的增加,维护DHT的代价将呈指数增加,使得保存稳定的分布索引是不现实的,另一方面,当拥有DHT的点离开时,它所维护的一组索引就会在一定时间内无法使用(直到可靠的节点再次发布它)。

基于一种自适应性的方式,JXTA提出了一种松散一致的DHT,用于处理P2P网络中节点的易变特性。松散一致的DHT可以这样理解:即JXTA每一个集合点维护一个所有已知集合点的动态视图(Rendezvous Peer View, RPV),集合点把无法根据自己的索引缓存进行解析的查询转发给其他集合点,由此整个集合超级节点网络形成一个松散一致的分布式哈希表。

2006-3-14 54

在集合超级节点网络(起松散一致的DHT作用)中进行查询解析过程:步骤1:EP1(边缘节点1)

创建一个管道,并在本地储存其公告。

步骤5:集合点R4进行查询(使用自己的RPV),并将请求重定向到超级节点网络中的另一个集合点(R3)。

步骤2:在本地更新索引,所做的更改推送到已连接的集合点(R1)。步骤3:通过SRDI索引的

传播,接收更新的集合点(R1)复制新的索引信息到它所知的超级节点网络中的集合点(R3和R5)。步骤4:然后,当EP2(边缘

节点2)进行查询EP1的管道时,这个查询发送到与它唯一连接的集合点R4。

步骤6:收到通过R1传来的EP1的索引更新后,R3立即将EP2的请求通知给EP1。步骤7:EP1直接向EP2发送包含所请求的管道公告。这时,查询得到了解析。

步骤8:然后,EP2可能会决定存储该管道公告,循环重新开始。

2006-3-14 55

基于集合点的消息扩散机制

(4) RPV(Rendezvous Peer View)

RPV是由超级节点网络中每一个集合点维护的。RPV是该节点的已知集合点列表,按各个集合点的唯一节点ID排序。

在DHT算法中使用的散列函数在每一个节点上都是相同的,它用于确定一个(本地不能解析的)查询请求应该转发到哪一个集合点。集合点可能暂时或永久地保存一个不稳定的RPV,甚至是空表。

所有变得不可达的集合点都会从节点的RPV中删除。超级节点网络中每一个集合点都定期向其RPV中随机选择的集合点发送其已知集合点的随机子集。这样做是为了保证 RPV最终覆盖整个网络,并适应底层物理网络所发生的任何分离或者合并。注意,在任何给定时间,由网络中不同集合点所维护的RPV可能彼此不同。

2006-3-14 56

为本地收集RPV算法如下:

集合点定期在本地RPV中挑选给定随即数量的集合点,向它们发送已知的集合点,从RPV中删除没有回复的集合点;

当无法得到任何集合点的信息,或者初始化为集合点时,将使用从预定的种子集合点处得到其他集合点的信息。(种子集合点由对等组定义,任何对等节点都可以成为种子集合点)

集合点建立起自己的RPV后,种子集合点也作为集合点。如果集合点网络是稳定的,RPV将很快建立起关于其他集合点的信息。

2006-3-14 57

基于集合点的消息扩散机制

(4) RPV遍历器(RPV Walker)

在解析查询时,散列函数是针对集合点自己的RPV执行的。因为可能有多个现有的集合点断开连接,或者多个新的集合点加入超级节点网络,为了将查询转发给有限数量的其他集合点,就引入一个RPV遍历器。

遍历器将在最初的DHT目标集合点的向上(-1)/下(+1)两个方向前进,查看与目标集合点临近的集合点中是否有搜索要查找的索引。

2006-3-14 58

如何索引一个刚刚发布的通告

P1使用SDRI服务向自己的集合点R2发布新的通告索引,SDRI使用定义的关键字对通告进行索引,如通告的名字,通告的ID等。这样有利于减少集合点所要保存的数据量。

R2使用DHT函数(H(adv1))将索引发送给RPV中的一个集合点。本例中R2包含从R1到R6。如果DHT函数返回值为R5,则将索引发送给R5,但是考虑到R5可能随时消失,并增加R5临近点搜索该索引的概率,也同时将索引发送给R5附近的集合点(RPV列表中前/后一个)。在这里索引也发送给R4和R6。在RPV里相邻并不意味者物理网络相邻。

1) 发布通告

2006-3-14 59

如何索引一个刚刚发布的通告

2.a) 查询通告

假设有一个对等节点 P2要搜索通告adv1,P2向自己的集合点R3发送解析请求,R3上的SRDI服务计算出DHT函数值,如果R2和R3上RPV是相同的,那么DHT函数返回相同的值R5,这样R3将请求转发给R5,R5再转发给P1,P1答复P2,如图 2.a)所示。

2006-3-14 60

如何索引一个刚刚发布的通告

2.b) 查询通告如果此时R5消失了,R3在RPV更新或者向R5发送消息时知道这一事实,那么R3有一个新的RPV,其中包含R1到R5,而且现在的R5则是以前的R6。当R3收到P2发送来的解析请求时,R3计算DHT函数得出是新的R5集合点。因为已经将索引复制给新的R5(原R6),所以仍旧能在R5上找到索引。图 2.b)说明了只要RPV的改变是在复制范围内(+1,-1),一样可以使用DHT在不一致性RPV中成功找到索引。在RPV列表很大时,复制距离可以是+2或+3。

2006-3-14 61

如何索引一个刚刚发布的通告

2.c) 查询通告现在来看一下更复杂情况,RPV有较大的变化如 (2c)所示。R3的RPV上有8个集合点 (R1-R8),此时R7是指原来的R4,当R3收到P2的解析请求后,计算了DHT值为5,由于RPV的变化较大而在R5上不可能找到adv1的索引,这时使用有限步骤遍历器(limited-range walker)机制继续搜索。遍历器(walker)将在最初的DHT目标集合点的向上/下两个方向前进,如图(2c) 所示,查看与目标集合点临近的集合点中是否有搜索要查找的索引。有限步骤遍历器利用了在RPV临近的集合点上复制索引以增加概率优势。在这个例子中,R5向R4(向下)和R6(向上)转发请求,如果R4没有,它将向R3转发请求(向下),R6向R7转发请求,当R7上找到该索引,则将请求转发给P1,向上方向的前进停止。而向下方向则当到达规定的跳数或没有可寻的集合点时结束。

2006-3-14 62

基于IP多播的对等节点发现机制

IP多播(IP Multicast)是一个基于接受方的概念:接受方加入到一个普通的多播组中,然后消息将通过网络底层传送到组内的每个成员。消息发送方式并不需要保存一份接受者的名单。在网络的每一条链路中,同一时间里只传递一份多播消息的备份。

通过将源消息的一个备份发送给需要接受该消息的多个接受方,IP多播方法有效地实现了一对多消息传递。而在单播(Unicast)方法中,一条源消息被单独地发送给每个接受者,接受方的最大个数将受到发送方网络带宽的限制;在广播(Brodcast)方法中,源消息的备份被发送到网络的每个节点,它存在的问题是可能有些节点并不愿意接受这条消息,而且,广播方法只限于在同一子网内部。与之相比,IP多播方法具有更高的执行效率。

2006-3-14 63

基于IP多播的对等节点发现机制

在JXTA P2P中,IP多播好处:首先,因为多播使用一个组地址而不是使用IP地址,一个

Peer可以在不知道接收者地址的情况下发送消息。这样做的结果是在多播网络中的所有Peer都可以响应发出请求的Peer,将有关查询的结果信息、甚至是自己的IP地址(用于与请求Peer直接通信)发送回去。第二个好处是减少使用带宽。因为所有的Peer都可以看到一个单一的消息,没有必要向每一个Peer发送消息的一个副本。当发送大量的数据到一组Peer时,这一点是非常重要的。

使用多播的一个缺点是一些防火墙和路由器会阻塞多播的消息。使用多播的一个缺点是一些防火墙和路由器会阻塞多播的消息。

2006-3-14 64

基于IP多播的对等节点发现机制

上图说明了一个JXTA典型搜索过程。远程搜索从Peer1开始,它首先通过IP多播(IP Multicast)询问本地的Peer2和Peer3,Peer2和Peer3很可能和Peerl处于同一个局域网内,所以很快收到了搜索请求。接下来,如果Peer2和Peer3没有所搜索的特定资源,搜索将通过集合点进行,Peer1会向它的集合点Peer发出搜索请求,如果该集合点Peer也没有所需的通告信息,该集合点Peer会向它所知道的集合点Peer发出搜索请求。需要注意的是,除了和提出查询请求的Peer处于同一局域网内的Peer收到查询请求外,在局域网外只有集合点才会收到查询请求。

2006-3-14 65

P2P平台上的Web服务近年来,一种面向服务的体系架构SOA (Service-Oriented Architecture)启动了新一轮的互联网革命。Web服务(Web Services)计算模型正是SOA技术的典范。

如何在P2P平台上构建Web服务,将这两种计算模式融合起来,充分发挥二者各自的优势,以更好地部署Internet应用成为了一个重要的研究领域。

2006-3-14 66

1. Web服务的优势与不足

1. 使用标准协议规范,如SOAP、WSDL、UDDI等。2. 松散耦合,实现的平台发生迁移时,只要调用接口不变,实现的任何变更对于调用者来说都是透明的。

3. 高度可集成能力,可与CORBA、DCOM和EJB进行互操作4. 安全机制方面,适应现有的大量安全模型及技术。

优势:

2006-3-14 67

1. Web服务的优势与不足

Web服务的不足主要体现在使用集中式服务发布和检索机制(UDDI服务器)。1. 单点故障;2. 易受到诸如DoS等非法攻击;3. UDDI性能瓶颈;4. Web服务的事务基本上都要在UDDI上进行,一些敏感的企业信息很容易被记录下来。

不足:

2006-3-14 68

1. Web服务的优势与不足

1. 利用集群技术和故障恢复技术解决单点故障,但是维护费用昂贵,同时过多的扩展设备可能出现的故障又会导致系统可靠性的不断降低;

2. 负载平衡策略虽然在一定程度上能够解决性能瓶颈问题,但不能从根本上解决集中式带来的弊端;

3. 增加UDDI操作入口站点会产生如更新、删除、撤销等不一致问题,且查询的分发和重定向会加重服务器的负担;

4. 制定统一的UDDI安全标准是非常必要的,但是其具体实施进展缓慢。

解决方案:

2006-3-14 69

2. P2P的优势与不足

1. 高度分布化的系统,可以根据不同的策略灵活部署资源;2. 能最大限度实现负载均衡;3. P2P上的对等节点高度自治性,每个对等节点既能提供服务又能接受服务;

4. P2P的核心特性之一是动态发现机制,即一种用于在动态网络中搜索和定位对等节点或资源的机制;

5. 利于普及网络边缘计算和边缘服务,这既可提高数据的访问速度,又能很好地利用现有存储空间;

6. 另外在容错方面也具有显著优势。

优势:

2006-3-14 70

2. P2P的优势与不足

1. 大多数现有的P2P系统只用来实现某一个单一类型的网络服务现状;

2. 使用不兼容技术导致的P2P系统之间互操作性问题;3. 如何针对不同的P2P网络服务特性去构建一个共同底层的问题;4. 如何利用当前互联网上关于数据描述和交换的开放协议,如XML、

SOAP、WSDL等来完善P2P服务的问题;5. P2P中的安全问题如加密、身份识别和认证、授权、恶意节点的识别和应对等;

6. 其他问题:如网络拓扑、网络服务质量、网络规模、查询性能等;

不足:

2006-3-14 71

2. P2P的优势与不足

(1) 改进查询、路由算法。如基于DHT的多关键字查询算法,利用Power-Law分布特性的查询算法,利用Small-World模型进行查询的方法等,这类方法在解决P2P系统互操作性问题方面的作用尚不明显;(2) 重新构建通用、统一、可互操作的平台来容纳任何种类的网络服务,如JXTA项目,但该项目在直接支持当前流行的以及未来的一些开放标准方面尚有欠缺;(3) 将P2P和现有的网络技术结合起来,如将P2P和多播结合起来改进流媒体的播放,将P2P和QoS结合起来改善网络的性能,将P2P和Active Network结合起来,利用其中的移动代码主动改进网络结构,决定最佳路由等,这类方法没有改变P2P系统只用来实现某一单一类型的网络服务的现状。

解决方案:

2006-3-14 72

3. P2P与Web服务的融合1.Web服务使用的开放标准能够较好地描述和完善P2P对等节点所提供的服务,使得P2P系统不在局限于只提供单一的网络服务;

2.Web服务注重提升异构平台、应用之间的互操作性,这将有助于提高P2P与非P2P系统之间以及P2P与P2P系统之间的互操作性;

3.Web服务商业解决方案已经广泛运用于电子商务等众多领域,其安全性和可靠性较高,运用Web服务的成功方案将会促进P2P系统在电子商务领域上的应用

2006-3-14 73

3. P2P与Web服务的融合

4.Web服务则可以利用P2P的离散化技术来提高UDDI的扩展性和灵活性;

5.Web服务用户可以共享非常丰富的P2P网络资源,促进其进一步发展;

6.利用P2P的普及计算能力和动态发现机制可以为Web服务提供更快速的服务发布、发现、绑定。

2006-3-14 74

对等节点间的SOAP消息通信

Web服务将SOAP作为首选的消息传输协议,因此在P2P环境下实现Web 服务的关键点是如何实现对等节点之间的SOAP消息通信,只有这样才有可能进一步在P2P平台上实现Web 服务的部署、发布、检索和绑定等功能。

Web服务将SOAP作为首选的消息传输协议,因此在P2P环境下实现Web 服务的关键点是如何实现对等节点之间的SOAP消息通信,只有这样才有可能进一步在P2P平台上实现Web 服务的部署、发布、检索和绑定等功能。

2006-3-14 75

对等节点间的SOAP消息通信

SOAP消息客户端实现模块:主要负责处理一些SOAP消息交换,包括SOAP请求、SOAP响应等,它通常与SOAP服务器(包括本地和远程SOAP服务器)进行交互,其中本地SOAP服务器为本地计算机创建和部署Web服务,并能向互联网上的其他用户提供自己的Web服务;远程SOAP服务器可以是互联网上的任何其他SOAP服务器。

2006-3-14 76

对等节点间的SOAP消息通信

工厂模式:主要负责实例化有大量共同接口的类,工厂模式可以根据所提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。在这里,工厂模式能实现自动调用P2P服务的本地实现或远程实现,这样客户端调用P2P服务时不必事先知道每次是要实例化哪一个服务实现,从而增强服务调用的透明性。

2006-3-14 77

对等节点间的SOAP消息通信

本地/远程实现:通常P2P服务的调用有对等组内调用和全球调用(Internet)之分,对于组内的调用可通过私有注册中心、JXTA组内广告、设置输入/输出管道以及绑定本地地址如URI等来实现,而对于全球调用则通过设置WSDL的binding元素来绑定全球地址如URL,然后利用SOAP-RPC来调用实现。在工厂模式的调度下,本地和远程实现分别与本地和远程SOAP服务器交互。

2006-3-14 78

对等节点间的SOAP消息通信

SOAP消息管道传输模块:管道是JXTA对等节点之间通信的虚拟通道,通过管道,对等节点可以穿越防火墙、NAT等设备障碍进行直接通信。SOAP消息管道传输模块通过建立一个管道服务将源节点的SOAP请求消息封装起来并在JXTA 网络中进行传输,目标节点在接收到该管道消息后就分离出该SOAP请求,并通过管道服务将SOAP响应消息传回给源节点,这样JXTA P2P网络就可以进行SOAP消息的处理。

2006-3-14 79

4. P2P平台上的Web服务组合

由于一般的Web服务不可能很复杂(这也是服务可重用的必要条件之一),因此需要按照一定的粒度进行Web服务的组合。同时,异构系统中运行在不同平台上的Web 服务可能是以不同的方式创建、用不同程序语言实现、由不同供应商提供,这样的Web服务需要根据特定的应用背景和需求进行合理的服务组合。

2006-3-14 80

4. P2P平台上的Web服务组合

Web服务组合大致可以分为两类:静态组合与动态组合。•在静态组合中,复合Web服务(我们把由基本Web服务组合而形成的新的Web服务称为复合Web服务)在设计阶段就被定义,组合过程对于服务请求者来说是透明的,服务请求者可以像调用基本Web服务那样调用复合Web服务。•动态组合指的是在运行时进行选择和调用所需Web服务,并将所需Web服务组合成为一个复合Web服务的过程。

2006-3-14 81

Web服务组合技术

到目前为止,出现的Web服务组合技术主要是采取与工作流模型相结合的方法。

•XLANG是微软BizTalk项目用于定义业务流程的语言,XLANG主要描述了一个角色收发信息的内容和顺序,以及整个系统中所有角色之间的交互,但是XLANG要求复合服务是静态组合的。•WSFL描述了如何组织或协调一系列的Web服务调用,使它们成为一个整体的工作流或业务流程。WSFL可以被认为是基于图论的过程建模方法,它既支持静态组合,也支持在Web服务注册中心内动态查找基本Web服务。•BPEL4WS是又一种指定业务流程和业务交互协议的语言,它吸取了WSFL与XLANG两者的长处,将WSFL基于图论的流程描述和XLANG基于结构化的构造过程结合在一起,力图成为Web服务合成的统一化标准。

2006-3-14 82

Web服务组合中的异构问题

Web 服务由不同的服务提供者提供,而每个服务提供者可能有它自己独立的商务规则,因此异构问题广泛地存在于Web 服务组合中,限制了Web 服务组合的自动性,降低了服务发现的准确性、按需替换服务的有效性及服务组合的效率。遵照W3C 的Web 服务定义, Web 服务组合中存在的异构问题可分成如下三类:•Web服务描述信息的语义异构,该异构阻碍了Web 服务按需最优查找;•语义等价的Web 服务的操作异构,该异构阻碍了Web 服务动态绑定或按需替换;•Web 服务组合中不同Web 服务之间的数据流异构,该异构限制了Web 服务组合的集成度。

2006-3-14 83

解决Web服务组合中的异构问题

为了解决Web服务组合中的异构问题,解决方法之一就是增加Web服务描述的语义信息,即需要对服务进行一定的语义描述。为此,研究者们提出了专门针对服务语义的OWL-S。•OWL-S包含一整套本体,提供描述Web服务的词汇表,描述服务的语义,能够根据服务的要求(Requirements)和效果(Effects)进行推理(Inference)。•OWL-S使得Web服务具备机器可理解性和易用性,从而支持自动地、动态地Web服务发现、执行、组合和互操作。• OWL-S的知识本体由三部分组成:服务轮廓(Service Profile)、服务模型(Service Model)、服务基点(Service Grounding),它们都是关于服务的最本质的描述,分别描述服务是做什么的,服务是如何工作的,以及服务是如何被访问的。服务轮廓是对服务的精确描述并提供给服务注册中心;服务模型是对服务的输入、输出、前提、效果(IOPE)的描述过程,使服务能够进行规划、动态组合以及交互操作;服务基点是描述如何获取服务的细节,这些细节包括协议、消息格式、序列化、传输以及寻址。

2006-3-14 84

Bye-Bye