搜狐视频P2P技术揭秘 - 流控篇
1 各种流控算法
说到流控算法,业内人士脑海中应该立刻就能够浮现出下面的名词:
- TCP,拥塞控制,滑动窗口;
- QUIC,BBR;
- WebRTC,GCC,TransportCC
- UDT;
- KCP;
- ……
2 P2P的流控
2.1 流控的目的
很少有用户愿意眼睁睁看着自己设备上的程序在上传数据,但是P2P就是干这个事情的,想要用户不反感是不可能的,那么只能让用户别发现,或者说别在意。只要不那么占用用户设备的CPU资源,别的程序运行不卡,也没有占满用户的上行带宽,让用户上不了网,玩不了游戏,那么用户基本不会发现,也不会在意。那么P2P的上传端要控制连接的数量和上传带宽,下载端也要控制好下载的速率。
众所周知中国的网络环境,用户的上下行带宽不对称。用户的带宽特别是上行带宽很宝贵,在几年前,基本可以认为用户的平均上行带宽是512kbps,也就是64K Byte/S,这两年个人用户的带宽降价提速,应该能达到1~2Mbps。这些数据就是P2P的底线,过了这个底线,用户就不干了。
平均水平是一回事,但是具体到每个用户就不一样了,有高有低,一概而论很容易出问题,因此流控算法应运而生。
2.2 算法
搜狐视频P2P采用的流控算法很简单,但是可以看到市面上流行的各种流控算法的元素,目前也没法证明有多高效。
算法思想:
- 主要目标是估算某个Peer的可用带宽,从而换算为每秒可以请求的任务数;
- 计算Peer最近若干个请求的平均Rtt,这里可以选择算数平均或者TCP的估算算法;
- 为每个Peer设置一个初始窗口大小W,带宽=W/Rtt,每秒请求数=带宽/每个请求的大小,但是设置上限;
- 类似慢启动,如果当前任务都在规定时间(Rtt的一个倍数)得到了响应,那么窗口增加,否则窗口减小;
- 统计丢包率;
- 根据丢包率和Rtt计算出Peer的一个分值,并根据分值给Peer排序,分值较高的Peer将优先分配更多的任务。
可以看到,一旦发生了轻微的拥塞,那么P2P就会试图避让,减小窗口,降低每秒请求数,并不强求争抢速度,跟某些P2P软件相比,显得比较君子,目的也是尽力不让用户反感。
这里主要是针对搜狐影音Peer的流控算法,对Flash Peer来说,由于使用了RTMFP协议,实现了RFC7016规定的类似TCP的流控算法,H5的P2P则使用了WebRTC的数据通道,也有类似的流控算法。
除此之外,需要给上层提供限制下载、上传速度的接口,这样可以确保万无一失。
带宽=W/Rtt
W上面叫窗口,实际上是通道的容量,换个专业的称呼叫带宽时延积,也就是一个端到端的通道上能够容纳的已经发出但是没有到达目的还没有确认的包的量。
这个公式有很多变种,例如服务端QPS=并发/平均请求时间。
搜狐视频P2P技术揭秘 - 流控篇相关推荐
- 搜狐视频P2P技术揭秘 - 分享率控制篇
搜狐视频P2P技术揭秘 - 分享率控制篇 1 业务决定控制逻辑 2 搜狐影音/搜狐视频 2.1 状态定义 2.2 输入事件 2.3 状态转换 2.4 转换逻辑 3 Flash 播放器/H5 播放器 在 ...
- 搜狐视频P2P技术揭秘 - 流程篇
搜狐视频P2P技术揭秘 - 流程篇 1 协议 2 探测NAT类型 3 获取Proxy和RtmfpServer 4 登录Proxy和RtmfpServer 5 获取文件信息 6 获取Peer 7 打洞, ...
- 搜狐视频P2P技术揭秘 - 架构篇
1.P2P系统 服务 功能 Tracker 存储服务,存储文件和活跃P2P上传用户(以下简称矿机.Peer)的连接信息对应关系,用户信息包括用户标识.所连接Proxy的地址.地域.运营商.NAT类型等 ...
- 搜狐视频P2P技术揭秘 - 业务篇
1 覆盖以及互通情况 上图描述了搜狐视频P2P的覆盖情况,基本所有平台都覆盖.箭头方向则描述了数据的互通情况,可以看到,H5(WebRTC)跟其他平台还未互通,移动端搜狐视频可以从Flash Peer ...
- 搜狐视频如何上传原创视频
很多人都使用搜狐视频,小编给大家分享一下搜狐视频如何上传原创视频相关内容.搜狐视频打造涵盖电影.电视剧.综艺.动漫在内的十余种类型的丰富的正版视频内容库,让搜狐视频进入真正意义上的全类别.高品质时代. ...
- 搜狐视频怎么修改昵称
今天小编给广大用户分享搜狐视频怎么修改昵称.搜狐视频播放器软件可24小时多平台无缝应用体验以及快捷分享,快速登陆等满足用户在线观影需求.搜狐视频播放器的在线视频媒体平台及视频播放器采用的是p2p媒体播 ...
- 搜狐视频怎么开启青少年模式
很多人都使用搜狐视频,播放器家园网小编给大家分享一下搜狐视频怎么开启青少年模式相关内容.搜狐视频播放器是一款深受广大用户欢迎的主流视频播放器软件,专注为用户提供在线视频播放的客户端软件,搜狐视频播放器 ...
- 留下记忆 2011 年,搜狐做的搜狐视频安卓播放器引擎。
负责搜狐视频移动客户端播放引擎开发. 创建搜狐安卓移动客户端引擎从外包到有的过程, 实现了基于 ffmpeg 的播控底层和 JAVA 端的显示层的代码从 0 框架设计到开发上线. 支持公司片源播 ...
- 搜狐视频怎么开启自动连播
本文播放器家园网给大家整理了搜狐视频怎么开启自动连播方面的内容.搜狐视频支持在线进行加载,离线观看,没有网络一样看高清视频,别说你流量够多用不上,你在电梯里没信号,地铁网速慢.搜狐视频拥有独立的播放界 ...
最新文章
- 基于3D的结构光的应用
- 面试问什么是无损降级?
- 机器学习入门需要多久
- 电脑的基础知识_电脑键盘功能基础知识
- 大数据WEB阶段Spring框架(一)IOC控制反转、DI注入依赖
- 基于FPGA的FFT设计
- 02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证
- Python subprocess.Popen 实时输出 stdout(正确管道写法)
- Python使用multiprocessing实现多进程
- java web 路径 .html,java web 路径(java web 路径).doc
- java spring 下载文件_springboot下载文件(使用流)
- 自动化/控制工程专业英语01——什么是控制[考研/保研面试]
- Whatsapp注册步骤
- 互联网周刊封面文章:全球网络广告三大趋势
- c语言棋盘光标怎么删除,删除光标前的字符按什么键
- linux 内核模块 编写例子,LINUX内核模块编程8
- 奇偶数判断(YZOJ-1032)
- Hadoop 命令操作大全
- C# 盛金公式 求解一元三次方程
- 毕业生如何写简历的内容
热门文章
- 微信代挂定位服务器,用微信偷看对方位置,通过微信知道对方位置
- Android(安卓)订餐APP(Sqlite数据库,完整的增删改查)
- 教你们在cmd里运行打开游戏,效率很快的。喜欢吧?
- jmeter - perfMon性能监控
- 当CV工程师碰到了拷贝粘贴的需求——useClipboard的使用及源码解析
- 苹果cms怎么做html缓存广告,苹果cms如何添加播放器预加载和缓冲广告
- 关于在VS上创建的工程从win32改为x64时导致断点无法生效的原因与解决方法!
- 电子计算机 冯诺依曼,冯诺依曼计算机的特点
- MIT研究团队开发由磁铁控制的小型机器人,可在人体内提供治疗
- GPFS无法写入大文件