CDN系统内容路由的研究

CDN系统内容路由的研究

论文摘要

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,从而解决Internet网络拥挤的状况,提高用户访问网站的响应速度。本文在北京市科委“基于IPv6的下一代互联网关键技术研发及产业化推动”项目课题“IPv6流媒体分发应用系统支持系统的开发”带动下,综合了其它内容发布模式的优点,提出了一种新的内容路由系统(Content Router),并对该系统进行了设计和实现,Content Router是在CDN系统中为用户提供内容定位和发布等功能的子系统。用户通过Content Router可以搜索定位资源,发布内容。Content Router对内容还要进行管理,删除过了期的内容。Content Router同时负责自己域的边缘服务器的管理和与DHT(分布式hash表服务)网络的交互。Content Router基于Linux平台,采用模块化的思想进行设计,针对系统高网络I/O的特点,采用Linux2.6内核的epoll机制进行网络事件交互,是一个单线程非阻塞的服务器。数据库的操作一般都是阻塞进行的,Mysql并不提供非阻塞的数据库操作接口。为了能够更好地进行数据库的操作,我们采用线程池的方式(类似于磁盘的异步I/O)实现对数据库的非阻塞操作。线程池是由许多个(个数可以配置)预先创建好的工作线程构成。这些工作线程都在一个请求队列上等待,当有新的请求加入队列时,工作线程就从请求队列中取出请求,然后根据请求的类型,执行相应的操作,操作完成后,将这个请求所对应的Task的地址写入到一个管道中,这个管道被epoll监听,epoll_wait会返回这个管道的描述符,主线程可以从这个管道中读出Task的地址,调用Task的状态机,执行相应的操作。由于多个线程共享请求队列,所以放请求到请求队列要加锁,为了能够非阻塞的加锁,CR采用尝试锁的方式(pthread_mutex_trylock),如果发现请求队列已被加锁,就把这个请求放到另一个备用队列中,访问备用队列无需加锁,因为备用队列只会被主线程访问。放请求时,当发现请求队列没有加锁,就先加锁,然后把新请求和备用队列中的所有请求都放到请求队列中。经过测试,该系统能够很好地完成搜索定位资源,发布内容,删除过了期的内容等功能,给中小型机构提供了一种比较实用的内容路由系统。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 本文的工作及创新
  • 1.3 本文的内容和组织
  • 第二章 CDN 技术概述
  • 2.1 CDN 的技术原理
  • 2.2 CDN 关键技术
  • 2.3 CDN 的网络框架
  • 2.4 CDN 的应用
  • 2.5 小结
  • 第三章 CDN 内容路由的研究
  • 3.1 基于DNS 的内容路由
  • 3.1.1 传统访问模式
  • 3.1.2 CDN 的访问模式
  • 3.2 基于名字的内容路由
  • 3.3 基于DHT 覆盖网络的内容路由
  • 3.3.1 DHT 覆盖网络
  • 3.4 小结
  • 第四章 CR 概要设计
  • 4.1 概述
  • 4.1.1 PPCDN 系统介绍
  • 4.1.2 CR 服务器的系统框架
  • 4.2 CR 概要设计
  • 4.2.1 与DHT 交互的模块
  • 4.2.1.1 CR 加入DHT 覆盖网络
  • 4.2.1.2 CR 从DHT 覆盖网络注销
  • 4.2.1.3 CR 向DHT 覆盖网络发对象发布消息
  • 4.2.1.4 CR 向DHT 覆盖网络发对象查找请求
  • 4.2.1.5 CR 向DHT 覆盖网络发对象删除请求
  • 4.2.2 与ESP 交互的模块
  • 4.2.2.1 ESP 向CR 建立连接
  • 4.2.2.2 CR 向 ESP 询问
  • 4.2.2.3 CR 探测ESP 连接状况
  • 4.2.2.4 CR 通知ESP 有发布请求
  • 4.2.2.5 CR 通知ESP 删除数据
  • 4.2.3 与 Tracker 交互的模块
  • 4.2.3.1 Tracker 向CR 建立连接
  • 4.2.3.2 CR 向Tracker 通知有用户要下载
  • 4.2.3.3 CR 向Tracker 通知新发布的内容
  • 4.2.3.4 CR 向Tracker 通知删除内容
  • 4.2.3.5 CR 探测连接状况
  • 4.2.4 与CA 交互模块
  • 4.2.5 与DB 交互的模块
  • 4.2.6 与CP 交互的模块
  • 4.3 CR 的运行环境和程序框架
  • 4.3.1 基于 Linux 的环境的程序开发
  • 4.3.2 单线程服务器模型
  • 4.3.3 基于异步事件驱动的程序框架
  • 4.3.3.1 几种网络程序框架的研究
  • 4.3.3.2 CR 的I/O 驱动机制
  • 4.3.3.3 异步事件驱动框架概述
  • 4.3.3.4 异步事件驱动框架的实现–基于epoll 的高效事件检测技术
  • 4.3.3.5 自定义协议和交互实体状态变换
  • 4.4 CR 的主要数据结构的设计
  • 4.5 小结
  • 第五章 CR 详细设计
  • 5.1 与DHT 交互的模块的详细设计
  • 5.1.1 协议设计
  • 5.1.2 模块设计
  • 5.2 与ESP 交互模块详细设计
  • 5.2.1 协议设计
  • 5.2.2 模块设计
  • 5.3 与 Tracker 交互的模块设计
  • 5.3.1 协议设计
  • 5.3.2 模块设计
  • 5.4 与CA 交互的模块
  • 5.4.1 协议设计
  • 5.4.2 CAAgent 类
  • 5.5 与DB 交互的模块
  • 5.6 与 CP(Client)交互的模块
  • 5.6.1 协议设计
  • 5.6.2 CPAgent 类
  • 5.7 小结
  • 第六章 系统测试
  • 6.1 测试环境
  • 6.2 测试内容
  • 6.2.1 用户界面测试
  • 6.2.2 典型搜索测试
  • 6.2.3 异常搜索测试
  • 6.2.4 搜索压力测试
  • 6.3 测试结果分析
  • 6.4 小结
  • 第七章 结论
  • 7.1 主要结论
  • 7.2 Content Router 的特点和改进方向
  • 7.2.1 特点
  • 7.2.2 改进方向
  • 致谢
  • 参考文献
  • 攻硕期间取得的研究成果
  • 相关论文文献

    标签:;  ;  ;  ;  ;  

    CDN系统内容路由的研究
    下载Doc文档

    猜你喜欢