时间:2024-07-28
杨地委,孙淑霞,崔金国
(成都理工大学信息工程学院, 成都610059)
在FTP和HTTP协议中,每个下载者从FTP或HTTP服务器处下载自己所需要的文件,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器的处理能力和带宽的限制,下载速度会急剧下降,有的用户根本访问不了服务器。采用应用层组播技术的单源数据传输系统是面向单源的实时应用,加入了用户下载数据之间的交流,提高了下载的速度和效率。
应用层组播技术的研究作为覆盖网络研究的一个方向,是国际上刚刚兴起的研究热点,很多大学和研究院都在进行这方面的研究。目前在Peerto-Peer(P2P)网络上实现的应用层组播方案主要有3种:CAN Multicast、Scribe和Bayeux。它们都是在基于动态哈希路由的P2P网络上实现的,其中CAN Multicast是在CAN之上实现的,Scribe是在Pastry上实现的,Bayeux是在Tapestry上实现的。这几种方案都充分利用了P2P网络的路由机制。因此,只需增加少量的模块就可以实现多播功能。与原先的P2P网络相比,只增加少量的开销就实现了多播功能,同时继承了P2P网络的支持大规模和支持成员动态变化的特性。可用于分布式仿真、多方实时游戏和大规模协作应用等。但这3种方案对于应用层多播的模型、性能分析和性能优化都没有进行研究。
大规模单源应用层组播树方案中,最具有代表性的就是NICE和Zigzag应用层组播树构建方案。两者的思路都是“分层”、“分群”,成员只与少量固定数目的节点联系。NICE的维护管理具有分布性和自治性,节点的维护负载较轻,且节点的退出只影响局部节点,不影响根节点。缺点是层次越高的节点负载越重,如最高层的节点的度数达到logN,当系统规模很大时,这会成为系统的瓶颈。
采用应用层组播技术的单源数据传输系统(SSTS,Single Source Transfer System)由一个数据源服务器和若干客户端组成,是在应用层建立组播,在客户机间复制和转发数据,数据源服务器负责提供组播数据的来源,每个客户端经过一定的算法加入组播树后进行文件的传输。该系统是一种改进了的结构化的P2P系统,具有结构化P2P系统寻址方便,易于定位的特点,同时也具有BT等常见的P2P文件共享系统的多节点分片下载的特点,可以方便快捷地进行文件传输,用户可以在下载文件的同时与其他用户交互,不仅解决了多用户下载文件时对服务器带来的压力,也提高了数据传输的速度和效率。该系统的主要算法和模型包括组播树的构造与维护,备份区和缓冲区的设计及分片传输算法的设计。
整个SSTS中的节点具有高动态性,随时都可能有节点失效或退出,由于应用层的组播系统需要系统节点来转发数据,所以节点的突然失效会使组播服务中断,其次应用层组播系统通过节点间的相互传递发送数据,组播树构建另一个要点就是尽量减少数据在网络中的传输路径,以减少数据到达接收者的延迟和网络负荷。本文设计的组播树构造采用4叉树结构,每个节点至多只有4棵子树,4叉树的子树有左右之分,次序不能颠倒。
当节点P运行SSTS以后,服务器根据节点资源列表中读出该节点的IP地址和端口号,判断其网络位置,然后从节点资源列表中找出该节点网络位置最近的节点,判断该节点的直接子节点个数是否已经达到上限,如果没有达到上限,则把该节点做为P节点的父节点;如果直接子节点已经达到上限,则从节点资源列表中的其它节点中寻找离该节点最近的节点,并重复以上判断过程,直到P找到合适的父节点。新加入的节点首先向候选父节点发送请求加入的报文,在得到同意后加入并更新节点资源列表。如果此节点为父节点的左子节点就向父节点发送请求报文,获取父节点的备份区数据。用于将来父节点离开时,其左子节点直接切换到父节点上。
在组播树形成以后,必然会有节点由于某种原因要求退出组播,但是节点的离开不能影响组播树的正常运作。如果节点没有任何子节点,那么只需要通知父节点删除该节点。如果节点有一个或多个子节点,那么节点离开后其左子节点代替该节点。用以下算法来处理:
(1)每个节点的离开都会向其父节点发送OUT标识,其子节点立即向其祖父节点发送加入请求报文,在得到同意后加入;(2)每个节点在同一时间内只允许一个子节点的加入,如果同时有多个节点的加入,由于带宽资源的限制,将其一个或多个节点交给子节点来处理;(3)在切换过程中,节点不接受其他节点的加入请求;(4)在切换过程中,如果发送失败,向上层报错,节点可重新执行加入组播树。
算法的具体过程如图1,节点B离开组播树后,它的子节点F、G、H、I立即向其祖父节点A发送加入请求,而节点A的带宽只能接收一个节点,此时有左子节点加入,其他节点加入由F节点接收。
图1 节点B离开导致的切换
该算法保证子节点在父节点离开后能迅速建立到祖父节点中,而且左子节点保存了父节点的备份区数据,避免了再次传数据造成的带宽限制,也保证组播树的稳定,从而提高下载数据的效率。
备份区和缓冲区的设计影响到系统的整体性能,为了获得更高的数据传输和实时性能,备份区和缓冲区总计大小设计为16 M,备份区为4 M,缓冲区12 M。需下载文件逻辑上分成相同的4块区域,每个子家族的备份区保存各自不同的数据区域。例如一个需下载文件为800 M,第1子家族保存0 M~200 M,第2子家族201 M~400 M,依此类推。
每个节点的备份区保存数据4个piece,每个节点的左子节点保存父节点的备份区数据。每个节点将下载到的数据先保存在缓冲区中,在达到一定的数值时再将数据写入硬盘的文件中。每个节点请求数据时,先在缓冲区中寻找,若缓冲区中不存在所请求的数据,则根据分片传输算法把请求到的数据先写入缓冲区中。
需下载文件在逻辑上被划分为大小相同的块,称为piece,每个piece的大小为1 M。每个piece分成相同的slice(256 k),节点与节点以slice为单位进行传输。
当一个文件要加入SSTS时,先进行文件分片操作,并产生顺序的验证文件,把文件分成4个相同的区域,根节点的4个子节点分别存储各自的数据区域,以下各子节点的备份区存储数据递推。
在SSTS中,每个节点都存储节点资源列表,在节点资源列表中保存着组播树的结构和每个节点所保存的数据及验证文件。数据data存放在data的父节点和其左子节点上。
节点P查找数据d时,根据验证文件查找数据d所在区域,然后遍历一下组播树,但是每前进一步时,都在叶子节点查找需要的文件。如果没有,继续查找,如果找到需要的文件,就可以开始文件的传输,同时继续查找d的后继节点和其它备份节点。如果找不到就到服务器直接下载。
(1)服务处理能力。每个节点保存4个piece,对于服务器的处理能力,当前的计算机一般都有足够的内存和处理能力。(2)组播树的构造。各个节点都具有TCP/IP网络通信的能力,因此只要节点能与互联网进行连接,就可以方便地加入该系统。(3)网络延迟。文件下载时,在SSTS中是从多个缓存节点同时向请求节点分片传送文件,是多对一传输,避免了网络上的延迟,从而提高了数据传输的速度。(4)扩展能力。该系统是典型的拓扑结构,并且引入了P2P技术,是一种结构化的P2P系统,其中,因为每个节点都保存其父节点的备份区数据,即使某个节点突然离开系统,也不会造成常见的文件丢失现象。因此,本系统具有很高的扩展能力。
从以上分析可以看出,SSTS的健壮性好,避免节点突然离开造成文件丢失的可能;同时文件下载的传输速度得到很大的提高,使得系统响应时间变小,更方便用户的使用。节点的加入和离开与查找文件的速度有了明显的提高。由此可见,SSTS兼备FTP和P2P系统的优点,寻址方便,稳定性高,传输速度快,是一种较好的结构化的单源数据传输系统。
[1] 陈旭孟. 一个面向实时传输的应用层组播协议的设计[J] .计算机应用与软件,2008,25(9).
[2] 申新鹏. 结构化多点协作P2P系统研究[J] . 计算机应用研究,2008,25(10).
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!