直播P2P技术2-低延迟模型
低延迟模型
由上一篇文章我们知道:网状拓扑虽最大化利用了所有节点的资源却无法降低数据延迟,而树状拓扑尽管数据传输效率高,延迟低,但只利用了少部分节点的带宽资源,不适应高码率的直播P2P网络。
那么如何在高码率的直播中实现延迟低的可用P2P网络呢?
其实可以将树、网状拓补有效地结合起来,也就是使节点在全局上属于对等关系,而在一定程度上又属于树中的父子关系。这样既保证了每个节点都参与数据下载和上传过程,使得单个节点平均上、下行带宽要求降低,又保证节点之间数据交换快速高效。称这种结构为:树网状结合拓扑。结构如下图1.所示。

为了方便讨论树网状网络拓扑,作如下定义:
- 数据全集:整个直播数据片段构成的集合
- 数据集:数据片段的集合,互不相交,且并集构成整个直播数据的全集
- 节点基本数据集:原始分配给每一个节点从服务器下载的数据集
- 节点数据集:节点基本数据集与从其他节点订阅的数据集的并集
每一个节点被分配一个基本数据集的下载任务,数据集的数量全局固定可知,节点数据集相同的节点不产生任何关系,数据集不同的节点可在不同的数据集上产生不同的订阅。
节点之间控制消息和数据消息过程如下图2.所示。

假设数据集数量为M,直播数据码率为B,则单个节点的最小平均下行带宽Bd,Bu=(B/8)/M,最小平均上行带宽Bu,Bu=(M-1)/M*(B/8)。节点订阅数据集成功后,单个数据块的单挑延迟T,有T=Td,n跳数据块延迟Tn,有Tn=n*Td。理想情况下,每一个节点的最大P2P数据分享率P,有P=(M-1)/M。
跳数越多(树的高度越高),节点的延迟就越大。所以一般可以将直播的数据划分成多一些的数据集,即M值大一些,数据跳数固定为1(每一棵树树高为2)。同时,M越大,P也就越大。
当然,这个模型也有一些缺点。整个P2P网络中,有很多棵基于对数据集订阅产生的树,如果每种数据集的订阅树总数量不均衡,将会导致订阅树更少的那部分数据集节点上行带宽压力增大。当然这个弱点是可以弥补的,取决于服务器数据集划分算法和客户端节点的数据集任务分配的算法。
总的来说,树网状网络拓扑既有效地利用了每个节点的上下行资源,又能做到PUSH模型的低延迟数据推送,很适合于低延迟的直播P2P场景。
直播P2P技术2-低延迟模型的更多相关文章
- 直播P2P技术1-技术入门
1. 直播协议 直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等.每种协议都各有长短,比如RTMP延迟低,但诞生于Adobe,依赖于Flash Player,在如今FL ...
- 直播P2P技术3-伙伴节点质量评估及子流订阅
以上模型,暂且称之为W-P2P吧.
- 实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序
1.前言 2017 年 12 月,微信小程序向开发者开放了实时音视频能力,给业内带来广阔的想象空间.连麦互动视频直播技术在 2016 年直播风口中成为视频直播的标配,然而只有在原生的 APP 上才能保 ...
- P2P技术如何将实时视频直播带宽降低75%?
本文内容来自学霸君资深架构师袁荣喜的技术分享. 1.前言 实时视频直播经过去年的千播大战后已经成为互联网应用的标配技术,但直播平台的成本却一直居高不下,各个平台除了挖主播.挖网红以外,其背后高额的带宽 ...
- 如何实现1080P延迟低于500ms的实时超清直播传输技术<转>
转载地址:http://www.yunweipai.com/archives/9037.html 最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN ...
- 如何实现1080P延迟低于500ms的实时超清直播传输技术
再来当一次技术搬运工,内容来自高可用框架,学霸君工程师袁荣喜的如何实现1080P延迟低于500ms的实时超清直播传输技术. 导语:视频直播是很多技术团队及架构师关注的问题,在实时性方面,大部分直播是准 ...
- 【转】实现1080P延迟低于500ms的实时超清直播传输技术
最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人 ...
- QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
QQ视频直播架构及原理 - tianyu的专栏 - CSDN博客 https://blog.csdn.net/wishfly/article/details/53035342 作者:王宇(腾讯音视频高 ...
- PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘
5 月 19.20 日,行业精英齐聚的 WebRTCon 2018 在上海举办.又拍云 PrismCDN 项目负责人凌建发在大会做了<又拍云低延时的 WebP2P 直播实践>的精彩分享. ...
随机推荐
- 剑指Offer——不用加减乘除做加法
题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组 ...
- Python面试应急5分钟!
不论你是初入江湖,还是江湖老手,只要你想给自己一个定位那就少不了面试!面试的重要性相信大家都知道把,这就是我们常说的“第一印象”,给大家说一下我的面试心得把,面试前的紧张是要的,因为这能让你充分准 ...
- Mysql索引长度和区分度
首先 索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点: 那么这个平衡点怎么来定? 比如用户表有个字段 ...
- intellij idea 重命名或复制一个项目(不用重启)
Idea 内无法直接修改Explorer 里文件夹的名称,只能手动改文件夹的名称. 目前找到的最好的方法: 1)重命名一个项目 在Idea 项目关闭状态下,在 Explorer (Windows) / ...
- django的所有app放在一个文件夹下便于管理
1.新建一个python Package,名字叫apps 2.拖拽以后的app到apps文件夹下,把Search for references勾选去掉,重要重要重要!!!! 3.右键点击apps文件夹 ...
- boost circular buffer环形缓冲类
Boost.Circular_buffer维护了一块连续内存块作为缓存区,当缓存区内的数据存满时,继续存入数据就覆盖掉旧的数据. 它是一个与STL兼容的容器,类似于 std::list或std::de ...
- Java并发编程实战3章
1.同步包括两方面:原子性和可见性. 2.可见性:因为在多线程程序中,如果没有采用正确的同步,有些线程就会得到失效数据. Java内存模型要求,变量的读取操作和写入操作都必须是原子操作,但对于非vol ...
- Java基础知识陷阱(八)
本文发表于本人博客. 这次我来说说关于&跟&&的区别,大家都知道&是位运算符,而&&是逻辑运算符,看下面代码: public static void m ...
- 微信小程序组件slider
表单组件slider:官方文档 Demo Code: var pageData = {} for (var i = 1; i < 5; i++) { (function (index) { pa ...
- 『NiFi 学习之路』简介
『NiFi 学习之路』简介 『NiFi 学习之路』入门 -- 下载.安装与简单使用 『NiFi 学习之路』资源 -- 资料汇总 『NiFi 学习之路』把握 -- 架构及主要组件 『NiFi 学习之路』 ...