Tapestry算法精讲

合集下载

第九章P2P数据管理系统

第九章P2P数据管理系统

第九章 P2P数据管理系统
P2P系统的体系结构
P2P系统的体系结构分为三种:集中式、分布式和混合式。 (1) 集中式P2P网络
在集中式P2P网络中,维护着一个全局的目录服务器,它负责记录节 点的共享信息并回答对于这些信息的查询请求。提供者节点把共享信 息发布到目录服务器上,消费者节点首先在目录服务器上查找所需资 源的准确节点位置,然后连接节点完成数据交换。 集中式P2P网络与传统的client/server模式下的集中式系统虽然有相 似之处(都维护着一个中心服务器)但两者有着本质的区别:传统的 集中式系统的中心服务器不仅保存资源的目录信息,更为关键的是保 存全部的共享资源,客户端只能连接中心服务器并下载所需要的数据; 而集中式P2P网络的中心服务器只保留共享信息的目录,所有共享信 息依然保存在局部节点上。消费者节点在中心服务器上查找到资源提 供者节点后,完成节点之间的连接,并进行数据交换。
第九章 P2P数据管理系统
P2P系统的体系结构
P2P系统的体系结构分为三种:集中式、分布式和混合式。 (1) 集中式P2P网络
第一代P2P网络均采用集中式结构,其中典型的代表是Napster。 Napster是一种可以在网络中下载自己想要的MP3音乐文件的软 件。安装了Napster系统的机器将成为一台服务器,可为其它用 户提供音乐下载服务。Napster系统本身并不存储和提供MP3文 件下载,它实际上提供的是整个网络中包含的MP3音乐文件 “目录”,即MP3音乐文件的地址,这个目录存放在一个集中 的服务器上,而MP3音乐文件本身则分布在网络中的每一台机 器上。使用者在目录服务器上找到想要的MP3音乐文件的位置, 然后到指定的位置完成下载。2002年,Napster由于违反了知识 产权保护法而被迫关闭。

Kademlia的研究与实现

Kademlia的研究与实现
2 Kademlia 原理
在 Kademlia 网络中,每个节点都是以节点标识符(Node ID)来识别。Kademlia 算法是以两节点间的“距离”为基础。
每个 Kademlia 节点都有 160bit 的节点 ID。每台机器在加 入系统时选择 1 个随机的 160bit 值。节点发送的每条消息包含 它的节点 ID,同时允许接收者记录下发送者的存在信息。Key 也同样是 160bit 的标识符。为了发布和寻找<Key,Value>对, Kademlia 定义了两个标识符之间的距离:给定标识符 x 和 y,它 们之间的距离为标识符之间的位“异或”(XOR)的结果,d(x,y)= x������y。如图 1 所示为一个 4bit 空间中计算右起第八个节点与其他 节点距离的例子。由图 1 可见,在同一个子树上的节点距离近。
从图中可以看出,两种模型第二次之后的查找延迟基本相似, 这是与 DHT 的基本原理相类似。当 P2P 结构进行完第一次查 找之后,后面查找的延迟相对于第一次会大大减少。而第一次 查找延迟,Pastry 模型所耗费的时间大于 Kademlia 模型。从而 显示了 Kademlia 模型的查找优势。
图 4 查找成功率比较
Research and Implementation of Kademlia
XIE Jin1,NI Jin2 (1. Center of Computing and Experimenting, South-Central University for Nationalities, Wuhan 430074, China;
从表 1 和表 2 可以看出,Kademlia 整体性能相对较好。在 上述的算法中,Kademlia 的应用最为普遍,目前主流的 P2P 软

基于深度学习的内容推荐算法研究综述

基于深度学习的内容推荐算法研究综述

协同过滤推荐可以分为基于近邻和基于模型的推荐
方 法 ,是 利 用 用 户 物 品 交 互 数 据(比 如 评 分 数 据)实
现 推 荐(预 测)的 推 荐 方 法 ;混 合 推 荐 是 通 过 组 合 不
同的模型弥补模型之间的缺点来提高整个系统推荐
性 能 的 一 种 方 法[16]。 本 节 主 要 从 推 荐 的 算 法 思 路 、
0 概述
信息网络的迅速发展使得数据规模呈现爆发式
增 长 ,各 种 应 用 软 件(如 电 子 商 务 平 台 等)对 数 据 的 依 赖 性 越 来 越 强[1]。 但 是 ,数 据 的 增 量 超 过 了 平 台 或 系 统 的 承 受 范 围 ,这 种 现 象 被 称 为“ 信 息 过 载 ”问
近 年 来 ,应 用 软 件 的 数 量 呈 现 爆 发 式 增 长 ,滋 生 了越来越多的多源异构数据。这些数据来源多样、 结 构 复 杂 ,传 统 机 器 学 习 方 法 无 法 有 效 地 提 取 其 中 的 表 征 。 面 临 数 据 带 来 的 一 系 列 问 题 ,深 度 学 习 对 多源异构数据表征的充分学习获得了广泛的关注, 迅速成为研究热点之一。深度学习作为前沿技术, 泛指端到端的非线性可微模型。其优势主要体现在 非 线 性 转 换 、深 层 特 征 学 习 、高 弹 性 及 可 用 性 等 3 个 方 面 。 在 学 术 研 究 层 面 ,深 度 学 习 的 快 速 发 展 激 发 了 学 者 对 推 荐 领 域 学 术 研 究 的 兴 趣 ,逐 渐 出 现 了 Wide&Deep[9]、CDL[10]、AutoRec[11]等 经 典 的 深 度 推 荐 模 型 。 在 工 业 应 用 层 面 ,基 于 深 度 学 习 应 用 的 推 荐 算 法 不 断 改 进 与 创 新[12-14],为 各 领 域 的 产 品 提 供 商业化服务。

【计算机工程与设计】_资源匹配_期刊发文热词逐年推荐_20140727

【计算机工程与设计】_资源匹配_期刊发文热词逐年推荐_20140727

科研热词 面向服务架构 通信协议 逐位匹配 路由选择 路由跳数 覆盖网 网格 网关程序 结构化对等网络 系统集成 简单对象访问协议 程序优化 移动agent 界标节点 用户兴趣 状态转换图 热点 查询扩展 最小代价路径 智能家居终端 时延 底层拓扑 并行编程模式 并行 嵌入式系统 容错路由表 大学资源计划 多核并行 多核 基于案例的推理方法 分组 内容寻址网络 关联规则 企业服务总线 任务调度器 主题提取 串口通信 中文分词 个性化 web services tbb线程构建模块 tapestry系统 openmp opendss n皇后算法 chord协议
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2010年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
2012年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
科研热词 高精确度 非支配排序遗传算法 连通区域检测 资源配置 调度算法 访问模式 虚拟机关联 虚拟化 结构化网络 特征匹配 本体 插值运算 性能表现 对等网络 对应点筛选及匹配 多目标优化 图像配准 兴趣 信息检索 仿射变换 云计算
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4 5 6 7 8 9 10

Tapestry5最新中文教程

Tapestry5最新中文教程

Tapestry for Nonbelievers作者Renat Zubairov & Igor Drobiazko译者沙晓兰发布于 2008年7月2日下午9时30分社区Java主题Web框架引言Apache Tapestry是一个使用Java语言创建web应用的面向组件的开发框架。

Tapestry应用建立在根据组件构建的页面的基础上。

这个框架能够提供输入验证(input validation)、本地化/国际化(localization/internationalization)、状态/持续性(state/persitency)管理、URL构建/参数映射(parameter mapping)等功能。

为什么Tapestry值得推荐呢?一部分原因是:∙它便于终端用户使用。

Tapestry在设计最初就考虑到了应用的安全和伸缩性,有内嵌的Ajax、输入验证、国际化以及异常报告功能。

∙它便于开发人员使用。

Tapestry独一无二的类重加载(class-reloading)特性大大地推动了开发人员的开发效率。

借助于 Tapestry,对源代码的修改立马就可以看到结果,不需要重新部署和启动应用!它的异常报告也极为具体,甚至提供可能的修正建议。

∙它便于web设计者使用。

Tapesry页面是有效的HTML(或XHTML)文件!你可以用自己喜欢的浏览器打开这些页面。

∙它封装了最佳实践:REST风格的URL、可降解的JavaScript、没有XML 的配置等等。

∙它支持与Hibernate、Spring、Seam、Acegi等框架的集成。

本文中,我们会向大家介绍Tapestry框架版本5。

我们将利用Tapestry 5开发一个简单的具有创建/读/更新/删除功能的应用,在创建这个应用的过程中,你将体会到Tapestry带来的开发效率的提升。

我们会从多方面来讲解 Tapestry 应用,比如应用的页面导航(page navigation)、依赖性(dependency)和资源注入(resource injection)、用户输入验证(input validation)和应用状态管理(state management)等等。

P2P网络的拓扑结构

P2P网络的拓扑结构

P2P网络的拓扑结构拓扑结构是指分布式系统中各个计算单元之间的物理或逻辑的互联关系,结点之间的拓扑结构一直是确定系统类型的重要依据。

目前互联网络中广泛使用集中式、层次式等拓扑结构。

Internet本身是世界上最大的非集中式的互联网络,但是九十年代所建立的一些网络应用系统却是完全的集中式的系统,许多Web应用都是运行在集中式的服务器系统上。

集中式拓扑结构系统目前面临着过量存储负载、DOS(Denial of S ervice,拒绝服务)攻击,网络带宽限制等一些难以解决的问题。

Peer-to-Peer (简称P2P) 系统主要采用非集中式的拓扑结构,一般来说不存在上述这些难题。

根据结构关系可以将P2P系统细分为四种拓扑形式:•中心化拓扑(Centralized Topology);•全分布式非结构化拓扑(Decentralized Unstructured Topology);•全分布式结构化拓扑(Decentralized Structured Topology,也称作DHT网络);•半分布式拓扑(Partially Decentralized Topology)。

其中,中心化拓扑最大的优点是维护简单,资源发现效率高。

由于资源的发现依赖中心化的目录系统,发现算法灵活高效并能够实现复杂查询。

最大的问题与传统客户机/服务器结构类似,容易造成单点故障,访问的“热点”现象和版权纠纷等相关问题,这是第一代P2P网络采用的结构模式,经典案例就是著名的MP 3共享软件Napster[1].Napster是最早出现的P2P系统之一,并在短期内迅速成长起来。

它实质上并非是纯粹的P2P系统,而是通过一个中央索引服务器保存所有Napster用户上传的音乐文件索引和存放位置的信息。

它的工作原理如图1所示。

当某个用户需要某个音乐文件时,首先连接到Napster中央索引服务器,在服务器上进行检索,服务器返回存有该文件的用户信息,再由请求者直接连到文件的所有者传输文件。

chordIntro


2)多节点的加入 每个节点在后台周期性的进行“稳定操作” (stabilization),询问后继节点的前序节点是不是 自己,以更新后继节点以及路由表中的表项 join(n′) :n加入一个Chord环,已知其中任一个 节点n′ Stabilize(): n查询其后继节点的前序节点P来决 定P是否应该是n的后续节点,也就是说当p不是n本身 时,说明p是新加入的,此时将n的后继节点设置为p Notify(n′): n′通知n它的存在,若此时n没有前 序节点或,n′比n现有的前序节点更加靠近n,则n将 其设置为前序节点 Fix_fingers(): 修改路由表
5. 失效节点的处理
当节点n失效时,finger table中包含n的节点必须查 找n的后继
失效恢复的关键在于维护正确的后继指针
每个Chord节点都为在环上距离最近的r个后继维护一 个“successor-list”(后继列表)
如果节点n发现它的后继失效,它将从successor-list 中取出第一个活动后继来替代
Chord的查找方法——依据路由表查找
在某个节点上查找资源时,首先判断其后继节点是不是就持有 该资源,若没有则直接从该节点的路由表从最远处开始查找, 看哪一项离持有资源的节点最近(发现后跳转),并如此迭代。 例如:在节点N8寻找K54这个资源
1)在N8上查找后继节点为N14, K54并不符合54∈(8; 14]的要求 2)在N8的路由表上由远及近查找符 合这个要求的表项
2. Chord环 Chord建立在一致性哈希算法基础之上 一致性哈希把Node和Key映射到相同的空间,并认 为这些整数首尾相连形成一个环 Node(机器的IP地址和Port)与Key(资源标识) 都被哈希到Chord环上,假定整个P2P网络的状态是 一个虚拟的环 为了保证哈希的非重复性,Chord 选择SHA-1作为哈希函数,SHA-1会产 生一个2160的空间,每项为一个160位 的大整数,并在Chord环上按大小顺 时针排列

梅塞尔 质数个数 算法

梅塞尔质数个数算法Mersenne prime numbers are a fascinating topic in the field of mathematics, known for their unique properties and rare occurrence. These prime numbers are of the form 2^n - 1, where n is a prime number itself. The search for Mersenne primes has captivated mathematicians for centuries, leading to the development of various algorithms to identify and verify them. One of the most famous algorithms for finding Mersenne primes is the Lucas-Lehmer primality test, which efficiently determines the primality of these special numbers.梅塞尔质数是数学领域的一个迷人话题,以其独特的性质和罕见的出现而闻名。

这些质数以2^n - 1的形式存在,其中n本身是一个质数。

寻找梅塞尔质数已经吸引了数学家们几个世纪,导致了各种算法的发展来识别和验证它们。

找到梅塞尔质数的最著名算法之一是Lucas-Lehmer素性测试,它有效地确定这些特殊数的素性。

The excitement of discovering a new Mersenne prime is akin to finding a rare gem in a vast field. These prime numbers have a mystical allure that draws mathematicians and enthusiasts alike tochase after the next elusive Mersenne prime. The hunt for these prime numbers is not just a quest for mathematical validation but also a journey that ignites passion and curiosity within us. Each new Mersenne prime uncovered is a testament to human ingenuity and the beauty of mathematical patterns waiting to be revealed.发现一个新的梅塞尔质数的兴奋感就像在广阔的领域中找到一颗稀有的宝石。

Tapestry学习笔记

Tapestry学习笔记(1)1.什么是面向组件开发方式Tapestry最大的特点是其颠覆性的开发方式。

所谓颠覆,是指Tapestry的开发方式不光与传统的开发方式截然不同,而且还是在逐渐取代传统的开发方式。

在web表现层框架中有两大开发方式,一种是传统的面向元素开发方式,这种开发方式也是最早出现的开发方式。

绝大多数框架都是使用面向元素开发方式,比如 Structs,WebWork,SpringMVC等。

在面向组件开发方式出现的原因正是为了弥补面向元素开发方式中种种不足之处。

因此,我们可以认为面向组件的开发方式比面向元素的开发方式更加先进。

目前,面向组件的Web表现层框架有三种:Tapestry,JSF,Wicket。

2.传统的面向元素开发方式在Java语言中,我们都是使用Java Servlet API来创建Web应用程序。

Java Servlet API是SUN 公司制定的标准。

Servlet是一个Java类,它的作用是接收客户端发送过来的请求,然后返回一个响应,最后通过客户端浏览器显示出一个HTML页面。

Java Servlet API为Servlet定义了一些基础类,例如HttpServletRequest,该对象装载了客户端发送过来的请求,并允许Servlet获取URL中携带的质询参数。

Servlet在Servlet容器中运行,Servlet容器是HTTP协议与Java Servlet API 之间的桥梁。

Servlet容器负责创建Servlet实例并对其进行初始化。

很多软件都提供了Servlet容器,其中有些软件的全部功能只是为了提供Servlet容器,例如,Apache Tomcat,Resin,Jetty等,而在有些软件中,Servlet 容器可能只是一个庞大应用程序服务器中的一部分,例如,BEA WebLogic,IBM WebSphere 或开源的JBoss 应用程序服务器。

CAN算法的分析与仿真

CAN算法的分析与仿真组长:SC06023108 顾菁华组员:SC06023103 徐其SC06023105 周楠SC06023106 丁晟SC06023107 李理敏小组分工组长顾菁华 SC06023108 CAN算法C语言实现以及负载均衡的优化组员周楠 SC06023105 CAN原理研究以及结构分析丁晟 SC06023106 CAN寻路性能优化李理敏 SC06023107 CAN算法负载均衡问题研究徐其 SC06023103 基于CAN的应用层组播研究摘要内容寻址网络(CAN)是一种用于结构化对等网络P2P的分布式哈希查找系统,可以在Internet规模的大型对等网络上提供类似哈希表的功能,具有可扩展、容错和完全自组织等特点。

本文介绍了CAN的基本结构和工作原理,对其关键技术寻路性能、负载均衡作了优化和改进。

在VC++6.0中实现了CAN的基本功能、负载均衡优化。

最后,介绍了基于CAN 算法的应用层组播。

【关键字】 CAN,寻路性能,负载均衡,组播目录摘要 (I)目录 (III)1. 概述 (1)1.1 CAN基础结构 (1)1.1.1 数据模型 (1)1.1.2 接入模型 (2)1.1.3 CAN路由 (2)1.2 CAN构造 (3)1.2.1 节点插入 (4)1.2.2 节点离开 (4)1.2.3 节点失效 (4)2. 寻路性能优化 (6)2.1 多维坐标空间 (6)2.2 多实体(reality)结构 (6)2.3 过载坐标区 (7)2.4 更好的CAN路由metrics (7)2.5 最大面积寻路 (8)2.6 修改邻居表沿对角线寻路 (8)2.7 层次化结构 (8)2.8 多个哈希函数 (9)3. 负载均衡 (10)3.1 多播发现(MD)算法: (10)3.2 梯度法(GR) (10)3.3 分布式堆 (11)3.3.1 堆定义 (11)3.3.2 分布式堆(Distributed Heap method)算法 (12)4. CAN基本操作的C语言实现 (14)4.1 CAN算法的基本操作 (14)4.2 对CAN算法负载均衡的优化 (18)5. CAN在应用层组播中的应用 (21)5.1 组播组结构 (21)5.2 组播消息传递机制 (21)1.概述对等网络(Peer-to-Peer Network,P2P)的核心是P2P 路由算法,算法的优劣直接关系到P2P 系统的性能和可扩展性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P2P路由算法Tapestry及其改进王祖荣,刘清波(长江大学大学计算机学院,434023)摘要:由于Peer-to-peer系统在文件共享方面有着巨大的应用前景,基于分布式哈希表(Distributed Hash Table)的结构化P2P网络得到了广泛的关注,P2P技术也日趋成熟,各国在分布式路由算法方面也进行了大量的工作,提出了各种可扩展性很好的分布式路由算法,例如:Chord,Pastry,CAN,Tapestry等等。

本文提出的P2P网络的Tapestry路由算法并对该算法进行了改进,提高搜索文件和路由的效率,同时,也对P2P网络的健壮性和扩展性能以加强。

关键词: P2P; Tapestry; 路由算法中图分类号:TP393 文献标码:B Routing algorithm improvement about Tapestry for P2PWang Zurong,Liu QingboAbstract: Because the Peer-to-peer net system has the huge application prospect in the file sharing aspect, based on Distributional Hasche Table the structurized P2P network obtained the widespread attention, the P2P technology has been also mature day by day, various countries have also carried on the massive work in the distributional routing algorithm aspect, proposed each kind of extendibility very good distributional routing algorithm, for example: Chord, Pastry, CAN, Tapestry and so on. This article proposed P2P the network Tapestry routing algorithm and has made the improvement to this algorithm, enhances the search document and route's efficiency, simultaneously, also strengthens to the P2P network's toughness and the expansion performance. Keywords: P2P;Tapestry; Routing Algorithm1.引言URL 是目前在Web 上使用最普遍的信息定位策略,DNS 则提供了一套层次式的查找机制,一般来说在P2P 共享应用中所采用的检索方式是采用关键字来查询自己所需的信息资源,同时人们也期望能够将数据资源的索引信息存放在系统中的每一个节点上而不是像Napster 那样存储在中心服务器上。

在典型的P2P 网络(图1)中数据资源分布在各个独立的节点上,如何高效地索引、查找、定位以及访问这些数据信息资源是一个需要关注的重要问题,某种意义上说也就是网络路由算法的问题。

路由机制是指节点之间通信的消息传递路径,合适的路由机制可以充分的利用网络带宽资源并使系统具有很好的容错性、可扩放性,目前很多系统中的路由机制都是和这些系统的逻辑拓扑结构紧密相关的。

在数据的访问过程中则期望能够采用流水、并行或者选择传输路径的方式来加快数据的访问速度。

一个好的P2P路由算法必须具备以下几个特点:(1)高可扩展性:每个接点的下一连接接点IP列表要小。

(2)高效:消息传递平均延时要小。

(3)高可用性:每两个接点之间的不同通讯路径要多。

下面介绍基于Tapestry的P2P路由算法以及改进算法基于ospf的P2P路由算法。

2.基于Tapestry的P2P路由算法描述Tapestry是UC Berkeley提出的一种新型的P2P网络定位和路由算法。

该算法可以对消息进行与位置无关的路由,把查询消息传递到最近的存储有目标对象拷贝的节点。

Tapestry具有自组织、容错和负载平衡等特点。

每个Tapestry 节点只需维护O(logN)大小的路由表信息,路由最多在O(logN)跳数内完成。

Tapestry从一个标识符空间中为每个节点随机分配一个节点标识符nodeID,对象也从同一个标识符空间中分配一个全局唯一标识符GUID(globally unique identifier)。

Tapestry使用SHA-1来产生标识符,使得nodeID和GUID均匀分布在标识符空间中。

为了讨论问题的方便,用N id来表示节点N的标识符,用O G表示对象O的标识符。

Tapestry目前使用160比特的标识符空间,标识符用一个全局统一的进制表示(例如使用16进制,则标识符是一个40位的数字),所有的节点依据标识符自组织成一个重叠网络。

Tapestry动态地把每个标识符G映射到当前系统中一个节点上,该节点称为G的根节点,表示为G R。

如果某节点的N id=G,则这个节点就是G的根节点。

为了转发查询消息,每个节点需要维护一个邻居映射表,每个表项包括一个邻居节点的标识符和IP地址。

往G R 路由时,消息将沿着邻居指针向节点标识符在标识符空间中更接近G的节点转发(例如,匹配更大的前缀)。

Tapestry采用的基本查找和路由机制:当一条查找消息到达传递过程中的第n个节点时,该节点和目的节点的共同前缀长度至少大于n。

为了进行转发,该节点将查找邻居映射表的第n+1级中和目的标识符下一数位相匹配的邻居节点。

转发过程将在每个节点中依次进行直到到达目的节点。

这种方法可以保证路由至多经过log b N个节点就可以到达目的节点,这里N是节点标识符名字空间的大小,而b是标识符使用的基数。

同样,由于每个节点的邻居映射表的每个级别只需要保存b个表项,因此,邻居映射表的空间为b log b N。

Tapestry中的每个节点都保存有邻居映射表。

邻居映射表可以用于把消息按照目的地址一位一位地向前传递,比如从4***=>42**98=>42A*=>目的节点42AD(这里*表示通配符)。

这种方式类似于IP分组转发过程中的最长前缀匹配。

节点N的邻居映射表分为多个级别,每个级别包含的邻居节点的数量等于标识符表示法的基数,而每个级别中邻居节点标识符和本节点标识符的相同前缀都比前一级别多一个数位。

也就是说,第j级邻居表的第i项是标识符以prefix(N, j-1) + “i”为前缀而且离当前节点最近的邻居节点。

例如,节点325AE 的邻居映射表中第4级第9项是系统中标识符以325 + “9” =3259为前缀的某个节点。

图2给出了一个节点的邻居指针实例,从图中可以看到第一级的邻居节点标识和本节点标识没有共同前缀,而第二级的邻居节点标识都以4开头,即和本节点标识具有相同的一个数位的前缀Tapestry中的节点在共享数据时被称为服务器,请求数据时被称为客户,转发消息时被称为路由器。

也就是说每个节点可以同时具有客户、服务器和路由器的功能。

服务器S通过向对象O(GUID为O G)的根节点O R定期的发送消息来报告S保存有对象O。

在这条发布路径上的每个节点都保存关于这个对象O的位置信息指针<O G, S>,这里的位置信息只是一个指向S的指针,而并不是对象O的拷贝。

当多个都存有同一对象拷贝的服务器分别向根结点发布消息时,路径上的每个节点按各个服务器离自己的网络时延递增的顺序保存这些位置指针列表。

Tapestry节点N在加入Tapestry网络之前,也需要知道一个已经在网络中的节点G。

然后N通过G发出路由自己的节点ID的请求,根据经过的节点的对应的邻居节点表构造自己的邻居节点表。

构造过程中还需要进行一些优化工作。

构造完自己的数据结构后,节点N 将通知网络中的其他节点自己已经加入网络。

通知只针对在N的邻居映射表中的主邻居节点和二级邻居节点进行。

这时,节点N上的资源在被检索,或者节点N在其他节点去检索时的效率就会降低,随着节点数量的不断增加,网络带宽等其他有限资源的不堪重负可能导致网络的不稳定。

3.算法的改进节点N在网络中查询其他节点过程中,在转发查询消息的时候,将每个节点需要维护一个邻居映射表中的内容进行改进,除了每个表项包括一个邻居节点的标识符和IP地址外,还可以对其他节点的连接方式进行改进,进行泛洪方式将连接转到下一节点N+1或者往在向N+1节点连接过程中,可消息将沿着邻居指针向节点标识符在标识符空间中更接近G的节点转发。

这样对这两种方法进行有效的控制来保证算法的可扩展,可用性。

下面对这两种方法的优先级进行说明。

当需要定位一个对象O时,客户向对象O的根节点发出查询消息,查询消息转发路径上的每个节点都检查自己是否存有对象O的位置指针,并且在连接O过程中对查询O节点指针节点的数量要不能太大以免节点间的查询进入循环状态和设置一定时间的TTL保证检索过程的有效。

在连接过程中,如果某个节点有O节点的连接指针,返回到这个节点,并在路由映射表中记录该信息并直接把查询消息转发个服务器S,这时,对连接的优先级设置为最短路径优先;否则,在TTL结束时返回一个信息设置显示不可达。

并采用泛洪方式对拥有连接O的指针的节点进行查询,返回信息。

每个Tapestry 节点只需维护O(log N)大小的路由表信息,路由最多在O(log N)跳数内完成。

图3图3给出了Tapestry中一个查询消息转发的例子。

图中节点标识符的基数是4,查询消息从5230发出,目的节点是42AD。

从两个临近节点向同一个目的节点O R发出两条消息时,它们的转发路径很快就会交叉,这是因为路由过程的每一步都是使得下一个节点标识符和O R具有更长的相同前缀;到根结点的路径只是目的标识符的函数,而不是消息发起节点标识符的函数;而且,路由过程中的下一跳邻居节点是根据网络距离选择的,因而客户离服务器越近,那么查询路径碰到发布路径的速度就越快。

也就是说,查询消息会被转发到最近的服务器上。

而且,在新增加节点的情况下,对新增节点的查询所采用的优先级选择方式有效的解决了上面的不足。

4.总结本文针对P2P网络的Tapestry路由算法搜索问题进行研究,提出了对算法的改进,它将网络节点的映射表中添加路由选择优先级,从而实现高效搜索.为了提高路径选择效率和在新增加节点下原Tapestry所引起网络可能不稳定的特点,我们对连接采用了泛洪广播,在理论上,提高了算法的可扩展性.参考文献[1] Daswani, Neil, Garcia-Molina, Hector, and Yang, Beverly. Open Problems in Data-Sharing Peer-to-PeerSystems. In: Proceedings of the 9th International Conference on Database Theory (ICDT). Siena, Italy: 2003.[2] Z hao, B., Kubiatowicz, J., and Joseph, A. Tapestry: An infrastructure for fault-tolerant wide-area locationand routing. Technical Report UCB/CSD-01-1141, Computer Science Division, U. C. Berkeley . 2001[3] 孙珊珊.P2P网络路由酸法的研究及Chord协议算法的改进[D]工学硕士,吉林大学,2007.[4] 杨斌,孟波.P2P经典路由算法的改进[Z],计算机工程与设计,2004.02.[5] 梁妍; 刘心松; 邱元杰.一种DHT与洪泛相结合的P2P资源定位模型计算机工程与学科 2008.07[6] 刘华春. P2P网络的分类以及关键技术分析[J].微计算机信息, 2008 V ol.22 No.15 P112-114本文作者创新点:提出P2P网络的Tapestry路由算法将网络节点的映射表中添加路由选择优先级方案。

相关文档
最新文档