CN115955469A - 一种流媒体数据分发传输方法、系统及相关设备 - Google Patents
一种流媒体数据分发传输方法、系统及相关设备 Download PDFInfo
- Publication number
- CN115955469A CN115955469A CN202211714499.3A CN202211714499A CN115955469A CN 115955469 A CN115955469 A CN 115955469A CN 202211714499 A CN202211714499 A CN 202211714499A CN 115955469 A CN115955469 A CN 115955469A
- Authority
- CN
- China
- Prior art keywords
- service node
- code stream
- stream
- link
- push
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种流媒体数据分发传输方法、系统及相关设备,该方法包括:当接收到播放端的流媒体数据请求时,获取流媒体数据请求中包含的信号源;判断信号源是否已经对外建立有至少一条码流链路;若是,获取各码流链路,并基于各码流链路确定目标码流链路;若否,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路,用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由推流服务节点定期上报得到的。本申请可以复用已有的码流链路,并实现各拉流服务节点及各推流服务节点的负载均衡,有效利用已有的软件资源及硬件资源。
Description
技术领域
本申请涉及流媒体数据处理技术领域,更具体地说,是涉及一种流媒体数据分发传输方法、系统及相关设备。
背景技术
在视频监控、视频会议、互联网直播、物联网等应用场景下,需要对各种音视频数据源通过公有云或私有云进行转发,传统的转发模式已经无法满足日益增长的高并发转发需求。如何满足大规模、高并发的音视频转发需求,克服单机性能瓶颈的制约,成为亟待解决的技术问题。
发明内容
有鉴于此,本申请提供了一种种流媒体数据分发传输方法、系统及相关设备,以解决至少一个上述提出的问题。
为实现上述目的,本申请第一方面提供了一种流媒体数据分发传输方法,包括:
当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
判断所述信号源是否已经对外建立有至少一条码流链路;
若是,获取各码流链路,并基于各码流链路确定目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
优选地,基于各码流链路确定目标码流链路的过程,包括:
获取每一码流链路中的推流服务节点的负载状态;
基于各码流链路中的推流服务节点的负载状态,确定码流转出路数最少的候选推流服务节点以及对应于所述候选推流服务节点的候选码流链路;
判断所述候选推流服务节点的码流转出路数是否小于第一预设阈值;
若是:
建立所述候选推流服务节点与所述播放端之间的第三码流分路,并将所述候选码流链路中的所述信号源与拉流服务节点之间的第一码流分路、所述拉流服务节点与所述候选推流服务节点之间的第二码流分路、以及所述候选推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路;
若否:
基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路。
优选地,基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路的过程,包括:
获取每一码流链路中的拉流服务节点的负载状态;
基于各码流链路中的拉流服务节点的负载状态,确定码流转出路数最少的候选拉流服务节点以及对应于所述候选拉流服务节点的候选码流链路;
判断所述候选拉流服务节点的码流转出路数是否小于第二预设阈值;
若是,基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的服务状态,建立目标码流链路。
优选地,基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路的过程,包括:
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点;
控制建立所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路,以及控制建立所述目标推流服务节点与所述播放端之间的第三码流分路;
将所述候选码流链路中的所述信号源与所述候选拉流服务节点之间的第一码流分路、所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路、以及所述目标推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路。
优选地,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路的过程,包括:
基于各拉流服务节点的负载状态,确定负载指标值最低的目标拉流服务节点,并控制建立所述信号源与所述目标拉流服务节点之间的第一码流分路;
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点,并控制建立所述目标拉流服务节点与所述目标推流服务节点之间的第二码流分路;
控制建立所述目标推流服务与所述播放端之间的第三码流分路,并将所述第一码流分路、所述第二码流分路以及所述第三码流分路确定为所述目标码流链路。
优选地,每一拉流服务节点的负载状态包括:所述拉流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数;
每一推流服务节点的负载状态包括:所述推流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数。
本申请第二方面提供了一种流媒体数据分发传输系统,包括调度服务器以及与所述调度服务器通信连接的多个信号源、多个拉流服务节点、多个推流服务节点和多个播放端;
所述信号源用于提供流媒体数据;
所述拉流服务节点定期将负载状态上报至所述调度服务器,用于通过与信号源之间的第一码流分路向信号源拉取流媒体数据;
所述推流服务节点定期将负载状态上报至所述调度服务器,用于通过与拉流服务节点之间的第二码流分路向拉流服务节点拉取流媒体数据;
所述播放端用于向所述调度服务器提交指定信号源的流媒体数据请求,并通过与推流服务节点之间的第三码流分路向推流服务节点拉取流媒体数据;
所述调度服务器用于实现如上述的流媒体数据分发传输方法。
本申请第三方面提供了一种流媒体数据分发传输装置,包括:
请求接收单元,用于当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
链路判断单元,用于判断所述信号源是否已经对外建立有至少一条码流链路;
链路复用单元,用于当所述链路判断单元确定所述信号源已经对外建立有至少一条码流链路时,获取各码流链路,并基于各码流链路确定目标码流链路;
链路新建单元,用于当所述链路判断单元确定所述信号源没有对外建立任何码流链路时,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
本申请第四方面提供了一种电子设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现上述的流媒体数据分发传输方法的各个步骤。
本申请第五方面提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述的流媒体数据分发传输方法的各个步骤。
经由上述的技术方案可知,在本申请提供的应用于调度服务器的流媒体数据分发传输方法中,其中,组成传输链路的各拉流服务节点及各推流服务节点会定期向调度服务器上报各自的负载状态。当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源,可以理解的是,所述信号源为播放端的用户指定的。判断所述信号源是否已经对外建立有至少一条码流链路。若判断出所述信号源已经对外建立有至少一条码流链路,获取各码流链路,并基于各码流链路确定目标码流链路。其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端,通过基于已经建立好的各码流链路,确定目标码流链路,可以复用已有的码流链路,有效利用已有的软件资源。若判断出所述信号源没有对外建立任何条码流链路,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路。通过考虑各拉流服务节点的负载状态及各推流服务节点的负载状态,可以实现各拉流服务节点及各推流服务节点的负载均衡,有效利用各硬件资源。此外,由于各拉流服务节点具备独立的从各信号源拉取流媒体数据的功能,以及各推流服务节点具备独立的从各拉流服务节点拉取流媒体数据的功能,因此可以通过动态添加相应数量的拉流服务节点和/或推流服务节点来实现横向扩容,从而提高网络的吞吐量,实现有效地分发更多的类媒体数据,很好地支持了海量的播放端终端。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的流媒体数据分发传输系统的示意图;
图2为本申请实施例公开的流媒体数据分发传输方法的示意图;
图3示例了申请实施例公开的复用已建立的码流链路的示意图;
图4示例了申请实施例公开的重新确定推流服务节点以复用部分码流分路的示意图;
图5示例了申请实施例公开的建立码流链路的过程示意图;
图6为本申请实施例公开的流媒体数据分发传输装置的示意图;
图7为本申请实施例公开的流媒体数据分发传输设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面介绍本申请实施例提供的流媒体数据分发传输系统。请参阅图1,本申请实施例提供的流媒体数据分发传输系统,可以包括调度服务器20以及与调度服务器20通信连接的多个信号源10、多个拉流服务节点40、多个推流服务节点50和多个播放端60。
其中,信号源10用于提供流媒体数据,用户可以在播放端60指定选择哪个信号源来播放流媒体。
拉流服务节点40定期将自身的负载状态上报至调度服务器20,用于通过与信号源之间的第一码流分路向信号源10拉取流媒体数据。
推流服务节点50定期将自身的负载状态上报至调度服务器20,用于通过与拉流服务节点之间的第二码流分路向拉流服务节点40拉取流媒体数据。
播放端60用于向调度服务器20提交指定信号源的流媒体数据请求,并通过与推流服务节点50之间的第三码流分路向推流服务节点50拉取流媒体数据。
调度服务器20用于接收来自播放端60的流媒体数据请求,从该流媒体数据请求中解析出播放端60指定的信号源,并进一步依据当前已经建立好的码流链路、各拉流服务节点40的负载状态以及各推流服务节点50的负载状态来确定目标码流链路。
可以理解的是,在流媒体数据分发传输系统初始化时,各信号源、拉流服务节点、推流服务节点及播放器均会向调度服务器注册,以便调度服务器跟踪这些参与方的最新信息及负载状态等信息。其中,当需要动态扩容时,新加入的信号源、拉流服务节点或推流服务节点,也需要向调度服务器注册。
调度服务器20的具体实现是本申请的技术关键所在。下面从调度服务器20的角度,详细描述流媒体数据分发传输方法的具体实现过程。
下面介绍本申请实施例提供的流媒体数据分发传输方法,该方法应用于调度服务器20。请参阅图2,本申请实施例提供的流媒体数据分发传输方法可以包括如下步骤:
步骤S101,当接收到播放端的流媒体数据请求时,获取该流媒体数据请求中包含的信号源。
可以理解的是,用户通过播放端60发起流媒体数据请求时,会在该流媒体数据请求中带入用户指定的信号源,调度服务器20在确定码流链路时需要考虑利用该信号源为播放端60提供流媒体数据源。
步骤S102,判断该信号源是否已经对外建立有至少一条码流链路。若是,执行步骤S103;若否,执行步骤S104。
其中,一条完整的码流链路3段码流分路,分别为信号源10到某一拉流服务节点40的第一码流分路,该拉流服务节点40到某一推流服务节点50的第二码流分路,以及,该推流服务节点50到某一播放端60的第三码流分路。
步骤S103,获取各码流链路,并基于各码流链路确定目标码流链路。
示例性地,可以基于各码流链路寻找可以复用的码流分路,然后基于各推流服务节点50的负载状态以及各拉流服务节点40的负载状态,再新建部分码流分路,从而搭建出完整的目标码流链路。
步骤S104,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路。
当目前尚未存在针对播放端60所指定的信号源的码流链路时,则需要基于各拉流服务节点40的负载状态确定目标拉流服务节点40,以及基于各推流服务节点50的负载状态确定目标推流服务节点50,并利用目标拉流服务节点40和目标推流服务节点50,构建目标码流链路。
其中,该目标码流链路用于将信号源10的流媒体数据传输至播放端60。每一拉流服务节点40的负载状态为由该拉流服务节点定期上报得到的,同样地,每一推流服务节点50的负载状态为由该推流服务节点定期上报得到的。
在本申请提供的应用于调度服务器的流媒体数据分发传输方法中,其中,组成传输链路的各拉流服务节点及各推流服务节点会定期向调度服务器上报各自的负载状态。当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源,可以理解的是,所述信号源为播放端的用户指定的。判断所述信号源是否已经对外建立有至少一条码流链路。若判断出所述信号源已经对外建立有至少一条码流链路,获取各码流链路,并基于各码流链路确定目标码流链路。其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端,通过基于已经建立好的各码流链路,确定目标码流链路,可以复用已有的码流链路,有效利用已有的软件资源。若判断出所述信号源没有对外建立任何条码流链路,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路。通过考虑各拉流服务节点的负载状态及各推流服务节点的负载状态,可以实现各拉流服务节点及各推流服务节点的负载均衡,有效利用各硬件资源。此外,由于各拉流服务节点具备独立的从各信号源拉取流媒体数据的功能,以及各推流服务节点具备独立的从各拉流服务节点拉取流媒体数据的功能,因此可以通过动态添加相应数量的拉流服务节点和/或推流服务节点来实现横向扩容,从而提高网络的吞吐量,实现有效地分发更多的类媒体数据,很好地支持了海量的播放端终端。
在本申请的一些实施例中,步骤S104提及的拉流服务节点的负载状态可以包括:拉流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数。
由于拉流服务节点需要定期将其负载状态上报至调度服务器,因此,负载状态中的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数可以是上报时所采集的实时数据。其中,拉流服务节点的码流转出路数为拉流服务节点40与推流服务节点50之间的码流分路的数量,拉流服务节点的码流转入路数为信号源10与拉流服务节点40之间的码流分路的数量。通常地,对于每一拉流服务节点,设置有码流转出路数上限以及码流转入路数上限,具体的上限值取决于拉流服务节点的硬件性能。
同样地,推流服务节点的负载状态可以包括:推流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数。
由于推流服务节点需要定期将其负载状态上报至调度服务器,因此,负载状态中的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数可以是上报时所采集的实时数据。其中,推流服务节点的码流转出路数为推流服务节点50与播放端60之间的码流分路的数量,推流服务节点的码流转入路数为拉流服务节点40与推流服务节点50之间的码流分路的数量。通常地,对于每一推流服务节点,设置有码流转出路数上限以及码流转入路数上限,具体的上限值取决于推流服务节点的硬件性能。
在本申请的一些实施例中,步骤S103基于各码流链路确定目标码流链路的过程,可以包括:
S1,获取每一码流链路中的推流服务节点的负载状态。
S2,基于各码流链路中的推流服务节点的负载状态,确定码流转出路数最少的候选推流服务节点,以及对应于该候选推流服务节点的候选码流链路。
S3,判断该候选推流服务节点的码流转出路数是否小于第一预设阈值。若是,执行S4;若否,执行S5。
其中,第一预设阈值为该候选推流服务节点预先设定的码流转出路数的上限值,一般地,对于现今主流的推流服务节点,该第一预设阈值可以设定为128,即每一推流服务节点50最多允许接入128个播放端60。
S4,建立该候选推流服务节点与该播放端之间的第三码流分路,并将该候选码流链路中的信号源与拉流服务节点之间的第一码流分路、该拉流服务节点与该候选推流服务节点之间的第二码流分路、以及该候选推流服务节点与该播放端之间的第三码流分路,确定为目标码流链路。
示例性地,请参阅图3,对于信号源1,目前已经建立有{stream1-1,stream1-2,stream1-3}这一码流链路,此时,若播放端2向调度服务器发起流媒体数据请求,且该流媒体数据请求指定要信号源1的流媒体数据,那么,调度服务器依据上述S1及S2,得到候选码流链路{stream1-1,stream1-2,stream1-3},并得到候选推流服务节点为推流服务节点1。接着,依据上述S3,由于候选推流服务节点(即推流服务节点1)的码流转出路数为1,小于第一预设阈值128,因此,依据S4,建立推流服务节点1与播放端2之间的第三码流分路stream1-4,并最终得到目标码流链路为{stream1-1,stream1-2,stream1-4}。
S5,基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取目标码流链路。
当S3中判断出码流转出路数最少的候选推流服务节点,其码流转出路数已经达到第一预设阈值,那么,意味着指定的信号源所建立的所有码流链路中的推流服务节点的码流转出路数均以达到第一预设阈值。这种情况下,应该放弃拉流服务节点至推流服务节点之间的第二码流分路,另外寻求新的推流服务节点,将其接入至已经建立的码流链路中,仅复用从信号源至拉流服务节点之间的第一码流分路。具体地,寻求各码流链路中负载相对较轻的拉流服务节点,再另外寻求新的推流服务节点,接入其中。
在本申请的一些实施例中,上述S5基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取目标码流链路的过程,可以包括:
S51,获取每一码流链路中的拉流服务节点的负载状态。
S52,基于各码流链路中的拉流服务节点的负载状态,确定码流转出路数最少的候选拉流服务节点,以及对应于该候选拉流服务节点的候选码流链路。
S53,判断该候选拉流服务节点的码流转出路数是否小于第二预设阈值。若是,执行S54;若否,执行S55。
S54,基于该候选码流链路、该候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路。
S55,基于各拉流服务节点的负载状态及各推流服务节点的服务状态,建立目标码流链路。
当信号源已经建立的各码流链路中,各推流服务节点的码流转出路数已经达到第一预设阈值,同时各拉流服务节点的码流转出路数也已经达到第二预设阈值时,意味着这些已经建立的所有码流链路都已经满载运行,无法再复用其中任何一条码流分路了。此时,则如同步骤S104一样,需要基于各拉流服务节点的负载状态,重新确定目标拉流服务节点,以及基于各推流服务节点的服务状态,重新确定目标推流服务节点,并基于目标拉流节点及目标推流节点,建立目标码流链路。
示例性地,请参阅图4,对于信号源1,目前已经建立有{stream1-1,stream1-2,stream1-3}这一码流链路,此时,若播放端129向调度服务器发起流媒体数据请求,且该流媒体数据请求指定要信号源1的流媒体数据,那么,调度服务器依据上述S1及S2,得到候选码流链路{stream1-1,stream1-2,stream1-3},并得到候选推流服务节点为推流服务节点1。接着,依据上述S3,对推流服务节点1的码流转出路数进行判断,由于此时推流服务节点1的码流转出路数已经有128路,达到了第一预设阈值,因此,跳过S4,转去执行S5。此时,由于仅存在唯一的码流链路{stream1-1,stream1-2,stream1-3},而该码流链路中的拉流服务节点1的码流转出路数为1,低于拉流服务节点的转出路数的上限值,因此,可以从各推流服务节点中选取一负载指标值最低的推流服务节点(如推流服务节点2),并建立从拉流服务节点1到推流服务节点2的第二码流分路stream1-131,以及建立从推流服务节点2到播放端129的第三码流分路stream1-132,最后得到目标码流链路{stream1-1,stream1-131,stream1-132}。
在本申请的一些实施例中,上述S54基于该候选码流链路、该候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路的过程,包括:
S541,基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点。
S542,控制建立该候选拉流服务节点与该目标推流服务节点之间的第二码流分路,以及控制建立该目标推流服务节点与该播放端之间的第三码流分路。
S543,将该候选码流链路中的信号源与该候选拉流服务节点之间的第一码流分路、该候选拉流服务节点与该目标推流服务节点之间的第二码流分路、以及该目标推流服务节点与该播放端之间的第三码流分路,确定为目标码流链路。
示例性地,请参阅图4,该候选码流链路为{stream1-1,stream1-2,stream1-3},该候选拉流服务节点为拉流服务节点1,该目标推流服务节点为推流服务节点2,那么,调度服务器向推流服务节点发送第一资源分配请求,需要注意的是,在该第一资源分配请求中携带有拉流服务节点1的信息。推流服务节点2响应该第一资源分配请求,并与拉流服务节点1建立第二码流分路stream1-131。接着,调度服务器通知信号源1向拉流服务节点1执行推流,信号源1则利用已经建立好的第一码流分路stream1-1向拉流服务节点1执行推流。接着,推流服务节点2利用第二码流分路stream1-131从拉流服务节点1处拉取流媒体数据。调度服务器通知播放端129与推流服务节点2建立第三码流分路stream1-132,播放端129建立好第三码流分路stream1-132后,利用第三码流分路stream1-132从推流服务节点2出拉取流媒体数据。
在本申请的一些实施例中,步骤S104基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路的过程,可以包括:
S1,基于各拉流服务节点的负载状态,确定负载指标值最低的目标拉流服务节点,并控制建立信号源与该目标拉流服务节点之间的第一码流分路。
S2,基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点,并控制建立该目标拉流服务节点与该目标推流服务节点之间的第二码流分路。
S3,控制建立该目标推流服务与该播放端之间的第三码流分路,并将该第一码流分路、该第二码流分路以及该第三码流分路确定为目标码流链路。
示例性地,请参阅图5,上述建立目标码流链路的过程为:
①播放端1向调度服务器发起指定信号源为信号源1的流媒体数据请求;
调度服务器接收到该流媒体数据请求后,基于各拉流服务节点的负载状态,计算各拉流服务节点的负载指标值,以及,基于各推流服务节点的负载状态,计算各推流服务节点的负载指标值,得到当前适合提供服务的节点为拉流服务节点1及推流服务节点1;
②调度服务器向拉流服务节点1发送资源分配请求;
③拉流服务节点1响应成功;
④调度服务器向推流服务节点1发送资源分配请求,其中,该资源分配请求携带有已经响应成功的拉流服务节点1的信息;
⑤推流服务节点1响应成功,并与拉流服务节点1建立第二码流分路stream1-2;
⑥调度服务器通知信号源1向拉流服务节点1执行推流;
信号源1与拉流服务节点1建立第一码流分路stream1-1,并开始推流。由于⑤中推流服务节点1与拉流服务节点1已经成功建立第二码流分路stream1-2,推流服务节点1主动拉取拉流服务节点1中来自信号源1的数据流;
⑦调度服务器携带推流服务节点1的信息响应①中播放端1的流媒体数据请求;播放端1与推流服务节点1建立第三码流分路stream1-3,并开始拉取推流服务节点1中来自信号源1的数据流。
本申请可以在视频监控、视频会议、互联网直播、物联网等超高并发的应用场景下提高云平台服务效能的方法,通过优先复用、负载均衡、智能调度、以及支持无上限的横向扩容等手段,提供设备音视频信号在整个系统中的有效利用率,避免无意义的CPU和网络资源浪费,有效利用有限的硬件设备,分发更多的音视频网络数据,最终达到在最大限度节省成本,并且具有高弹性的实时扩容能力的前提下,支持海量终端的目的。
下面对本申请实施例提供的流媒体数据分发传输装置进行描述,下文描述的流媒体数据分发传输装置与上文描述的流媒体数据分发传输方法可相互对应参照。
请参见图6,本申请实施例提供的流媒体数据分发传输装置,可以包括:
请求接收单元21,用于当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
链路判断单元22,用于判断所述信号源是否已经对外建立有至少一条码流链路;
链路复用单元23,用于当所述链路判断单元确定所述信号源已经对外建立有至少一条码流链路时,获取各码流链路,并基于各码流链路确定目标码流链路;
链路新建单元24,用于当所述链路判断单元确定所述信号源没有对外建立任何码流链路时,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
在本申请的一些实施例中,链路复用单元23基于各码流链路确定目标码流链路的过程,可以包括:
获取每一码流链路中的推流服务节点的负载状态;
基于各码流链路中的推流服务节点的负载状态,确定码流转出路数最少的候选推流服务节点以及对应于所述候选推流服务节点的候选码流链路;
判断所述候选推流服务节点的码流转出路数是否小于第一预设阈值;
若是:
建立所述候选推流服务节点与所述播放端之间的第三码流分路,并将所述候选码流链路中的所述信号源与拉流服务节点之间的第一码流分路、所述拉流服务节点与所述候选推流服务节点之间的第二码流分路、以及所述候选推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路;
若否:
基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路。
在本申请的一些实施例中,链路复用单元23基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路的过程,可以包括:
获取每一码流链路中的拉流服务节点的负载状态;
基于各码流链路中的拉流服务节点的负载状态,确定码流转出路数最少的候选拉流服务节点以及对应于所述候选拉流服务节点的候选码流链路;
判断所述候选拉流服务节点的码流转出路数是否小于第二预设阈值;
若是,基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的服务状态,建立目标码流链路。
在本申请的一些实施例中,链路复用单元23基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路的过程,可以包括:
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点;
控制建立所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路,以及控制建立所述目标推流服务节点与所述播放端之间的第三码流分路;
将所述候选码流链路中的所述信号源与所述候选拉流服务节点之间的第一码流分路、所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路、以及所述目标推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路。
在本申请的一些实施例中,链路新建单元24基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路的过程,可以包括:
基于各拉流服务节点的负载状态,确定负载指标值最低的目标拉流服务节点,并控制建立所述信号源与所述目标拉流服务节点之间的第一码流分路;
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点,并控制建立所述目标拉流服务节点与所述目标推流服务节点之间的第二码流分路;
控制建立所述目标推流服务与所述播放端之间的第三码流分路,并将所述第一码流分路、所述第二码流分路以及所述第三码流分路确定为所述目标码流链路。
本申请实施例提供的流媒体数据分发传输装置可应用于流媒体数据分发传输设备,如计算机等。可选的,图7示出了流媒体数据分发传输设备的硬件结构框图,参照图7,流媒体数据分发传输设备的硬件结构可以包括:至少一个处理器31,至少一个通信接口32,至少一个存储器33和至少一个通信总线34。
在本申请实施例中,处理器31、通信接口32、存储器33、通信总线34的数量为至少一个,且处理器31、通信接口32、存储器33通过通信总线34完成相互间的通信;
处理器31可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路等;
存储器33可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;
其中,存储器33存储有程序,处理器31可调用存储器33存储的程序,所述程序用于:
当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
判断所述信号源是否已经对外建立有至少一条码流链路;
若是,获取各码流链路,并基于各码流链路确定目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
判断所述信号源是否已经对外建立有至少一条码流链路;
若是,获取各码流链路,并基于各码流链路确定目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
综上所述:
在本申请提供的应用于调度服务器的流媒体数据分发传输方法中,其中,组成传输链路的各拉流服务节点及各推流服务节点会定期向调度服务器上报各自的负载状态。当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源,可以理解的是,所述信号源为播放端的用户指定的。判断所述信号源是否已经对外建立有至少一条码流链路。若判断出所述信号源已经对外建立有至少一条码流链路,获取各码流链路,并基于各码流链路确定目标码流链路。其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端,通过基于已经建立好的各码流链路,确定目标码流链路,可以复用已有的码流链路,有效利用已有的软件资源。若判断出所述信号源没有对外建立任何条码流链路,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路。通过考虑各拉流服务节点的负载状态及各推流服务节点的负载状态,可以实现各拉流服务节点及各推流服务节点的负载均衡,有效利用各硬件资源。此外,由于各拉流服务节点具备独立的从各信号源拉取流媒体数据的功能,以及各推流服务节点具备独立的从各拉流服务节点拉取流媒体数据的功能,因此可以通过动态添加相应数量的拉流服务节点和/或推流服务节点来实现横向扩容,从而提高网络的吞吐量,实现有效地分发更多的类媒体数据,很好地支持了海量的播放端终端。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种流媒体数据分发传输方法,其特征在于,包括:
当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
判断所述信号源是否已经对外建立有至少一条码流链路;
若是,获取各码流链路,并基于各码流链路确定目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
2.根据权利要求1所述的方法,其特征在于,基于各码流链路确定目标码流链路的过程,包括:
获取每一码流链路中的推流服务节点的负载状态;
基于各码流链路中的推流服务节点的负载状态,确定码流转出路数最少的候选推流服务节点以及对应于所述候选推流服务节点的候选码流链路;
判断所述候选推流服务节点的码流转出路数是否小于第一预设阈值;
若是:
建立所述候选推流服务节点与所述播放端之间的第三码流分路,并将所述候选码流链路中的所述信号源与拉流服务节点之间的第一码流分路、所述拉流服务节点与所述候选推流服务节点之间的第二码流分路、以及所述候选推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路;
若否:
基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路。
3.根据权利要求2所述的方法,其特征在于,基于各码流链路及各码流链路中的拉流服务节点的负载状态,获取所述目标码流链路的过程,包括:
获取每一码流链路中的拉流服务节点的负载状态;
基于各码流链路中的拉流服务节点的负载状态,确定码流转出路数最少的候选拉流服务节点以及对应于所述候选拉流服务节点的候选码流链路;
判断所述候选拉流服务节点的码流转出路数是否小于第二预设阈值;
若是,基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路;
若否,基于各拉流服务节点的负载状态及各推流服务节点的服务状态,建立目标码流链路。
4.根据权利要求3所述的方法,其特征在于,基于所述候选码流链路、所述候选拉流服务节点及各推流服务节点的服务状态,建立目标码流链路的过程,包括:
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点;
控制建立所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路,以及控制建立所述目标推流服务节点与所述播放端之间的第三码流分路;
将所述候选码流链路中的所述信号源与所述候选拉流服务节点之间的第一码流分路、所述候选拉流服务节点与所述目标推流服务节点之间的第二码流分路、以及所述目标推流服务节点与所述播放端之间的第三码流分路,确定为所述目标码流链路。
5.根据权利要求1所述的方法,其特征在于,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路的过程,包括:
基于各拉流服务节点的负载状态,确定负载指标值最低的目标拉流服务节点,并控制建立所述信号源与所述目标拉流服务节点之间的第一码流分路;
基于各推流服务节点的负载状态,确定负载指标值最低的目标推流服务节点,并控制建立所述目标拉流服务节点与所述目标推流服务节点之间的第二码流分路;
控制建立所述目标推流服务与所述播放端之间的第三码流分路,并将所述第一码流分路、所述第二码流分路以及所述第三码流分路确定为所述目标码流链路。
6.根据权利要求1~5中任一项所述的方法,其特征在于,每一拉流服务节点的负载状态包括:所述拉流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数;
每一推流服务节点的负载状态包括:所述推流服务节点的CPU占用率、内存占用率、网卡速率、码流转出路数以及码流转入路数。
7.一种流媒体数据分发传输系统,其特征在于,包括调度服务器以及与所述调度服务器通信连接的多个信号源、多个拉流服务节点、多个推流服务节点和多个播放端;
所述信号源用于提供流媒体数据;
所述拉流服务节点定期将负载状态上报至所述调度服务器,用于通过与信号源之间的第一码流分路向信号源拉取流媒体数据;
所述推流服务节点定期将负载状态上报至所述调度服务器,用于通过与拉流服务节点之间的第二码流分路向拉流服务节点拉取流媒体数据;
所述播放端用于向所述调度服务器提交指定信号源的流媒体数据请求,并通过与推流服务节点之间的第三码流分路向推流服务节点拉取流媒体数据;
所述调度服务器用于实现如权利要求1~6中任一项所述的流媒体数据分发传输方法。
8.一种流媒体数据分发传输装置,其特征在于,包括:
请求接收单元,用于当接收到播放端的流媒体数据请求时,获取所述流媒体数据请求中包含的信号源;
链路判断单元,用于判断所述信号源是否已经对外建立有至少一条码流链路;
链路复用单元,用于当所述链路判断单元确定所述信号源已经对外建立有至少一条码流链路时,获取各码流链路,并基于各码流链路确定目标码流链路;
链路新建单元,用于当所述链路判断单元确定所述信号源没有对外建立任何码流链路时,基于各拉流服务节点的负载状态及各推流服务节点的负载状态,建立目标码流链路;
其中,所述目标码流链路用于将所述信号源的流媒体数据传输至所述播放端;每一拉流服务节点的负载状态为由所述拉流服务节点定期上报得到的,每一推流服务节点的负载状态为由所述推流服务节点定期上报得到的。
9.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~6中任一项所述的流媒体数据分发传输方法的各个步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~6中任一项所述的流媒体数据分发传输方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211714499.3A CN115955469A (zh) | 2022-12-29 | 2022-12-29 | 一种流媒体数据分发传输方法、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211714499.3A CN115955469A (zh) | 2022-12-29 | 2022-12-29 | 一种流媒体数据分发传输方法、系统及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115955469A true CN115955469A (zh) | 2023-04-11 |
Family
ID=87285450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211714499.3A Pending CN115955469A (zh) | 2022-12-29 | 2022-12-29 | 一种流媒体数据分发传输方法、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115955469A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116567356A (zh) * | 2023-06-07 | 2023-08-08 | 佛山市炫新智能科技有限公司 | 一种基于多平台推流的直播显示系统及其推送方法 |
-
2022
- 2022-12-29 CN CN202211714499.3A patent/CN115955469A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116567356A (zh) * | 2023-06-07 | 2023-08-08 | 佛山市炫新智能科技有限公司 | 一种基于多平台推流的直播显示系统及其推送方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pasquale et al. | Filter propagation in dissemination trees: Trading off bandwidth and processing in continuous media networks | |
US8892625B2 (en) | Hierarchically clustered P2P streaming system | |
CN110300184A (zh) | 边缘节点分配方法、装置、调度服务器及存储介质 | |
CN106385435A (zh) | 一种业务系统的服务治理方法和系统 | |
CN108427619B (zh) | 日志管理方法、装置、计算设备及存储介质 | |
CN113873005B (zh) | 一种微服务集群的节点选主方法、系统、设备及介质 | |
CN115955469A (zh) | 一种流媒体数据分发传输方法、系统及相关设备 | |
CN110366056B (zh) | 一种ason业务模型的实现方法、装置、设备及存储介质 | |
CN115175027B (zh) | 面向基于Spanke架构全光交换数据中心的Ring业务部署方法 | |
US20230275807A1 (en) | Data processing method and device | |
CN114884908A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN117149445B (zh) | 一种跨集群负载均衡方法及装置、设备及存储介质 | |
CN112260946A (zh) | 一种链路故障的处理方法、装置、终端设备和存储介质 | |
CN114598825B (zh) | 视音频信号调度方法、装置、计算机设备及可读存储介质 | |
JP3092580B2 (ja) | 帯域割当て方法、及び伝送システム | |
CN108235259B (zh) | 分组传送网的组播业务实现方法及其装置、通信系统 | |
RU2522995C2 (ru) | Способ и устройство создания одноранговой группы в одноранговом приложении и способ применения одноранговой группы | |
CN112351432B (zh) | 一种前传网络资源管理方法和装置 | |
CN113098914B (zh) | 消息总线系统及消息传输方法、装置、电子设备 | |
CN116055496B (zh) | 一种监控数据采集方法、装置、电子设备及存储介质 | |
CN102546995A (zh) | 一种数据分发处理方法和装置 | |
CN117527590B (zh) | 基于边缘网络的微服务部署与请求路由方法、系统及介质 | |
US20240214921A1 (en) | Network path selection based on power consumption | |
CN111836003A (zh) | 一种基于sdn的媒体流链路智能选择方法及装置 | |
WO2020248712A1 (zh) | 光电转换装置部署规划方法、系统、网络设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |