论文摘要
Boost是一套开放源代码、高度可移植的C++库。其内容广泛,函数绑定、智能指针、数据结构、图算法、字符串处理、语法分析、网络编程……等均包含在内。ASIO是Boost库中基于异步IO模型的可移植的网络编程库。Tracker服务器作为P2P应用中的关键组成部分,其主要作用是跟踪网络中每个节点的资源信息并提供检索服务。Tracker服务器作为P2P网络的入口,其性能、容量,安全性以及健壮性是至关重要的。本文探讨如何利用上述库设计并实现一个可无限扩容的高性能Tracker服务器系统。首先从健壮性的角度比较了多线程模型和单线程异步模型之间的优劣。然后比较了C++标准模板库STL中的HashMap以及Boost库中多索引容器的插入、删除、查询的性能。并选定了Boost作为基本库,使用ASIO单线程异步模型,用多索引容器建立资源和节点的对应关系。并针对资源数量远远大于用户数量这个事实进行方案的设计和优化。为了对系统进行性能测试和正确性测试,本文借鉴JSON的语法,设计并实现了一种支持自定义模式和表达式计算的定义式测试脚本,可以定义每个包的具体内容、发包频率、节点生命周期等一系列参数。