CN108307198B - 流服务节点调度方法、装置及调度节点 - Google Patents
流服务节点调度方法、装置及调度节点 Download PDFInfo
- Publication number
- CN108307198B CN108307198B CN201810191844.7A CN201810191844A CN108307198B CN 108307198 B CN108307198 B CN 108307198B CN 201810191844 A CN201810191844 A CN 201810191844A CN 108307198 B CN108307198 B CN 108307198B
- Authority
- CN
- China
- Prior art keywords
- node
- flow
- scheduling
- pull
- stream
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2405—Monitoring of the internal components or processes of the server, e.g. server load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种流服务节点调度方法、装置及调度节点,属于网络技术领域。所述方法包括:当接收到拉流调度请求时,获取所述拉流调度请求指示的数据流的特征值,所述拉流调度请求用于请求调度拉取所述数据流的拉流节点;根据特征值与拉流节点之间的第一预设对应关系,确定所述特征值对应的目标拉流节点;调度所述目标拉流节点拉取所述数据流。本发明避免了重复拉取数据流造成流量冗余的情况,极大地节省了带宽,节约了成本。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种流服务节点调度方法、装置及调度节点。
背景技术
流媒体服务系统的系统架构中通常包括大量流服务节点,不同流服务节点可以用于执行不同的任务,通过调度每个流服务节点执行对应的任务,可以实现传输数据流的功能。
参见图1,在传输数据流的过程中,流媒体服务系统中的每个流服务节点可根据业务需求分别部署为推流节点、调度节点或者拉流节点,当发送终端生成待传输的数据流后,发送终端会向调度节点发送推流调度请求,调度节点接收到推流调度请求时,会从机房中的所有推流节点中选择目标推流节点,调度该目标推流节点接收数据流。当接收终端要获取该数据流时,接收终端会向调度节点发送拉流调度请求,调度节点接收到拉流调度请求后,会从机房中的所有拉流节点中选择目标拉流节点,调度该目标拉流节点拉取数据流,目标拉流节点会从目标推流节点拉取数据流,以便接收终端从目标拉流节点拉取数据流,从而接收到数据流。
其中,针对调度节点选择目标拉流节点的过程,调度节点每当接收到拉流调度请求时,会确定机房中的每个拉流节点当前的负载,从机房中的所有拉流节点中选择负载最轻的拉流节点,作为目标拉流节点。以流媒体服务为视频直播为例,参见图2,假设主播终端接入的目标推流节点为机房A中的推流节点A1,当观众终端1进入主播的直播间,向调度节点发送拉流调度请求时,假设机房B中当前负载最轻的拉流节点为拉流节点B1,调度节点会选择拉流节点B1为目标推流节点,调度拉流节点B1拉取视频流,则拉流节点B1会从推流节点A1拉取视频流,以便观众终端1从拉流节点B1拉取视频流,从而播放主播的视频。之后,当观众终端2也进入该直播间,向调度节点发送拉流调度请求时,假设机房B中当前负载最轻的拉流节点为拉流节点B2,调度节点会选择拉流节点B2为目标流服务节点,调度拉流节点B2拉取视频流,拉流节点B2会从推流节点A1拉取视频流,以便观众终端2从拉流节点B2拉取视频流,从而播放主播的视频。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
从上述示例可以看出,拉流节点B1拉取的视频流与拉流节点B2拉取的视频流为同一路视频流,同一路视频流在机房A和机房B之间重复地传输多份,造成流量冗余,导致流媒体服务系统运行的开销过大。
发明内容
本发明实施例提供了一种流服务节点调度方法、装置及调度节点,能够解决相关技术中同一路视频流重复传输多份的技术问题。所述技术方案如下:
一方面,提供了一种流服务节点方法,应用于调度节点中,所述方法包括:
当接收到拉流调度请求时,获取所述拉流调度请求指示的数据流的特征值,所述拉流调度请求用于请求调度拉取所述数据流的拉流节点;
根据特征值与拉流节点之间的第一预设对应关系,确定所述特征值对应的目标拉流节点;
调度所述目标拉流节点拉取所述数据流。
本发明实施例提供的方法,提供了一种能够节省流量的调度策略,该调度策略可实现为同一路数据流调度的拉流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到该数据流对应的调度请求时,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个流服务节点根据第一预设对应关系确定,而第一预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第一预设对应关系时,均会确定出相同的拉流节点,即目标拉流节点,那么,当任意接收终端在任意时间点发起针对数据流的拉流调度请求时,拉取该数据流的任务都会固定分配给目标拉流节点,而不会被重复分配给目标拉流节点以外的其他流服务节点,其他流服务节点也就不会重复拉取数据流,避免了重复拉取数据流造成流量冗余的情况,极大地节省了带宽,节约了成本。
在一种可能的设计中,所述获取所述拉流调度请求指示的数据流的特征值,包括:
获取所述拉流调度请求携带的流标识,所述流标识用于指示所述数据流;
计算所述流标识的哈希值;
根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值。
在一种可能的设计中,所述第一预设对应关系包括多个预设特征值区间以及对应的多个拉流节点,所述根据特征值与拉流节点之间的第一预设对应关系,确定所述特征值对应的目标拉流节点,包括:
根据所述特征值所属的目标预设特征值区间,获取所述第一预设对应关系中所述目标预设特征值区间对应的拉流节点,作为所述目标拉流节点。
在一种可能的设计中,所述获取所述拉流调度请求指示的数据流的特征值之前,所述方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点;
根据分配的结果,建立所述第一预设对应关系。
在一种可能的设计中,所述预设特征值范围的最大值为预设基数,所述预设基数用于确定特征值所属的预设特征值区间,所述预设基数与所述拉流节点集合中拉流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,所述调度所述目标拉流节点拉取所述数据流之后,所述方法还包括:
存储第一调度记录,所述第一调度记录用于指示所述目标拉流节点和所述数据流之间的对应关系;
当接收到拉流调度请求时,根据所述拉流调度请求指示的数据流,查询所述第一调度记录,得到所述目标拉流节点。
在一种可能的设计中,所述存储第一调度记录,包括:
当所述目标拉流节点未拉取到所述数据流的时长超过预设时长时,存储所述第一调度记录;或,
当传输所述数据流的网络链路发生故障时,存储所述第一调度记录。
另一方面,提供了一种流服务节点调度方法,应用于调度节点中,所述方法包括:
当接收到推流调度请求时,获取所述推流调度请求指示的数据流的特征值,所述推流调度请求用于请求调度接收所述数据流的推流节点;
根据特征值与推流节点之间的第二预设对应关系,确定所述特征值对应的目标推流节点;
调度所述目标推流节点接收所述数据流。
本实施例提供的方法,提供了一种高稳定的调度策略,该调度策略可以实现为同一路数据流的调度的推流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到推流调度请求时,根据推流调度请求指示的数据流,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个推流节点根据第二预设对应关系确定,而第二预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第二预设对应关系时,均会确定出相同的推流节点,即目标推流节点,那么,当发送终端在任意时间点发起针对数据流的推流调度请求时,拉取该数据流的任务都会固定分配给目标推流节点,而不会分配给目标推流节点的其他推流节点,从而避免推流节点的反复调整,进而避免拉流节点由于推流节点的调整反复调整网络拓扑的情况,保证传输数据流的网络拓扑结构稳定,不至于产生拉流紊乱的情况。
在一种可能的设计中,所述获取所述推流调度请求指示的数据流的特征值,包括:
获取所述推流调度请求携带的流标识,所述流标识用于指示所述数据流;
计算所述流标识的哈希值;
根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值。
在一种可能的设计中,所述第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点,所述根据特征值与推流节点之间的第二预设对应关系,确定所述特征值对应的目标推流节点,包括:
根据所述特征值所属的目标预设特征值区间,获取所述第二预设对应关系中所述目标预设特征值区间对应的推流节点,作为所述目标推流节点。
在一种可能的设计中,所述获取所述推流调度请求指示的数据流的特征值之前,所述方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为推流节点集合中的每个推流节点分配对应的预设特征值区间,所述推流节点集合是指所述调度节点能够调度的多个推流节点;
根据分配的结果,建立所述第二预设对应关系。
在一种可能的设计中,所述预设特征值范围的最大值为预设基数,所述预设基数用于确定特征值所属的预设特征值区间,所述预设基数与所述推流节点集合中推流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,所述调度所述目标推流节点接收所述数据流之后,所述方法还包括:
存储第二调度记录,所述第二调度记录用于指示所述目标推流节点和所述数据流之间的对应关系;
当接收到推流调度请求时,根据所述推流调度请求指示的数据流,查询所述第二调度记录,得到所述目标推流节点。
在一种可能的设计中,所述存储第二调度记录,包括:
当所述目标推流节点未拉取到所述数据流的时长超过预设时长时,存储所述第二调度记录;或,
当传输所述数据流的网络链路发生故障时,存储所述第二调度记录。
在一种可能的设计中,当拉流节点集合和推流节点集合相同时,所述目标推流节点和所述目标拉流节点为同一个流服务节点,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点,所述推流节点集合是指所述调度节点能够调度的多个推流节点。
另一方面,提供了一种流服务节点装置,应用于调度节点中,所述装置包括:
获取模块,用于当接收到拉流调度请求时,获取所述拉流调度请求指示的数据流的特征值,所述拉流调度请求用于请求调度拉取所述数据流的拉流节点;
确定模块,用于根据特征值与拉流节点之间的第一预设对应关系,确定所述特征值对应的目标拉流节点;
调度模块,用于调度所述目标拉流节点拉取所述数据流。
在一种可能的设计中,所述获取模块,包括:
获取子模块,用于获取所述拉流调度请求携带的流标识,所述流标识用于指示所述数据流;
计算子模块,用于计算所述流标识的哈希值;
取模子模块,用于根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值。
在一种可能的设计中,所述第一预设对应关系包括多个预设特征值区间以及对应的多个推流节点,所述确定模块,用于根据所述特征值所属的目标预设特征值区间,获取所述第一预设对应关系中所述目标预设特征值区间对应的拉流节点,作为所述目标拉流节点。
在一种可能的设计中,所述装置还包括:
划分模块,用于对预设特征值范围进行划分,得到多个预设特征值区间;
分配模块,用于为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点;
建立模块,用于根据分配的结果,建立所述第一预设对应关系。
在一种可能的设计中,所述预设特征值范围的最大值为预设基数,所述预设基数用于确定特征值所属的预设特征值区间,所述预设基数与所述拉流节点集合中拉流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,所述装置还包括:
存储模块,用于存储第一调度记录,所述第一调度记录用于指示所述目标拉流节点和所述数据流之间的对应关系。
查询模块,用于当接收到拉流调度请求时,根据所述拉流调度请求指示的数据流,查询所述第一调度记录,得到所述目标拉流节点。
在一种可能的设计中,所述存储模块,还用于当所述目标拉流节点未拉取到所述数据流的时长超过预设时长时,存储所述第一调度记录;或,当传输所述数据流的网络链路发生故障时,存储所述第一调度记录。
另一方面,提供了一种流服务节点装置,应用于调度节点中,所述装置包括:
获取模块,用于当接收到推流调度请求时,获取所述推流调度请求指示的数据流的特征值,所述推流调度请求用于请求调度接收所述数据流的推流节点;
确定模块,用于根据特征值与推流节点之间的第二预设对应关系,确定所述特征值对应的目标推流节点;
调度模块,用于调度所述目标推流节点接收所述数据流。
在一种可能的设计中,所述获取模块,包括:
获取子模块,用于获取所述推流调度请求携带的流标识,所述流标识用于指示所述数据流;
计算子模块,用于计算所述流标识的哈希值;
取模子模块,用于根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值。
在一种可能的设计中,所述第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点,所述确定模块,用于根据所述特征值所属的目标预设特征值区间,获取所述第二预设对应关系中所述目标预设特征值区间对应的推流节点,作为所述目标推流节点。
在一种可能的设计中,所述装置还包括:
划分模块,用于对预设特征值范围进行划分,得到多个预设特征值区间;
分配模块,用于为推流节点集合中的每个推流节点分配对应的预设特征值区间,所述推流节点集合是指所述调度节点能够调度的多个推流节点;
建立模块,用于根据分配的结果,建立所述第二预设对应关系。
在一种可能的设计中,所述预设特征值范围的最大值为预设基数,所述预设基数用于确定特征值所属的预设特征值区间,所述预设基数与所述推流节点集合中推流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,所述装置还包括:
存储模块,用于存储第二调度记录,所述第二调度记录用于指示所述目标推流节点和所述数据流之间的对应关系。
查询模块,用于当接收到推流调度请求时,根据所述推流调度请求指示的数据流,查询所述第二调度记录,得到所述目标推流节点。
在一种可能的设计中,所述存储模块,还用于当所述目标推流节点未拉取到所述数据流的时长超过预设时长时,存储所述第二调度记录;或,当传输所述数据流的网络链路发生故障时,存储所述第二调度记录。
在一种可能的设计中,当拉流节点集合和推流节点集合相同时,所述目标推流节点和所述目标拉流节点为同一个流服务节点,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点,所述推流节点集合是指所述调度节点能够调度的多个推流节点。
另一方面,提供了一种流媒体服务系统,所述流媒体服务系统包括调度节点,所述调度节点用于执行上述流服务节点调度方法。
另一方面,提供了一种调度节点,所述调度节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述流服务节点调度方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述流服务节点调度方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种传输数据流的示意图;
图2是相关技术提供的一种视频直播场景中传输视频流的示意图;
图3是本发明实施例提供的一种流媒体服务系统的架构示意图;
图4是本发明实施例提供的一种流媒体服务系统的架构示意图;
图5是本发明实施例提供的一种视频直播场景中传输视频流的示意图;
图6是相关技术提供的一种视频直播场景中传输视频流的示意图;
图7是本发明实施例提供的一种视频直播场景中传输视频流的示意图;
图8是相关技术提供的一种视频直播场景中传输视频流的示意图;
图9是本发明实施例提供的一种视频直播场景中传输视频流的示意图;
图10是本发明实施例提供的一种流服务节点调度方法的流程图;
图11是本发明实施例提供的一种流服务节点调度方法的流程图;
图12是本发明实施例提供的一种流服务节点调度方法的流程图;
图13是本发明实施例提供的一种确定数据流的特征值的示意图;
图14是本发明实施例提供的一种第一预设对应关系的示意图;
图15是本发明实施例提供的一种流服务节点调度方法的流程图;
图16是本发明实施例提供的一种流服务节点调度方法的流程图;
图17是本发明实施例提供的一种流服务节点调度装置的结构示意图;
图18是本发明实施例提供的一种流服务节点调度装置的结构示意图;
图19是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图3是本发明实施例提供的一种流媒体服务系统的架构示意图,该流媒体服务系统包括调度节点301和多个拉流节点302,该调度节点301和该多个拉流节点302之间建立了网络连接,可以通过建立的网络连接进行通信。
调度节点301用于调度多个拉流节点302,当接收到数据流的拉流调度请求时,调度节点301可以从多个拉流节点302中确定出目标拉流节点,调度该目标拉流节点拉取数据流。调度节点301的物理形态可以为一台服务器,或者为多台服务器组成的集群。
拉流节点302用于提供拉流服务,拉流节点302可以拉取到数据流,以便数据流的接收终端从拉流节点302中拉取数据流。拉流节点302的物理形态可以为一台服务器。
针对流媒体服务系统的部署方式,在一种可能的设计中,可以将一个机房作为部署流媒体服务系统的基本单位,将机房中的某一个或多个流服务节点部署为调度节点301,将其余流服务节点均部署为拉流节点302,则调度节点301和拉流节点302基于机房的内网进行通信。当然,调度节点301也可以无需和拉流节点302位于同一机房,而是部署于云端,基于网络链路远程地调度拉流节点302。
可选地,参见图4,流媒体服务系统中还可以包括多个推流节点303,该调度节点301和该多个推流节点303建立了网络连接,可以通过建立的网络连接进行通信。
推流节点303用于提供推流服务,数据流的发送终端可以向推流节点303推送数据流,推流节点303可以接收推送的数据流,以便向数据流的接收终端提供数据流。
针对拉流节点302和推流节点303之间的关系,本发明实施例中,拉流节点302和推流节点303可以部署为不同的流服务节点,拉流节点302和推流节点303可以进行网络连接,在数据流的传输过程中,推流节点303为数据流的流出方,拉流节点302为数据流的流入方,拉流节点302可以从推流节点303拉取数据流,从而得到推流节点303缓存的数据流。另外,拉流节点302和推流节点303也可以为同一个流服务节点,则该流服务节点可以同时充当推流节点303和拉流节点302,当数据流的发送终端向该流服务节点推送数据流后,该流服务节点即得到了数据流,数据流的接收终端可以直接从该流服务节点拉取数据流。
以下,结合实际应用场景,通过(1)至(3)对本发明实施例至少具有的几个突出效果进行描述:
(1)本发明实施例提供的流媒体服务系统中,将同一路数据流的拉流节点固定为一个流服务节点,即,对于任一路数据流来说,流媒体服务系统中始终由该数据流唯一对应的拉流节点拉取数据流,如果数据流不变,则该数据流的拉流节点不变。通过保证任一路数据流的拉流节点的同一性,可以极大地节省流媒体服务系统耗费的流量,从而节约了流媒体服务系统的运营成本。
以下,对实现这一技术效果的原理进行详细论证:
网络拓扑结构的背景:流媒体服务系统的网络拓扑结构通常包括多个机房,在传输数据流的过程中,经常以跨机房的方式传输各路数据流。例如,如果某一路数据流的发送终端和接收终端位于不同的地点,按照组网的就近分配原则,为发送终端分配的推流节点应当与发送终端的地点接近,为接收终端分配的拉流节点应当与接收终端的地点接近,则能够调度的推流节点的范围和能够调度的拉流节点的范围为不同地点的机房,因此数据流需要在推流节点和拉流节点之间跨机房传输。例如,当主播位于北京市、观众位于广州市时,能够调度的推流节点的范围可以为北京市中的机房A中的所有流服务节点,能够调度的拉流节点的范围可以为广州市的机房B的所有流服务节点,则主播终端会接入机房A的某一推流节点,观众终端会接入机房B中的某一拉流节点,数据流会跨越机房A传输至机房B,从而从北京市传输至广州市。
相关技术中,调度节点每次为每路数据流分配拉流节点时,都会调度机房中当前负载最轻的拉流节点拉取数据流,因此,为同一路数据流调度的拉流节点具有不一致性,即,针对同一路数据流的多次拉流调度过程,若每次确定的负载最轻的拉流节点不一致,则调度的拉流节点也会不一致。由于为一路数据流调度了多个拉流节点,每个拉流节点都会从推流节点拉取数据流,导致多个拉流节点之间拉取重复的数据流,因此,一路数据流会在传输中变为重复的多份,在推流节点和拉流节点之间通过多路传输路径并行传输,造成极大的流量冗余。
而本发明中,调度节点每次为每路数据流分配拉流节点时,都会调度与数据流唯一对应的拉流节点拉取数据流,因此,为同一路数据流调度的拉流节点具有一致性,即,针对同一路数据流的多次拉流调度过程,每次调度的拉流节点固定为同一个目标拉流节点。通过为一路数据流固定调度同一个目标拉流节点,只由目标拉流节点从推流节点拉取数据流即可,其他拉流节点不会重复拉取数据流,也就不会造成数据流的重复多份传输,从而避免流量冗余,极大地节省流量,从而极大地减少了流媒体服务系统的成本。
为使上述优点更加清楚明白,以下结合一种实际应用场景进行阐述。
以视频直播的场景为例,则数据流为视频流,视频流的发送终端为主播终端,视频流的接收终端为观众终端。以观众终端1、观众终端2要求流媒体服务系统提供主播终端的视频流为例,假设主播终端接入的推流节点为机房A中的流服务节点A1,同时调度节点可以调度的拉流节点为机房B中的所有流服务节点。
相关技术中,参见图2,由于观众终端1、观众终端2进入直播间的时间的不一致以及网络中信息同步的时延,调度节点为各个观众终端调度拉流节点时,确定的机房B当前负载最轻的流服务节点经常不一致,例如为观众终端1调度拉流节点时,机房B当前负载最轻的拉流节点为拉流节点B1,为观众终端2调度拉流节点时,机房B当前负载最轻的拉流节点为拉流节点B2,则会调度拉流节点B1为观众终端1拉流、拉流节点B2为观众终端2拉流,则拉流节点B1、拉流节点B2会从推流节点A1拉取同一路数据流,导致数据流在机房A和机房B之间重复的传输两份。
而本发明实施例中,参见图5,由于观众终端1和观众终端2进入的是同一个直播间,播放的是同一路数据流,而本发明实施例提供的调度策略中同一路数据流唯一对应同一个目标拉流节点,调度节点会为观众终端1和观众终端2调度相同的目标拉流节点,假设该目标拉流节点为拉流节点B1,则固定由拉流节点B1从推流节点A1拉取数据流,由拉流节点B1统一为两个观众终端提供拉流服务,而其他拉流节点不会被调度拉取该数据流。由于数据流在机房A和机房B之间只需传输一份,节省了机房A和机房B之间的流量和带宽资源。
(2)本发明实施例提供的流媒体服务系统中,还可以将同一路数据流的推流节点也固定为一个流服务节点,即,对于任一路数据流来说,流媒体服务系统中始终由该数据流唯一对应的推流节点接收数据流,如果数据流不变,则该数据流的推流节点不变,通过保证任一路数据流的推流节点的同一性,可以保证流媒体服务系统的网络拓扑结构的稳定性,避免由于推流节点的反复调整,导致拉流节点的拉流对象随之反复调整,以至拉流节点拉流紊乱的情况。以下,对实现这一技术效果的原理进行详细论证:
相关技术中,调度节点每次为每路数据流分配推流节点时,都会调度机房中当前负载最轻的推流节点接收数据流,因此,为同一路数据流调度的推流节点具有不一致性,即,针对同一路数据流的多次推流调度过程,若每次确定的负载最轻的推流节点不一致,则调度的推流节点也会不一致。因此,如果同一发送终端先后多次发送同一路数据流的推流调度请求时,重新为数据流分配的推流节点和原先为数据流分配的推流节点经常不一致,导致数据流的推流节点发生调整。而推流节点调整后,推流节点和拉流节点的网络拓扑结构随之调整,拉流节点需要调整当前的拉流对象,以便从最新调度的推流节点拉取数据流,而网络拓扑的频繁更新提高了网络拓扑结构的复杂度,影响数据流的传输过程的稳定性,容易导致拉流紊乱的情况,影响流媒体服务系统的正常运行。
而本发明中,调度节点每次为每路数据流分配推流节点时,都会调度与数据流唯一对应的推流节点接收数据流,因此,为同一路数据流调度的推流节点具有一致性,即,针对同一路数据流的多次推流调度过程,每次调度的推流节点固定为同一个目标推流节点,固定由该目标推流节点接收数据流。因此当发送终端先后多次发送推流调度请求时,为数据流调度的目标推流节点始终不变,而不会出现推流节点反复调整的情况,拉流节点也就无需反复调整拉流对象,传输数据流的网络拓扑结构保持稳定,从而避免出现拉流紊乱的情况,提高流媒体服务系统的稳定性。
为使上述优点更加清楚明白,以下结合一种实际应用场景进行阐述。
以视频直播的场景为例,则数据流为视频流,视频流的发送终端为主播终端,视频流的接收终端为观众终端。以观众终端1、观众终端2、观众终端3要求流媒体服务系统提供主播终端的视频流为例,假设调度节点可以调度的拉流节点为机房A中的所有流服务节点。
相关技术中,参见图6,当主播频繁刷新开播时,主播终端会先后多次向调度节点发送同一路视频流对应的推流调度请求,调度节点每次处理推流调度请求时,确定的机房A当前负载最轻的流服务节点经常不一致,例如第一次处理推流调度请求时,机房A当前负载最轻的流服务节点为A1,第二次处理推流调度请求时,机房A当前负载最轻的流服务节点为A2,则第二次调度推流节点时,拉流侧的两个拉流节点B1、B2均需要更新网络拓扑关系,将推流节点从A1调整为A2,造成网络拓扑结构的不稳定性。
而本发明实施例中,参见图7,由于主播终端先后多次请求推送的是同一路视频流,而本发明实施例提供的调度策略中同一路数据流唯一对应同一个目标推流节点,则调度节点每次处理主播终端的推流调度请求时,调度的推流节点保持一致,例如假设第一次处理推流调度请求时,调度的推流节点为A1,则第二次处理推流调度请求时,调度的推流节点仍会为A1,由于推流节点的稳定性,保证拉流节点B1无需反复调整推流节点,提高网络拓扑结构的稳定性。
(3)本发明实施例提供的流媒体服务系统中,结合推流节点的同一性以及拉流节点的同一性,当调度节点能够调度的推流节点集合和能够调度的拉流节点集合相同,可以实现推流节点和拉流节点之间也具有同一性,即,对于任一路数据流来说,如果从同一个流服务节点集合选择推流节点和拉流节点,则会选择同一个流服务节点同时充当推流节点和拉流节点,因此无需在推流节点和拉流节点之间转发数据流,从而减少了数据流经过的流服务节点的数量,缩短了数据流的传输路径,避免流服务节点之间互拉数据流、乱拉数据流的情况,优化了流媒体服务系统的网络拓扑结构,提高流媒体服务系统传输数据流的效率和速度。
以下,对实现这一技术效果的原理进行详细论证:
网络拓扑结构的背景:流媒体服务系统在传输数据流的过程中,也存在只经过一个机房传输数据流的情况,例如如果某一路数据流的发送终端和接收终端的位置接近,按照组网的就近分配原则,能够调度的推流节点集合以及能够调度的拉流节点集合可以正好相同。例如,当主播和观众刚好都位于流媒体服务系统的某个机房附近时,该机房会同时充当能够调度的推流节点集合和能够调度的拉流节点集合。
相关技术中,每当调度数据流的推流节点或拉流节点时,都会调度当前负载最轻的流服务节点,而推流调度请求和拉流调度请求存在时序上的先后关系,调度节点处理推流调度请求时机房中当前负载最轻的流服务节点、调度节点处理拉流调度请求时机房中当前负载最轻的流服务节点经常为不同的流服务节点,因此,为同一路数据流调度的推流节点和拉流节点具有不一致性,即,调度节点会调度机房中的某一流服务节点为推流节点,另一流服务节点为拉流节点,因此同一机房中两个流服务节点会互相拉取数据流,导致数据流的转发跳数过多,传输路径过长,影响了数据流的传输速度和效率,同时,也浪费了流服务节点的处理资源,造成传输过程的冗余。
而本发明中,调度节点每次为每路数据流分配拉流节点和推流节点时,都会从能够调度的流服务节点集合中确定与数据流唯一对应的流服务节点,因此如果能够调度的推流节点集合以及能够调度的拉流节点集合相同,例如为同一个机房的所有流服务节点,则对于同一路数据流来说,则调度节点为该数据流调度的推流节点和拉流节点会是同一个流服务节点,因此剪掉了数据流从推流节点至拉流节点之间的多余传输路径,避免同一机房中两个流服务节点互相拉取数据流的情况。
为使上述优点更加清楚明白,以下结合一种实际应用场景进行阐述。
以视频直播的场景为例,则数据流为视频流,视频流的发送终端为主播终端,视频流的接收终端为观众终端。以观众终端1、观众终端2、观众终端3要求流媒体服务系统提供主播终端的视频流为例,假设调度节点可以调度的推流节点范围为机房B中的所有流服务节点,可以调度的拉流节点的范围也为机房B中的所有流服务节点。
相关技术中,参见图8,由于主播终端开播的时间以及观众终端1和观众终端2进入直播间的时间的不一致,另外网络中信息同步存在的时延,由于调度节点每次处理调度请求时,确定的机房B当前负载最轻的流服务节点不一致,例如处理推流调度请求时,机房B当前负载最轻的流服务节点为B0,处理观众终端1的拉流调度请求时,机房B当前负载最轻的流服务节点为B1,处理观众终端2的拉流调度请求时,机房B当前负载最轻的流服务节点为B2,则调度的推流节点为B0,拉流节点分别为B1和B2,数据流在传输过程中,由推流节点B0接收主播终端推送的视频流,拉流节点B1和拉流节点B2再分别从B0拉取视频流,形成三路传输路径,三个观众终端再分别从三个拉流节点拉取视频流。显然,视频流从推流节点B0分别传输至同一机房的拉流节点B1和拉流节点B2的过程属于冗余传输过程,影响了视频流的传输效率。
而本发明实施例中,参见图9,由于主播终端、观众终端1和观众终端2进入的是同一个直播间,则主播终端的推流调度请求以及两个观众终端的拉流调度请求对应的是同一路视频流,又由于能够调度的推流节点集合和拉流节点集合都是机房B中的所有流服务节点,则机房B中的所有流服务节点中仅会具有一个与视频流唯一对应的流服务节点,例如为流服务节点B0,则调度节点会将流服务节点B0同时调度为推流节点和拉流节点,那么,数据流在传输过程中,由流服务节点B0接收主播终端推送的视频流,之后两个观众终端再从B0拉取数据流即可,也即是,视频流在机房B中只需经过B0这一个流服务节点,而无需经过机房内部不同流服务节点之间的传输路径,因此简化了数据流的网络拓扑结构。
综上所述,结合上述(1)至(3),本发明实施例提供的流媒体服务系统可以作为搭建视频直播应用的基本网络架构,经实验证明,应用本发明实施例提供的技术,流媒体服务系统在80多台流服务节点、15万用户的运行环境上可以实现无冗余流量运营,极大地节省了带宽资源带来的成本。
需要说明的是,上述(1)至(3)中仅是以视频直播的应用场景为例对本发明实施例可产生的效果进行说明,在实施中,本发明实施例可以提供一种通用的网络架构,应用于传输各种类型的数据流的场景中,从而提供各种类型的流媒体服务。
图10是本发明实施例提供的一种流服务节点调度方法的流程图,该方法的执行主体为调度节点,该方法包括以下步骤:
1001、当接收到拉流调度请求时,获取该拉流调度请求指示的数据流的特征值,该拉流调度请求用于请求调度拉取该数据流的拉流节点。
1002、根据特征值与拉流节点之间的第一预设对应关系,确定该特征值对应的目标拉流节点。
1003、调度该目标拉流节点拉取该数据流。
本发明实施例提供的方法,提供了一种能够节省流量的调度策略,该调度策略可实现为同一路数据流调度的拉流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到该数据流对应的调度请求时,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个流服务节点根据第一预设对应关系确定,而第一预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第一预设对应关系时,均会确定出相同的拉流节点,即目标拉流节点,那么,当任意接收终端在任意时间点发起针对数据流的拉流调度请求时,拉取该数据流的任务都会固定分配给目标拉流节点,而不会被重复分配给目标拉流节点以外的其他流服务节点,其他流服务节点也就不会重复拉取数据流,避免了重复拉取数据流造成流量冗余的情况,极大地节省了带宽,节约了成本。
在一种可能的设计中,该获取该拉流调度请求指示的数据流的特征值,包括:
获取该拉流调度请求携带的流标识,该流标识用于指示该数据流;
计算该流标识的哈希值;
根据预设基数,对该哈希值取模,将得到的模值作为该特征值。
在一种可能的设计中,该第一预设对应关系包括多个预设特征值区间以及对应的多个拉流节点,该根据特征值与拉流节点之间的第一预设对应关系,确定该特征值对应的目标拉流节点,包括:
根据该特征值所属的目标预设特征值区间,获取该第一预设对应关系中该目标预设特征值区间对应的拉流节点,作为该目标拉流节点。
在一种可能的设计中,该获取该拉流调度请求指示的数据流的特征值之前,该方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,该拉流节点集合是指该调度节点能够调度的多个拉流节点;
根据分配的结果,建立该第一预设对应关系。
在一种可能的设计中,该预设特征值范围的最大值为预设基数,该预设基数用于确定特征值所属的预设特征值区间,该预设基数与该拉流节点集合中拉流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,该调度该目标拉流节点拉取该数据流之后,该方法还包括:
存储第一调度记录,该第一调度记录用于指示该目标拉流节点和该数据流之间的对应关系。
当接收到拉流调度请求时,根据该拉流调度请求指示的数据流,查询该第一调度记录,得到该目标拉流节点。
在一种可能的设计中,该存储第一调度记录,包括:
当该目标拉流节点未拉取到该数据流的时长超过预设时长时,存储该第一调度记录;或,
当传输该数据流的网络链路发生故障时,存储该第一调度记录。
图11是本发明实施例提供的一种流服务节点调度方法的流程图,该方法的执行主体为调度节点,该方法包括以下步骤:
1101、当接收到推流调度请求时,获取该推流调度请求指示的数据流的特征值,该推流调度请求用于请求调度接收该数据流的推流节点。
1102、根据特征值与推流节点之间的第二预设对应关系,确定该特征值对应的目标推流节点。
1103、调度该目标推流节点接收该数据流。
本实施例提供的方法,提供了一种高稳定的调度策略,该调度策略可以实现为同一路数据流的调度的推流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到推流调度请求时,根据推流调度请求指示的数据流,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个推流节点根据第二预设对应关系确定,而第二预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第二预设对应关系时,均会确定出相同的推流节点,即目标推流节点,那么,当发送终端在任意时间点发起针对数据流的推流调度请求时,拉取该数据流的任务都会固定分配给目标推流节点,而不会分配给目标推流节点的其他推流节点,从而避免推流节点的反复调整,进而避免拉流节点由于推流节点的调整反复调整网络拓扑的情况,保证传输数据流的网络拓扑结构稳定,不至于产生拉流紊乱的情况。
在一种可能的设计中,该获取该推流调度请求指示的数据流的特征值,包括:
获取该推流调度请求携带的流标识,该流标识用于指示该数据流;
计算该流标识的哈希值;
根据预设基数,对该哈希值取模,将得到的模值作为该特征值。
在一种可能的设计中,该第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点,该根据特征值与推流节点之间的第二预设对应关系,确定该特征值对应的目标推流节点,包括:
根据该特征值所属的目标预设特征值区间,获取该第二预设对应关系中该目标预设特征值区间对应的推流节点,作为该目标推流节点。
在一种可能的设计中,该获取该推流调度请求指示的数据流的特征值之前,该方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为推流节点集合中的每个推流节点分配对应的预设特征值区间,该推流节点集合是指该调度节点能够调度的多个推流节点;
根据分配的结果,建立该第二预设对应关系。
在一种可能的设计中,该预设特征值范围的最大值为预设基数,该预设基数用于确定特征值所属的预设特征值区间,该预设基数与该推流节点集合中推流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,该调度该目标推流节点接收该数据流之后,该方法还包括:
存储第二调度记录,该第二调度记录用于指示该目标推流节点和该数据流之间的对应关系。
当接收到推流调度请求时,根据该推流调度请求指示的数据流,查询该第二调度记录,得到该目标推流节点。
在一种可能的设计中,该存储第二调度记录,包括:
当该目标推流节点未拉取到该数据流的时长超过预设时长时,存储该第二调度记录;或,
当传输该数据流的网络链路发生故障时,存储该第二调度记录。
在一种可能的设计中,当拉流节点集合和推流节点集合相同时,该目标推流节点和该目标拉流节点为同一个流服务节点,该拉流节点集合是指该调度节点能够调度的多个拉流节点,该推流节点集合是指该调度节点能够调度的多个推流节点。
图12是本发明实施例提供的一种流服务节点调度方法的流程图,该方法的执行主体为调度节点,该方法包括以下步骤:
1201、调度节点为能够调度的每个拉流节点分配对应的预设特征值区间,得到第一预设对应关系。
拉流节点是指用于提供拉流服务的流服务节点,例如在视频直播的场景中,拉流节点用于拉取主播终端的视频流,以便观众终端从拉流节点拉取视频流。
本实施例中,流媒体服务系统中每个拉流节点会分别负责一定大小的预设特征值区间,拉流节点会为特征值属于对应预设特征值区间的每个数据流提供拉流的服务。为了确定哪个拉流节点负责哪个预设特征值区间,可以由调度节点进行预分配,将每个预设特征值区间预先分配给每个拉流节点,根据预分配的结果生成第一预设对应关系,以便后续在数据流的传输过程中,调度节点可以根据预先生成的第一预设对应关系,确定拉取数据流的拉流节点。
可选地,流媒体服务系统可以采用分布式部署的方式,根据需要划分为多个拉流节点集合,每个拉流节点集合包括多个拉流节点,同一拉流节点集合中的所有拉流节点可以具有相同或相近的地理位置,例如拉流节点集合可以指一个机房中的所有流服务节点。调度节点可以将拉流节点集合作为预分配的单位,将每个预设特征值区间分别分配给拉流节点集合中的每个拉流节点。
针对预设特征值区间的生成过程,调度节点可以确定预设特征值范围,对预设特征值范围进行划分,得到多个预设特征值区间,该预设特征值范围可以根据业务需求设置,该预设特征值范围的最小值可以为0,预设特征值范围的最大值可以为预设基数。通过划分预设特征值范围以得到预设特征值区间,将每个预设特征值区间分配给每个拉流节点后,同一拉流节点集合内的所有拉流节点的预设特征值区间可以组成一个连续的预设特征值范围,保证任一路数据流的特征值均会命中拉流节点集合中的某一拉流节点,不会出现数据流的特征值落在所有拉流节点的预设特征值区间以外的情况。
关于划分出的预设特征值区间的数量,调度节点可以确定拉流节点集合中的拉流节点的数量,根据拉流节点的数量对预设特征值范围进行划分,从而保证划分出的预设特征值区间的数量和拉流节点的数量匹配。进一步的,划分的预设特征值区间的数量可以等于拉流节点的数量,即,假设拉流节点的数量为N个,调度节点可以将预设特征值范围划分为N份。
关于划分出的预设特征值区间的大小,调度节点可以采用均分的方式,对预设特征值范围进行划分,则划分出的多个预设特征值区间的大小会相同,由于预设特征值区间的大小可以决定特征值命中该预设特征值区间的数据流的数量,通过保证每个拉流节点的预设特征值区间的大小相同,可以实现不同拉流节点之间负载均衡。
示例性地,假设预设特征值范围为0-120,机房(拉流节点集合)中包括4个拉流节点,可以确定每个预设特征值区间的大小为120÷4=30,将预设特征值范围划分为0-30、30-60、60-90、90-120,得到四个预设特征值区间。
针对预设特征值区间的分配过程,当得到多个预设特征值区间后,调度节点可以确定能够调度的多个拉流节点,为该多个拉流节点分配对应的预设特征值区间。在分配过程中,调度节点可以基于平均分配的原则,保证每个拉流节点分配到的预设特征值区间的数量相同,例如可以为每个拉流节点分配一个预设特征值区间,从而将N个预设特征值区间分配给N个拉流节点,其中N为不小于1的正整数。
示例性地,参见图13,假设调度节点管辖的机房包括拉流节点A、拉流节点B、拉流节点C、拉流节点D,调度节点划分的预设数值区间包括[0,30)、[30-60)、[60-90)、[90-120),可以将[0,30)分配给拉流节点A,[30-60)分配给拉流节点B,[60-90)分配给拉流节点C,[90-120)分配给拉流节点D,从而保证四个拉流节点分配到的特征值的数量均为30个,同时不同拉流节点分配到的特征值互不重复。
在一种可能的设计中,为了提高分配结果的稳定性,调度节点可以根据根据拉流节点集合中拉流节点的身份信息的顺序,将多个预设特征值区间按照顺序依次分配给拉流节点集合中每个拉流节点,从而保证拉流节点集合中新增拉流节点时,无需打乱之前分配的预设特征值区间和拉流节点之间的顺序。其中,拉流节点的身份信息可以为拉流节点的IP(Internet Protocol,网络互联协议)地址、索引号、名称等。示例性地,可以获取多个拉流节点的IP地址,将预设特征值区间按照从小到大的顺序分配给IP地址从小到大的拉流节点。
当为多个拉流节点分配预设特征值区间后,可以根据分配的结果,建立第一预设对应关系,以便后续根据第一预设对应关系确定任一特征值对应的拉流节点。其中,第一预设对应关系用于指示特征值对应的拉流节点,例如,第一预设对应关系可以包括多个预设特征值区间以及对应的多个拉流节点,示例性地,第一预设对应关系可以如图14所示。
1202、调度节点接收拉流调度请求。
在流媒体服务的拉流流程中,当接收终端要获取任一路数据流时,需要生成拉流调度请求,向调度节点发送拉流调度请求,该拉流调度请求也可称为接收终端的接入请求,该拉流调度请求能够指示数据流,该拉流调度请求用于请求调度拉取该数据流的拉流节点。调度节点可以接收该接收终端的拉流调度请求,基于拉流调度请求,为该接收终端分配拉取数据流的目标拉流节点,以便接收终端从目标拉流节点拉取数据流。
其中,该拉流调度请求可以由用户的确认操作触发。以视频直播的场景为例,接收终端为观众终端,当观众用户对直播间触发点击操作,要进入直播间观看直播时,接收终端可以检测到该点击操作,生成拉流调度请求。
1203、调度节点获取拉流调度请求指示的数据流的特征值。
本实施例中,调度节点可以根据拉流调度请求,获取拉流调度请求携带的流标识,根据该流标识,获取数据流的特征值。其中,调度节点可以解析拉流调度请求,从而得到拉流调度请求中的流标识,拉流调度请求中的流标识用于指示数据流,通过不同流标识可以区分不同的数据流,例如,流标识可以为数据流的流名称(streamname),或为拉流调度请求中能够指示数据流的其他字符串。
在一种可能的设计中,特征值可以为对流标识进行哈希取模后得到的模值。具体的,调度节点可以获取流标识的哈希值,根据预设基数,对哈希值取模,将得到的模值作为特征值。其中,关于计算哈希值的方式,调度节点可以存储哈希算法,基于哈希算法对流标识进行计算,得到流标识的哈希值,该哈希算法可以为SHA(Secure Hash Algorithm,安全散列算法)或其他能计算出哈希值的算法。
示例性地,假设数据流的流标识的哈希值为121,预设基数为120,则取模后得到的模值为1,则数据流的特征值为1。
本实施例中,由于预设基数为预设特征值范围的最大值,根据预设基数对流标识的哈希值取模后,模值会小于预设基数且不小于0,可见模值的取值范围与预设取值范围匹配,因此将模值作为特征值时,可以保证特征值必然可以命中之前划分的某一预设特征值区间,从而能够确定对应的目标拉流节点。
需要说明的是,上述仅是以对流标识进行哈希取模以得到特征值为例进行说明,在实施中,也可以采用其他计算方式对流标识计算以得到特征值,或者对数据流的其他信息进行计算以得到特征值,只需保证特征值具有与数据流唯一对应的性质,即对于同一路数据流来说,该数据流对应且仅对应一个特征值即可,本实施例对特征值的具体计算方式以及计算特征值的所采用的具体参数不做限定。
1204、调度节点根据特征值与拉流节点之间的第一预设对应关系,确定特征值对应的目标拉流节点。
在上述步骤1201中,调度节点预先建立了特征值与拉流节点之间的第一预设对应关系,则本步骤1204中,调度节点可以根据特征值查询该第一预设对应关系,获取第一预设对应关系中特征值对应的拉流节点,将该特征值对应的拉流节点作为目标拉流节点,以便调度目标拉流节点拉取数据流。
其中,当第一预设对应关系包括多个预设特征值区间以及对应的多个拉流节点时,调度节点可以判断第一预设对应关系中特征值所属的目标预设特征值区间,根据特征值所属的目标预设特征值区间,获取第一预设对应关系中目标预设特征值区间对应的拉流节点,作为目标拉流节点。
示例性地,假设第一预设对应关系如图14所示,如果数据流的特征值为1,则该特征值所属的目标预设特征值区间为(0,30),因此会将(0,30)对应的拉流节点B作为目标拉流节点。
1205、调度节点调度目标拉流节点拉取数据流。
示例性地,调度目标拉流节点拉取数据流的具体过程可以包括以下步骤一至步骤四:
步骤一、调度节点向接收终端发送目标拉流节点的网络地址。
步骤二、接收终端接收目标拉流节点的网络地址,生成拉流请求,向该网络地址对应的目标拉流节点发送该拉流请求,该拉流请求用于请求拉取数据流。
步骤三、目标拉流节点接收拉流请求,根据拉流请求确定待拉取的数据流,根据当前传输数据流的网络拓扑结构,确定数据流的拉取对象,从拉取对象拉取数据流。其中,拉取对象可以为目标拉流节点上游的推流节点,或为数据流的发送终端。
步骤四、接收终端从目标拉流节点拉取数据流,从而得到数据流。
综上所述,本实施例提供了一种能够节省流量的调度策略,该调度策略可实现为同一路数据流调度的拉流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到该数据流对应的调度请求时,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个流服务节点固定根据第一预设对应关系确定,每当调度节点根据相同的特征值查询第一预设对应关系时,均会确定出相同的拉流节点,即目标拉流节点,那么,当任意接收终端在任意时间点发起针对数据流的拉流调度请求时,拉取该数据流的任务都会固定分配给目标拉流节点,而不会被重复分配给目标拉流节点以外的其他流服务节点,其他流服务节点也就不会重复拉取数据流,避免了重复拉取数据流造成流量冗余的情况,极大地节省了带宽,节约了成本。
在一种可能的设计中,结合上述预设特征值区间的确定和分配过程,可以设计预设基数远远大于拉流节点的数量,即,预设基数与拉流节点集合中拉流节点的数量之间的大小关系符合预设条件,比如可以约定,预设基数与拉流节点的数量之间的差值大于某一预设差值阈值,预设基数与流服务节点的数量之间的比值大于某一预设比值阈值等。进一步地,预设基数可以达到百万级别,例如预设基数为2^20。
通过设计预设基数远远大于拉流节点的数量,能够极大地提高分配结果的稳定性:流媒体服务系统在运行中,流媒体服务系统中可以新增拉流节点或删除拉流节点,即出现机器上下架场景,而新上架或新下架的拉流节点可能会导致预设特征值区间的浮动,例如拉流节点新上架时,由于拉流节点的数量变多,可以根据当前拉流节点的数量重新划分预设特征值区间,以保证新上架的拉流节点与老拉流节点之间负载均衡。另外,在拉流节点出现故障、拉流节点的网络链路出现抖动等场景中,流媒体服务系统会检测到该拉流节点异常,暂停由该拉流节点负责对应的预设特征值区间的数据流的拉流业务,将它原本负责的预设特征值区间重新分配给其他拉流节点,这种情况下也会导致预设特征值区间的浮动。
而当预设特征值区间发生浮动时,会存在数据流命中的预设特征值区间发生变化的概率,导致存在数据流对应的拉流节点发生变化的概率。例如,假设拉流节点B原本对应的预设特征值区间为[30,60),拉流节点C原本对应的预设特征值区间[60,90),某一数据流的特征值为50,则该数据流所属的预设特征值区间为[30,60),因此会将数据流分配给拉流节点B。而如果由于上述阐述的各种因素,拉流节点B的预设特征值区间变成[24,48),拉流节点C的预设特征值区间变成[48,72),则该数据流所属的预设特征值区间为[48,72),导致该数据流分配的拉流节点变化为拉流节点C,而拉流节点变化为C时,会导致拉流节点B和拉流节点C可能会重复拉取数据流,造成流量冗余。
虽然这种情况的概率较低,但为了保证调度策略能够应对各种突发和意外情况,可以将预设基数设计的极大,令预设基数远远大于拉流节点的数量,则每个拉流节点负责的预设特征值区间会极大,那么即使拉流节点的数量发生变化,对预设特征值区间的造成的影响也会变得极小,可以忽略不计,从而避免数据流命中的预设特征值区间发生变化的情况,进而避免数据流分配的拉流节点发生变化的情况,提高了扩展性和流媒体服务系统的健壮性和稳定性。例如,当预设基数为2^20,对于通常布设10个左右的拉流节点的机房来说,拉流节点的调整造成的影响会变的微乎及微。
结合上述调度策略,本实施例还提供了分配结果的缓存机制,该缓存机制可以看作在调度策略的基础上搭建的一层堡垒,可称为堡垒缓存机制,能够避免网络链路抖动、调度节点被高并发访问、主播频繁重新开播、观众频繁重启直播间、流服务节点运行状态不稳定等各种意外场景对调度策略产生的影响,保证调度策略可以应对复杂多变的网络环境以及用户行为,从而强化调度策略的健壮性和稳定性,同时,还能极大地加快调度拉流节点的速度,提高调度拉流节点的效率。
针对缓存机制的具体设计,当调度目标拉流节点拉取数据流时,调度节点可以生成第一调度记录,存储第一调度记录,第一调度记录用于记录目标拉流节点和数据流之间的对应关系。之后,当调度节点接收到拉流调度请求时,可以无需执行计算特征值的过程,而是直接根据该拉流调度请求指示的数据流,查询第一调度记录,从第一调度记录中得到目标拉流节点。
通过设计缓存机制,至少可以达到以下两个突出效果:
第一,对于同一路数据流来说,当为该数据流分配该目标拉流节点后,通缓存该数据流和该目标拉流节点之间的对应关系,当再次接收到针对该数据流的拉流调度请求时,通过查询对应关系确定拉流节点,可以保证再次接收到拉流调度请求时分配的拉流节点和初次接收到拉流调度请求时分配的拉流节点保持一致,始终为目标拉流节点,因此能够进一步保证避免将数据流重复分配给多个拉流节点的情况,也就避免多个拉流节点重复拉取同一路数据流的情况,从而保证不会出现流量冗余,节省流媒体服务系统传输数据流时产生的流量。
第二,由于查询第一调度记录的过程相对于计算特征值的过程来说,计算量较少,步骤简单,可以提高确定目标拉流节点的速度,从而提高确定目标拉流节点的效率。
其中,调度节点可以用缓存的方式存储第一调度记录,即,调度节点可以当存储第一调度记录的时长超过预设时长时,删除第一调度记录,从而释放第一调度记录占用的存储空间。之后,当调度节点再次接收到数据流的拉流调度请求时,调度节点可以重新计算特征值以确定目标拉流节点,并再次生成第一调度记录并存储第一调度记录。在实施中,调度节点可以当开始存储第一调度记录时,启动定时器,当定时器记录的时长超过预设时长时,则删除第一调度记录。其中,该预设时长可以根据实际需求设置,例如为30s。
结合缓存机制,每当调度节点接收到拉流调度请求时,可以根据该拉流调度请求指示的数据流,判断当前是否存储了数据流的调度记录,当未存储数据流的调度记录时,再计算数据流的特征值并查询第一预设对应关系,以便确定目标拉流节点。而当已存储数据流的调度记录时,查询第一调度记录,以便确定目标拉流节点。参见图15,其提供了针对数据流执行任一次的调度过程的流程图。
通过提供缓存机制,可以保证流媒体服务系统可以应对高并发的业务,通过提高流媒体服务系统传输数据流的速度和稳定性,保证大量用户并发接入时能够快速、稳定地为每个用户提供流媒体服务,避免卡顿情况,从而提升用户体验。
以视频直播的场景为例,随着直播服务的日益火爆,经常出现大量观众用户涌入同一个直播间观看直播的情况,而大量观众终端纷纷向调度节点发送拉流调度请求时,调度节点无需为每个观众终端均进行复杂的调度运算,只需查询第一调度记录,即可确定为每个观众终端提供拉流服务的目标拉流节点,从而极大地缩短了调度时间,加快了提供视频流的速度,保证观众用户可以流畅、快速地观看直播间的视频,满足观众用户秒开直播间的需求,避免直播间的卡顿情况。
需要说明的是,上述仅是以调度节点将目标拉流节点分配给接收终端时,存储第一调度记录为例进行说明,本实施例中,调度节点也可以在其他时机存储第一调度记录。示例性地,调度节点可以存储第一调度记录的场景还可以包括以下场景一和/或场景二。
场景一、当目标拉流节点未接收到数据流的时长超过预设时长时,调度节点存储第一调度记录。
目标拉流节点可以当开始未接收到数据流时,启动定时器,当超过预设时长仍未接收到数据流时,目标拉流节点可以向调度节点发送第一通知消息,该第一通知消息用于通知该目标拉流节点未接收到数据流的时长超过预设时长,调度节点接收到第一通知消息后,会存储第一调度记录。当存储第一调度记录之后,当调度节点接收到拉流调度请求后,即可根据拉流调度请求指示的数据流,查询第一调度记录,从第一调度记录中得到目标拉流节点,再次调度该目标拉流节点拉取数据流。
调度节点通过在目标拉流节点未接收到数据流的时长超过预设时长时,存储第一调度记录,在数据流中断后进行重传的场景中,例如当数据流的发送终端频繁中断推流并重新推流(比如主播频繁刷新重播),或者发送终端与目标拉流节点之间的网络链路发生抖动时,调度节点无需反复计算数据流的特征值,只需查询第一调度记录即可,从而快速确定对数据流进行拉流的目标拉流节点,提高调度目标拉流节点拉取数据流的速度。
场景二、当传输数据流的网络链路发生断开时,存储第一调度记录。
当目标拉流节点与接收终端之间的网络链路发生断开,或目标拉流节点与数据流的推流节点之间的网络链路发生断开、或目标拉流节点与数据流的发送终端之间的网络链路发生断开时,目标拉流节点可以向调度节点发送第二通知消息,该第二通知消息用于通知调度节点传输数据流的网络链路发生断开,调度节点接收到第二通知消息后,会存储第一调度记录。当存储第一调度记录之后,当调度节点再次接收到数据流对应的拉流调度请求后,即可查询第一调度记录,从第一调度记录中得到目标拉流节点,再次调度该目标拉流节点拉取数据流。
调度节点通过在传输数据流的网络链路发生断开时,存储第一调度记录,当网络链路发生波动、接收终端重复接入的场景中,调度节点无需反复计算数据流的特征值,只需查询第一调度记录即可快速确定对数据流进行拉流的目标拉流节点,从而提高调度目标拉流节点拉取数据流的速度。
在一个示例性场景中,以视频直播的场景为例,观众用户经常触发退出直播间后,短期内又重新进入直播间的操作,导致观众终端与目标拉流节点的网络链路频繁断开和重连。本实施例中,观众终端与目标拉流节点的网络链路断开时,调度节点通过存储第一调度记录,当观众用户重新进入直播间后,调度节点无需重新计算特征值,只需查询第一调度记录即可确定调度的目标拉流节点,从而快速调度目标拉流节点为观众终端拉取视频流,进而保证观众用户可以快速地再次进入直播间。
需要说明的是,结合上述拉流侧的调度策略,本发明实施例中,在推流侧也可以同理地执行调度策略。
图16是本发明实施例提供的一种流服务节点调度方法的流程图,该方法的执行主体为调度节点,该方法包括以下步骤:
1601、调度节点为能够调度的每个推流节点分配对应的预设特征值区间,得到第二预设对应关系。
推流节点是指提供推流服务的流服务节点,例如在视频直播的场景中,推流节点用于接收主播终端推送的视频流,以便将主播的视频流提供给观众终端。
本步骤的技术过程与上述步骤1201同理,在此不做赘述。
需要说明的是,当调度节点能够调度的推流节点集合与上述步骤1201中能够调度的拉流节点集合一致,即两个集合由相同的流服务节点组成时,由于两种分配过程的能够调度的流服务节点的范围一致,第一预设对应关系和第二预设对应关系可以相同。
1602、调度节点接收推流调度请求。
在流媒体服务的推流流程中,当发送终端要推送任一路数据流时,需要生成推流调度请求,向调度节点发送推流调度请求,该拉流调度请求也可称为发送终端的接入请求,该拉流调度请求能够指示数据流,该拉流调度请求用于请求调度接收数据流的流服务节点,调度节点可以接收发送终端的推流调度请求,基于拉流调度请求,为发送终端分配接收数据流的目标推流节点,以便接收终端向目标推流节点推送数据流。
其中,该推流调度请求可以由用户的确认操作触发。以视频直播的场景为例,发送终端为主播终端,当主播用户启动直播间,要开始直播时,发送终端可以检测到该点击操作,生成推流调度请求。
1603、调度节点获取推流调度请求指示的数据流的特征值。
本步骤与上述步骤1203同理,在此不做赘述。
1604、调度节点根据特征值与流服务节点之间的第二预设对应关系,确定特征值对应的目标推流节点。
本步骤的技术过程与上述步骤1204同理,在此不做赘述。
需要说明的是,如果预先确定的第一预设对应关系和第二对应关系相同,本步骤确定的目标推流节点和上述步骤1204确定的目标拉流节点会为同一个流服务节点。
1605、调度节点调度目标推流节点接收数据流。
示例性地,调度目标推流节点接收数据流的具体过程可以包括以下(1)至(3):
(1)调度节点向发送终端发送目标推流节点的网络地址。
(2)发送终端接收目标推流节点的网络地址,采集数据流,向目标推流节点推送数据流。
(3)目标推流节点接收发送终端推送的数据流。
综上所述,通过上述步骤一至步骤五,本实施例提供了一种高稳定的调度策略,该调度策略可以实现为同一路数据流的调度的推流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到推流调度请求时,根据推流调度请求指示的数据流,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个推流节点根据第二预设对应关系确定,而第二预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第二预设对应关系时,均会确定出相同的推流节点,即目标推流节点,那么,当发送终端在任意时间点发起针对数据流的推流调度请求时,拉取该数据流的任务都会固定分配给目标推流节点,而不会分配给目标推流节点的其他推流节点,从而避免推流节点的反复调整,进而避免拉流节点由于推流节点的调整反复调整网络拓扑的情况,保证传输数据流的网络拓扑结构稳定,不至于产生拉流紊乱的情况。
与上述缓存机制同理,当调度目标推流节点接收数据流后,调度节点可以生成第二调度记录,存储第二调度记录,第二调度记录用于记录目标推流节点和数据流之间的对应关系。之后,当调度节点接收到推流调度请求时,可以无需执行计算特征值的过程,而是直接根据推流调度请求指示的数据流,查询第二调度记录,从第二调度记录中得到目标推流节点。由于查询第二调度记录的过程相对于计算特征值的过程来说,计算量较少,步骤简单,可以提高确定目标推流节点的速度,从而提高确定目标推流节点的效率。
其中,调度节点可以用缓存的方式存储第二调度记录,即,调度节点可以当存储第二调度记录的时长超过预设时长时,删除第二调度记录,从而释放第二调度记录占用的存储空间。之后,当调度节点再次接收到推流调度请求时,调度节点可以根据推流调度请求指示的数据流,重新计算特征值以确定目标推流节点,并再次生成第二调度记录并存储第二调度记录。在实施中,调度节点可以当开始存储第二调度记录时,启动定时器,当定时器记录的时长超过预设时长时,则删除第二调度记录。其中,该预设时长可以根据实际需求设置,例如为30s。
结合缓存机制,每当调度节点接收到推流调度请求时,可以根据推流调度请求指示的数据流,判断当前是否存储了数据流的调度记录,当未存储数据流的调度记录时,再计算数据流的特征值并查询第二预设对应关系,以便确定目标推流节点。而当已存储数据流的调度记录时,查询第二调度记录,以便确定目标拉流节点。
需要说明的是,上述仅是以调度节点调度目标推流节点接收数据流时,存储第二调度记录为例进行说明,本实施例中,调度节点也可以在其他时机存储第二调度记录。示例性地,调度节点可以存储第二调度记录的场景可以包括场景一和/或场景二。
场景一、当目标推流节点未接收到数据流的时长超过预设时长时,调度节点存储第二调度记录。
场景二、当传输数据流的网络链路发生断开时,存储第二调度记录。
在一个示例性场景中,以视频直播的场景为例,目前经常出现主播用户重复重新开播的情况,导致主播终端与目标推流节点的网络链路频繁断开和重连。本实施例中,主播终端与目标推流节点的网络链路断开时,调度节点可以存储第二调度记录,那么,当主播用户重新刷新直播间后,调度节点无需重新计算特征值,只需查询第二调度记录即可确定目标推流节点,从而快速调度目标推流节点接收主播终端推送的视频流,进而保证主播用户可以快速地重新开播。
图17是本发明实施例提供的一种流服务节点调度装置的结构示意图。参见图17,该装置应用于调度节点中,该装置包括:获取模块1701、确定模块1702和调度模块1703。
获取模块1701,用于当接收到拉流调度请求时,获取该拉流调度请求指示的数据流的特征值,该拉流调度请求用于请求调度拉取该数据流的拉流节点;
确定模块1702,用于根据特征值与拉流节点之间的第一预设对应关系,确定该特征值对应的目标拉流节点;
调度模块1703,用于调度该目标拉流节点拉取该数据流。
在一种可能的设计中,该获取模块1701,包括:
获取子模块,用于获取该拉流调度请求携带的流标识,该流标识用于指示该数据流;
计算子模块,用于计算该流标识的哈希值;
取模子模块,用于根据预设基数,对该哈希值取模,将得到的模值作为该特征值。
本发明实施例提供的装置,提供了一种能够节省流量的调度策略,该调度策略可实现为同一路数据流调度的拉流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到该数据流对应的调度请求时,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个流服务节点根据第一预设对应关系确定,而第一预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第一预设对应关系时,均会确定出相同的拉流节点,即目标拉流节点,那么,当任意接收终端在任意时间点发起针对数据流的拉流调度请求时,拉取该数据流的任务都会固定分配给目标拉流节点,而不会被重复分配给目标拉流节点以外的其他流服务节点,其他流服务节点也就不会重复拉取数据流,避免了重复拉取数据流造成流量冗余的情况,极大地节省了带宽,节约了成本。
在一种可能的设计中,该第一预设对应关系包括多个预设特征值区间以及对应的多个推流节点,该确定模块1702,用于根据该特征值所属的目标预设特征值区间,获取该第一预设对应关系中该目标预设特征值区间对应的拉流节点,作为该目标拉流节点。
在一种可能的设计中,该装置还包括:
划分模块,用于对预设特征值范围进行划分,得到多个预设特征值区间;
分配模块,用于为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,该拉流节点集合是指该调度节点能够调度的多个拉流节点;
建立模块,用于根据分配的结果,建立该第一预设对应关系。
在一种可能的设计中,该预设特征值范围的最大值为预设基数,该预设基数用于确定特征值所属的预设特征值区间,该预设基数与该拉流节点集合中拉流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,该装置还包括:
存储模块,用于存储第一调度记录,该第一调度记录用于指示该目标拉流节点和该数据流之间的对应关系。
查询模块,用于当接收到拉流调度请求时,根据该拉流调度请求指示的数据流,查询该第一调度记录,得到该目标拉流节点。
在一种可能的设计中,该存储模块,还用于当该目标拉流节点未拉取到该数据流的时长超过预设时长时,存储该第一调度记录;或,当传输该数据流的网络链路发生故障时,存储该第一调度记录。
图18是本发明实施例提供的一种流服务节点调度装置的结构示意图。参见图18,该装置应用于调度节点中,该装置包括:获取模块1801、确定模块1802和调度模块1803。
获取模块1801,用于当接收到推流调度请求时,获取该推流调度请求指示的数据流的特征值,该推流调度请求用于请求调度接收该数据流的推流节点;
确定模块1802,用于根据特征值与推流节点之间的第二预设对应关系,确定该特征值对应的目标推流节点;
调度模块1803,用于调度该目标推流节点接收该数据流。
本实施例提供的装置,提供了一种高稳定的调度策略,该调度策略可以实现为同一路数据流的调度的推流节点保持一致:由于数据流的特征值唯一,对于同一路数据流来说,每当调度节点接收到推流调度请求时,根据推流调度请求指示的数据流,均会计算出相同的特征值,在此基础之上,由于特征值对应哪个推流节点根据第二预设对应关系确定,而第二预设对应关系在提供流媒体服务的过程中保持不变,因此每当调度节点根据相同的特征值查询第二预设对应关系时,均会确定出相同的推流节点,即目标推流节点,那么,当发送终端在任意时间点发起针对数据流的推流调度请求时,拉取该数据流的任务都会固定分配给目标推流节点,而不会分配给目标推流节点的其他推流节点,从而避免推流节点的反复调整,进而避免拉流节点由于推流节点的调整反复调整网络拓扑的情况,保证传输数据流的网络拓扑结构稳定,不至于产生拉流紊乱的情况。
在一种可能的设计中,该获取模块1801,包括:
获取子模块,用于获取该推流调度请求携带的流标识,该流标识用于指示该数据流;
计算子模块,用于计算该流标识的哈希值;
取模子模块,用于根据预设基数,对该哈希值取模,将得到的模值作为该特征值。
在一种可能的设计中,该第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点,该确定模块1802,用于根据该特征值所属的目标预设特征值区间,获取该第二预设对应关系中该目标预设特征值区间对应的推流节点,作为该目标推流节点。
在一种可能的设计中,该装置还包括:
划分模块,用于对预设特征值范围进行划分,得到多个预设特征值区间;
分配模块,用于为推流节点集合中的每个推流节点分配对应的预设特征值区间,该推流节点集合是指该调度节点能够调度的多个推流节点;
建立模块,用于根据分配的结果,建立该第二预设对应关系。
在一种可能的设计中,该预设特征值范围的最大值为预设基数,该预设基数用于确定特征值所属的预设特征值区间,该预设基数与该推流节点集合中推流节点的数量之间的大小关系符合预设条件。
在一种可能的设计中,该装置还包括:
存储模块,用于存储第二调度记录,该第二调度记录用于指示该目标推流节点和该数据流之间的对应关系。
查询模块,用于当接收到推流调度请求时,根据该推流调度请求指示的数据流,查询该第二调度记录,得到该目标推流节点。
在一种可能的设计中,该存储模块,还用于当该目标推流节点未拉取到该数据流的时长超过预设时长时,存储该第二调度记录;或,当传输该数据流的网络链路发生故障时,存储该第二调度记录。
在一种可能的设计中,当拉流节点集合和推流节点集合相同时,该目标推流节点和该目标拉流节点为同一个流服务节点,该拉流节点集合是指该调度节点能够调度的多个拉流节点,该推流节点集合是指该调度节点能够调度的多个推流节点。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的流服务节点调度装置在调度流服务节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将调度节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的流服务节点调度装置与流服务节点调度方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图19是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备可被提供为调度节点,该计算机设备1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)1901和一个或一个以上的存储器1902,其中,该存储器1902中存储有至少一条指令,该至少一条指令由该处理器1901加载并执行以实现上述各个方法实施例提供的流服务节点调度方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由调度节点的处理器执行以完成上述实施例中的流服务节点调度方法。例如,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种流服务节点调度方法,其特征在于,应用于调度节点中,所述方法包括:
当接收到拉流调度请求时,获取所述拉流调度请求指示的数据流的特征值,包括:获取所述拉流调度请求携带的流标识,所述流标识用于指示所述数据流;计算所述流标识的哈希值;根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值,所述拉流调度请求用于请求调度拉取所述数据流的拉流节点,其中,所述调度节点所接收的同一路数据流所对应的特征值相同;
根据所述特征值所属的目标预设特征值区间,获取第一预设对应关系中所述目标预设特征值区间对应的拉流节点,作为目标拉流节点,其中,所述第一预设对应关系包括多个预设特征值区间以及对应的多个拉流节点;
调度所述目标拉流节点拉取目标推流节点所接收到的数据流;
所述获取所述拉流调度请求指示的数据流的特征值之前,所述方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点;
根据分配的结果,建立所述第一预设对应关系。
2.根据权利要求1所述的方法,其特征在于,所述预设特征值范围的最大值为预设基数,所述预设基数用于确定特征值所属的预设特征值区间,所述预设基数与所述拉流节点集合中拉流节点的数量之间的大小关系符合预设条件。
3.根据权利要求1所述的方法,其特征在于,所述调度所述目标拉流节点拉取目标推流节点所接收到的数据流之后,所述方法还包括:
存储第一调度记录,所述第一调度记录用于指示所述目标拉流节点和所述数据流之间的对应关系;
当接收到拉流调度请求时,根据所述拉流调度请求指示的数据流,查询所述第一调度记录,得到所述目标拉流节点。
4.根据权利要求3所述的方法,其特征在于,所述存储第一调度记录,包括:
当所述目标拉流节点未拉取到所述数据流的时长超过预设时长时,存储所述第一调度记录;或,
当传输所述数据流的网络链路发生故障时,存储所述第一调度记录。
5.一种流服务节点调度方法,其特征在于,应用于调度节点中,所述方法包括:
当接收到推流调度请求时,获取所述推流调度请求指示的数据流的特征值,包括:获取所述推流调度请求携带的流标识,所述流标识用于指示所述数据流;计算所述流标识的哈希值;根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值,所述推流调度请求用于请求调度接收所述数据流的推流节点,其中,所述调度节点所接收的同一路数据流所对应的特征值相同;
根据所述特征值所属的目标预设特征值区间,获取第二预设对应关系中所述目标预设特征值区间对应的推流节点,作为目标推流节点,其中,所述第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点;
调度所述目标推流节点接收所述数据流,以使目标拉流节点拉取所述目标推流节点所接收到的数据流;
所述获取所述推流调度请求指示的数据流的特征值之前,所述方法还包括:
对预设特征值范围进行划分,得到多个预设特征值区间;
为推流节点集合中的每个推流节点分配对应的预设特征值区间,所述推流节点集合是指所述调度节点能够调度的多个推流节点;
根据分配的结果,建立所述第二预设对应关系。
6.根据权利要求5所述的方法,其特征在于,所述调度所述目标推流节点接收所述数据流之后,所述方法还包括:
存储第二调度记录,所述第二调度记录用于指示所述目标推流节点和所述数据流之间的对应关系;
当接收到推流调度请求时,根据所述推流调度请求指示的数据流,查询所述第二调度记录,得到所述目标推流节点。
7.根据权利要求5-6任一项所述的方法,其特征在于,
当拉流节点集合和推流节点集合相同时,所述目标推流节点和所述目标拉流节点为同一个流服务节点,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点,所述推流节点集合是指所述调度节点能够调度的多个推流节点。
8.一种流服务节点调度装置,其特征在于,应用于调度节点中,所述装置包括:
获取模块,用于当接收到拉流调度请求时,获取所述拉流调度请求指示的数据流的特征值,包括:获取所述拉流调度请求携带的流标识,所述流标识用于指示所述数据流;计算所述流标识的哈希值;根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值,所述拉流调度请求用于请求调度拉取所述数据流的拉流节点,其中,所述调度节点所接收的同一路数据流所对应的特征值相同;
确定模块,用于根据所述特征值所属的目标预设特征值区间,获取第一预设对应关系中所述目标预设特征值区间对应的拉流节点,作为目标拉流节点,其中,所述第一预设对应关系包括多个预设特征值区间以及对应的多个拉流节点;
调度模块,用于调度所述目标拉流节点拉取目标推流节点所接收到的数据流;
所述装置还包括建立模块,所述建立模块用于:
对预设特征值范围进行划分,得到多个预设特征值区间;
为拉流节点集合中的每个拉流节点分配对应的预设特征值区间,所述拉流节点集合是指所述调度节点能够调度的多个拉流节点;
根据分配的结果,建立所述第一预设对应关系。
9.一种流服务节点调度装置,其特征在于,应用于调度节点中,所述装置包括:
获取模块,用于当接收到推流调度请求时,获取所述推流调度请求指示的数据流的特征值,包括:获取所述推流调度请求携带的流标识,所述流标识用于指示所述数据流;计算所述流标识的哈希值;根据预设基数,对所述哈希值取模,将得到的模值作为所述特征值,所述推流调度请求用于请求调度接收所述数据流的推流节点,其中,所述调度节点所接收的同一路数据流所对应的特征值相同;
确定模块,用于根据所述特征值所属的目标预设特征值区间,获取第二预设对应关系中所述目标预设特征值区间对应的推流节点,作为目标推流节点,其中,所述第二预设对应关系包括多个预设特征值区间以及对应的多个推流节点;
调度模块,用于调度所述目标推流节点接收所述数据流,以使目标拉流节点拉取所述目标推流节点所接收到的数据流;
所述装置还包括建立模块,所述建立模块用于:
对预设特征值范围进行划分,得到多个预设特征值区间;
为推流节点集合中的每个推流节点分配对应的预设特征值区间,所述推流节点集合是指所述调度节点能够调度的多个推流节点;
根据分配的结果,建立所述第二预设对应关系。
10.一种流媒体服务系统,其特征在于,所述流媒体服务系统包括调度节点,所述调度节点用于执行权利要求1至权利要求7任一项所述的流服务节点调度方法。
11.一种调度节点,其特征在于,所述调度节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求7任一项所述的流服务节点调度方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的流服务节点调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810191844.7A CN108307198B (zh) | 2018-03-08 | 2018-03-08 | 流服务节点调度方法、装置及调度节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810191844.7A CN108307198B (zh) | 2018-03-08 | 2018-03-08 | 流服务节点调度方法、装置及调度节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108307198A CN108307198A (zh) | 2018-07-20 |
CN108307198B true CN108307198B (zh) | 2021-01-01 |
Family
ID=62849704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810191844.7A Active CN108307198B (zh) | 2018-03-08 | 2018-03-08 | 流服务节点调度方法、装置及调度节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108307198B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109525869B (zh) * | 2018-11-14 | 2021-04-27 | 广州虎牙信息科技有限公司 | 拉流的方法、装置及直播系统 |
CN109617961B (zh) * | 2018-12-10 | 2022-01-14 | 视联动力信息技术股份有限公司 | 一种在互联网中下载视联网视频录像的方法和装置 |
CN110035295A (zh) * | 2019-03-06 | 2019-07-19 | 深圳市麦谷科技有限公司 | 分布式的视频直播系统 |
CN110460482B (zh) * | 2019-09-20 | 2022-09-02 | 广州酷狗计算机科技有限公司 | 流量获取方法、装置、服务器及介质 |
CN111740867B (zh) * | 2020-07-03 | 2022-05-13 | 北京深空智联科技有限公司 | 一种广域网业务流量自动优化调度选路的方法 |
CN111935515B (zh) * | 2020-08-14 | 2023-02-10 | 北京永新视博数字电视技术有限公司 | 一种电子节目指南数据表生成方法、装置、设备及介质 |
CN112202833B (zh) * | 2020-08-26 | 2023-05-23 | 网宿科技股份有限公司 | Cdn系统、请求处理方法以及调度服务器 |
CN115695387B (zh) * | 2021-07-30 | 2024-06-25 | 腾讯科技(深圳)有限公司 | 音视频会议实现方法、音视频会议系统及相关装置 |
CN114697683A (zh) * | 2022-03-25 | 2022-07-01 | 腾讯音乐娱乐科技(深圳)有限公司 | 流媒体文件的智能调度方法、设备和计算机程序产品 |
CN115022657B (zh) * | 2022-05-30 | 2023-12-26 | 上海哔哩哔哩科技有限公司 | 直播服务器的调度方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984315A (zh) * | 2006-06-09 | 2007-06-20 | 徐礼岗 | 一种运用动态广播节点技术实现p2p直播的方法 |
CN101938505A (zh) * | 2009-07-01 | 2011-01-05 | 华为技术有限公司 | 一种P2P流媒体数据分发的方法、系统和proxy节点 |
CN102567120A (zh) * | 2012-02-13 | 2012-07-11 | 北京星网锐捷网络技术有限公司 | 一种节点调度优先级确定方法及装置 |
CN103297560A (zh) * | 2013-05-21 | 2013-09-11 | 江苏物联网研究发展中心 | 一种数据流分类的方法及服务器 |
CN104967873A (zh) * | 2015-06-29 | 2015-10-07 | 上海帝联信息科技股份有限公司 | 流媒体直播调度方法、系统和调度服务器 |
CN105187848A (zh) * | 2015-08-18 | 2015-12-23 | 浪潮软件集团有限公司 | 一种内容分发网络系统及方法 |
CN105915945A (zh) * | 2015-12-08 | 2016-08-31 | 乐视云计算有限公司 | 用于cdn平台的内容分发方法及调度代理服务器 |
CN106453132A (zh) * | 2016-12-14 | 2017-02-22 | 深圳市深信服电子科技有限公司 | 一种混合云环境下的调度方法以及流控设备 |
CN106850581A (zh) * | 2017-01-04 | 2017-06-13 | 网宿科技股份有限公司 | 互动直播流媒体数据的分发备份方法、系统及服务器 |
CN107172015A (zh) * | 2017-04-25 | 2017-09-15 | 北京潘达互娱科技有限公司 | 直播视频推送方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7908246B2 (en) * | 2008-03-06 | 2011-03-15 | International Business Machines Corporation | Separating file data streams to enhance progressive incremental processing |
-
2018
- 2018-03-08 CN CN201810191844.7A patent/CN108307198B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984315A (zh) * | 2006-06-09 | 2007-06-20 | 徐礼岗 | 一种运用动态广播节点技术实现p2p直播的方法 |
CN101938505A (zh) * | 2009-07-01 | 2011-01-05 | 华为技术有限公司 | 一种P2P流媒体数据分发的方法、系统和proxy节点 |
CN102567120A (zh) * | 2012-02-13 | 2012-07-11 | 北京星网锐捷网络技术有限公司 | 一种节点调度优先级确定方法及装置 |
CN103297560A (zh) * | 2013-05-21 | 2013-09-11 | 江苏物联网研究发展中心 | 一种数据流分类的方法及服务器 |
CN104967873A (zh) * | 2015-06-29 | 2015-10-07 | 上海帝联信息科技股份有限公司 | 流媒体直播调度方法、系统和调度服务器 |
CN105187848A (zh) * | 2015-08-18 | 2015-12-23 | 浪潮软件集团有限公司 | 一种内容分发网络系统及方法 |
CN105915945A (zh) * | 2015-12-08 | 2016-08-31 | 乐视云计算有限公司 | 用于cdn平台的内容分发方法及调度代理服务器 |
CN106453132A (zh) * | 2016-12-14 | 2017-02-22 | 深圳市深信服电子科技有限公司 | 一种混合云环境下的调度方法以及流控设备 |
CN106850581A (zh) * | 2017-01-04 | 2017-06-13 | 网宿科技股份有限公司 | 互动直播流媒体数据的分发备份方法、系统及服务器 |
CN107172015A (zh) * | 2017-04-25 | 2017-09-15 | 北京潘达互娱科技有限公司 | 直播视频推送方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108307198A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108307198B (zh) | 流服务节点调度方法、装置及调度节点 | |
US9866791B2 (en) | Efficiently distributing video content using a combination of a peer-to-peer network and a content distribution network | |
JP4830025B2 (ja) | 貢献認識(contributionaware)ピアツーピアライブストリーミングサービス | |
KR101404008B1 (ko) | 무선 메시 네트워크들에서의 콘텐츠 서비스들에 관한 통합된 피어-투-피어 및 캐시 시스템 | |
Braun et al. | Service-centric networking | |
US20080037527A1 (en) | Peer-to-Peer Interactive Media-on-Demand | |
US20120278455A1 (en) | Issuing method and system for configuration information | |
KR20200083608A (ko) | 비디오 라이브 방송 방법 및 장치 | |
CN102355448A (zh) | 云流媒体数据传输方法及系统 | |
US8966107B2 (en) | System and method of streaming data over a distributed infrastructure | |
KR20150055556A (ko) | 네임―기반의 콘텐츠 분산 시스템에서 서버 핸드오프를 수행하는 방법 및 장치 | |
WO2011026430A1 (zh) | 内容分发网络中数据同步的方法及系统 | |
CN112087390B (zh) | 一种网络路由方法及装置 | |
WO2020155293A1 (zh) | 一种推流方法、系统及服务器 | |
JP2015503146A (ja) | 大規模メディア・クラウドのための分散型マッピング機能 | |
WO2022242361A1 (zh) | 数据下载方法、装置、计算机设备和存储介质 | |
CN101588287A (zh) | 对等网络数据调度和下载的方法、装置和系统 | |
CN109495526A (zh) | 一种报文发送方法、装置、系统、电子设备及存储介质 | |
EP3902279A1 (en) | Audio and video stream distribution method in audio and video stream distribution system, and dynamic parent node | |
Pal et al. | A survey on adaptive multimedia streaming | |
Kondo et al. | Resource discovery for edge computing over named data networking | |
Choi et al. | TDM: time-driven mesh overlay network for peer-to-peer video-on-demand services | |
CN115022177B (zh) | Cdn系统、回源方法、cdn节点及存储介质 | |
CN113873289B (zh) | 一种iptv系统直播调度的方法 | |
WO2022267692A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |