Print

一种基于P2P协议的负载发生器的设计与实现

论文摘要

互联网上的文件内容分发一直采取传统的Client/Server模式,通过FTP或HTTP协议来进行。在这种模式下,每个客户端向提供内容分发的服务器建立一个TCP连接,通过这一连接从服务器处获取数据。各个客户端之间并无数据的交互。Client/Server模式的弊端在很多文献中已经有所阐述:Server是整个系统的瓶颈所在,由于所有的客户端都只能从服务器处获取数据,随着客户端与服务器之间连接数的增多,平均每个连接上数据的传输速率逐渐下降,服务器的服务响应时间延长,一旦服务器出现故障,在其从故障中恢复之前,所有尚未下载完成的客户端都不能够继续下载。近年来随着P2P技术的日益成熟和广泛应用,互联网上越来越多的文件内容分发系统开始采取P2P协议来实现。这种模式将欲分发的文件的一个完整的副本存储在一台服务器上(以下称之为种子服务器),客户端不仅能和传统的Client/Server模式一样,通过连接种子服务器,从其上获取数据,同时能够凭借P2P协议与其他客户端互相交换数据。因此,客户端一次完整的文件内容下载的平均时间较传统的Client/Server模式少;同时,即使种子服务器在提供服务时发生故障,只要当前正在下载同一文件的诸多客户端已经下载到本地的文件内容能够凑成一个完整的文件副本,则理论上这些客户端都能够通过彼此之间的数据交互,最终完成文件内容下载,从而提高了系统的健壮性。在使用P2P协议进行文件内容分发的系统中,种子服务器是否正常稳定运行直接关系到其服务的所有用户是否能尽快成功下载完请求的数据。因此,在种子服务器进行实际部署之前,必须要分别针对其稳定性,健壮性,及能承受的最大负载进行一系列严格测试,得出系统能够正常服务的最大容量。其中运营商最关心和感兴趣的是,种子服务器在运行商根据自己成本考虑所能提供出的硬件平台上,到底能同时稳定地服务多大数目的用户群,且同时能够保证任意一个用户的下载体验。因此,在实际部署之前,模拟种子服务器实际部署后运行的真实环境,设计一个针对种子服务器的负载发生器并利用其对种子服务器进行上述测试就很有必要。目前国内外较成熟的负载发生器都是只针对传统的Client/Server模式下运行,因此本文所论述的基于P2P技术的负载发生器的设计与实现具有一定的创新性。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 引言
  • 1.1 P2P 技术的特点概述
  • 1.2 当今P2P 的主要应用
  • 1.3 负载发生器设计的项目背景介绍
  • 第二章 负载发生器的框架设计
  • 2.1 模块化的体系架构设计
  • 2.2 负载发生器中 BT 协议模块的网络 I/O 模型选择
  • 第三章 BT 协议的具体实现
  • 3.1 BT 协议概述
  • 3.2 真实节点和虚拟节点的区分
  • 3.3 BT 协议模块中的核心数据结构
  • 3.4 BT 协议实现模块中main loop 的实现原理
  • 第四章 实际测试及结果
  • 第五章 结束语
  • 致谢
  • 参考文献
  • 攻硕期间取得的研究成果
  • 相关论文文献

    本文来源: https://www.lw50.cn/article/b5c7ebfb0eec405886627668.html