liquid_zigong 发表于 2006-7-20 22:23:32

在想能不能用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。

liquid_zigong 发表于 2006-7-20 23:25:47

op2p-tv://视频的hash信息之base64编码/TRACKERIP端口信息

这是设想中的URL形式的链接,用P2P TV CLIENT即可打开。

服务器:同BT中的TRACKER,只需输出PEER LIST即可。
客户端:同其他客户端协商,分块下载当前缓冲区内容并上传,缓冲区准备好就播放。

gxcooo 发表于 2006-8-5 21:27:10

其实我是很想做的,苦于没有时间
还有就是想做的事情太多了 :cry:
页: [1]
查看完整版本: 在想能不能用BStorm做P2P电视台