Skip to content

Latest commit

 

History

History
83 lines (43 loc) · 2.65 KB

README.md

File metadata and controls

83 lines (43 loc) · 2.65 KB

VOD视频点播

概述

实现了一个视频点播VOD(Video On Demand)网站。

  • 前端处理与浏览器的交互。正确地接收和处理来自浏览器的HTTP GET请求,并适当地响应200,206,404,500。

  • 通过Java设计了一个基于UDP套接字通信的后端系统,使用带宽限制、流量控制、拥塞控制和内容分块技术实现对等节点间可靠的内容传输

  • 建立了链路状态路由协议和Gossip协议,分别用于网络优化和内容搜索

  • 利用现有工具(Apache基准测试)来测试服务器的可伸缩性

安装与使用

content文件夹存放视频文件

config存在配资文件

git clone https://github.com/FENGRUI99/VOD-Web-application.git
修改config
IDEA 运行 Server.java -C nodeA.config
Firefox输入localhost:<port>/content/文件名
具体指令参考项目要求,或搭配VOD-Front-End使用

项目1

在您的第一个项目中,您应该实现系统的前端组件,它可以通过web浏览器与用户交互。

  • 基于TCP套接字的通信

  • 接收HTTP GET请求

  • 如果请求头中没有Range字段,则响应200

  • 如果在请求头中有一个Range字段,那么响应206 ->视频从浏览器中查找

  • 如果没有找到文件,则响应404

  • 创建线程池处理并发性,支持至少100个用户同时访问

项目2

在这个项目中,您将实现一个后端子系统,它利用UDP之上的自定义传输协议。传输协议的目的是在对等节点之间可靠地传输内容。

  • 基于UDP socket的通信

  • 带宽限制带宽限制

  • 流量控制 ->滑动窗口,丢包重传,最大允许50%丢包率

  • 拥塞控制 ->动态改变窗口大小

  • content chunking->多个节点具有相同的文件,并同时从多个节点请求该文件的不同部分 —1秒内快速响应大文件

项目3

在这个项目中,我们将探索底层网络系统,它形成了我们的P2P网络。您将为网络实现一个简单的链路状态路由协议。然后,我们可以使用获得的距离度量来提高我们的运输效率。

  • 广播算法实现路由表
  • 动态路由表,每隔一段时间检测邻居是否上线或下线
  • Dijkstra实现单源最短路径。节点是根据最短路径来请求文件的一部分。请求是成比例的。

项目4

留给我们系统的唯一任务是执行一个网络范围的内容搜索。

  • Gossip协议实现文件搜索并返回文件的所有节点uuid

  • Partial search返回所有部分文件,文件名包含target和拥有该文件的节点uuid —内容Portal显示首页节点内容文件夹中的所有文件,按查看时间/最新进行排序