在想能不能用BStorm做P2P电视台
一个开源的p2p的电视台。目标:
1.P2P架构
2.使用标准化构架
3.使用C++
4.原则上不限制载体
基本设计
CLIENT --------> TRACKER (DHT网络)
提交对某一个电视台在线CLIENT列表的请求
<--------
返回PEERLIST
CLIENT 连接 PEERLIST中的其他CLIENT,下载并上传电视台节目。
下载、上传算法:
网络电视:只对最近一段时间的内容进行缓冲,过期的会被丢弃。
比如你只对4M的最近内容进行缓冲
1.读取新的内容
2.丢弃旧的内容
3.分发当前的内容
优化:分割文件片:
比如,把4M的缓冲区分割成4份,种子把它们分别随机上传给4个不同的CLIENT,CLIENT之间分别互相得到全部的内容,在最好的情况下,可以
达到4倍的网络速度。
定理1:最好的情况下(每个文件都有仅一个CLIENT接受并上传给其他所有人),文件块分片为n块,服务器负载为原来的1/n。
评分:
为了防止只下载不上传,采用评分系统,每个人记录其他人上传、下载(给自己)的流量,在一定时间周期内,进行优胜劣汰算法。
评分系统不能太严厉不然效率下降。
为什么这是一种优化:
可以打开多线程下载
可以同时下载多个缓冲区间的数据。
播放:
当缓冲区连续内容大于缓冲区的x%并且视频的头部完整时,开始播放。
有关标准化设计:
1.使用XML
2.使用一种快速、安全的hash算法保护数据完整性。(MD5、sha-1)
3.使用Reactor模式
5.使用第三代P2P的技术:DHT,D-H公钥随机交换加密。
6.使用标准的CGI方法得到PEER LIST。 op2p-tv://视频的hash信息之base64编码/TRACKERIP端口信息
这是设想中的URL形式的链接,用P2P TV CLIENT即可打开。
服务器:同BT中的TRACKER,只需输出PEER LIST即可。
客户端:同其他客户端协商,分块下载当前缓冲区内容并上传,缓冲区准备好就播放。 其实我是很想做的,苦于没有时间
还有就是想做的事情太多了 :cry:
页:
[1]