CN112822243A - 推流服务器的选择方法、装置、存储介质及电子设备 - Google Patents

推流服务器的选择方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN112822243A
CN112822243A CN202011620011.1A CN202011620011A CN112822243A CN 112822243 A CN112822243 A CN 112822243A CN 202011620011 A CN202011620011 A CN 202011620011A CN 112822243 A CN112822243 A CN 112822243A
Authority
CN
China
Prior art keywords
server
plug
flow
load state
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
Application number
CN202011620011.1A
Other languages
English (en)
Inventor
刘笑
马皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dami Technology Co Ltd
Original Assignee
Beijing Dami Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Dami Technology Co Ltd filed Critical Beijing Dami Technology Co Ltd
Priority to CN202011620011.1A priority Critical patent/CN112822243A/zh
Publication of CN112822243A publication Critical patent/CN112822243A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请实施例公开了一种推流服务器的选择方法、装置、存储介质及电子设备,属于在线教育领域。房间管理服务器获取推流集群中个推流服务器的负荷状态参数的参数值,根据负荷状态参数的参数值从推流集群中选择一个目标推流服务器,指示目标推流服务器向虚拟教室中推送媒体流,房间管理服务器实现推流服务器的选择以及推流服务器实现推流,将房间控制服务器和推流服务器功能独立设置,降低耦合性,便于网络架构后续进行平滑升级。同时,通过负荷状态参数的参数值选择推流服务器,可以提高推流服务器上资源的利用率,实现负载均衡。

Description

推流服务器的选择方法、装置、存储介质及电子设备
技术领域
本申请涉及在线教育领域,尤其涉及一种推流服务器的选择方法、装置、存储介质及电子设备。
背景技术
随着互联网的发展,在线教育收到越来越多人的欢迎,在线教育可以不限时间和地点灵活的学习,充分提升自身的技能。相对于传统的使用固定教室更移动便捷化,在画面、音频更具视觉化和更具吸引力。
在在线教育的网络架构中,推流集群包括多个推流服务器,在向终端设备进行推流之前,推流集群中的控制器来采用轮询的方式选择推流服务器为终端设备推流,然而目前这种推流方式存在耦合性差和推流服务器资源利用率不高的问题。
发明内容
本申请实施例提供了的推流服务器的选择方法、装置、存储介质及电子设备,可以解决推流集群存在耦合性差和推流服务器资源利用率不高的问题。所述技术方案如下:
第一方面,本申请实施例提供了一种媒体服务器的选择方法,所述方法包括:
接收上课请求消息;其中,所述上课请求消息携带房间号;
获取推流集群中各个推流集群中各个推流服务器的负荷状态参数值;
根据各个推流服务器的负荷状态参数在所述推流集群中选择一个目标推流服务器;
指示所述目标推流服务器相所述房间号对应的虚拟教室推送媒体流。
在一种可能的设计中,所述获取推流集群中各个推流服务器的负荷状态参数值,包括:
向共享服务器发送负荷状态查询请求;
接收所述共享服务器响应于所述负荷状态查询请求返回的负荷状态查询响应;其中,所述负荷状态查询响应携带各个推流服务器的负荷状态参数值。
在一种可能的设计中,所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括:
向推流集群中的各个推流服务器广播负荷状态查询请求;
接收各个推流服务器响应于所述负荷状态查询请求返回的负荷状态查询请求;其中,负荷状态查询响应携带推流服务器的服务器标识和负荷状态参数的参数值。
在一种可能的设计中,所述根据各个推流服务器的负荷状态参数的参数值从所述推流集群中选择一个目标推流服务器,包括:
根据所述负荷状态参数的参数值从所述推流集群中选择N个负荷最轻的推流服务器;其中,N为大于1的整数;
从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器。
在一种可能的设计中,所述从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器,包括:
获取当前时刻;
将所述当前时刻进行哈希运算得到哈希值;
根据数量N对所述哈希值进行求模处理得到模值;
根据所述模值在N个负荷最轻的推流服务器中确定目标推流服务器。
在一种可能的设计中,所述指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流,包括:
向所述目标推流服务器发送推流任务指示;其中,所述推流任务指示携带素材标识,所述推流任务指示用于指示所述目标推流服务器从素材库中选择所述素材标识对应的上课素材,以及根据所述上课素材向所述房间号对应的虚拟教室推送媒体流。
第二方面,本申请实施例提供了一种推流服务器的选择装置,所述推流服务器的选择装置包括:
收发单元,用于接收上课请求消息;其中,所述上课请求消息携带房间号;
获取单元,用于获取推流集群中各个推流服务器的负荷状态参数的参数值;
选择单元,用于根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器;
指示单元,用于指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
房间管理服务器获取推流集群中个推流服务器的负荷状态参数的参数值,根据负荷状态参数的参数值从推流集群中选择一个目标推流服务器,指示目标推流服务器向虚拟教室中推送媒体流,房间管理服务器实现推流服务器的选择以及推流服务器实现推流,将房间控制服务器和推流服务器功能独立设置,降低耦合性,便于网络架构后续进行平滑升级。同时,通过负荷状态参数的参数值选择推流服务器,可以提高推流服务器上资源的利用率,实现负载均衡。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的推流服务器的选择方法的流程示意图;
图3是本申请实施例提供的推流服务器的选择方法的另一流程示意图;
图4是本申请实施例提供的一种装置的结构示意图;
图5是本申请实施例提供的一种装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
图1示出了可以应用于本申请的推流服务器的选择方法或推流服务器的选择装置的示例性系统架构。
如图1所示,系统架构可以包括:共享服务器10、房间管理服务器集群11、推流集群12、素材库13、终端设备14、负载均衡服务器15。素材库13用于存储多个上课素材,素材库13可以为非关系型数据库,例如:nosql数据库。素材库可以部署在本地的物理服务器上,也可以部署在互联网中的云服务器上。上课素材的类型可以是录播视频文件或直播视频文件,录播视频文件是预先录制的视频文件,老师通过终端设备录制上课的视频生成录播视频文件,将录播视频文件上传到素材库中;该录播视频文件又可以分为普通视频文件和AI视频文件,普通视频文件不具备交互功能,仅仅录制老师教学时的声音和图像生成的视频文件,然后后续学生上课时将该预先录制的视频文件进行回放,学生在上课过程中无法与老师进行互动。AI视频文件具有交互功能,学生在上课过程中可以与老师进行互动。直播视频文件则是老师在上课过程中实时采集的媒体流,然后将媒体流分发给各个学生的终端设备。
其中,系统架构中的各个设备之间可以采用无线通信链路,也可以采用有线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(WIreless-FIdelity,Wi-Fi)通信链路或微波通信链路等。
其中,共享服务器10与房间管理服务器集群11中的各个房间管理服务器均可以通信,共享服务器10的数量可以是一个或多个,多个共享服务器10可以组成集群,共享服务器10用于存储完备的表示推流服务器的服务器标识和房间号之间的映射关系的映射关系信息,共享服务器10可以为redis服务器。共享服务器10中存储有推流集群12中各个推流服务器的负荷状态参数的参数值,负荷状态参数包括但不限于CPU占用率、内存占用率、磁盘IO数量中的一种或多种。负载均衡服务器15预存储或与配置有房间管理服务器和推流服务器之间的映射关系,一个房间管理服务器管辖至少一个推流服务器,负载均衡服务器15周期性的获取推流集群12中各个推流服务器的负荷状态参数的参数值,然后根据映射关系,将获取到的负荷状态参数的参数值通过对应的房间管理服务器上报给共享服务器10,这样共享服务器10中存储各个推流服务器的最新的负荷状态参数的参数值。
其中,推流集群12包括多个推流服务器,每个推流服务器管理多个终端设备,终端设备可以为老师的终端设备或学生的终端设备,本申请一般为学生的终端设备。推流服务器接收到房间管理服务器发送的推流任务指示时,确定待推流的虚拟教室的房间号以及从素材库13中获取上课素材,然后向虚拟教室中的终端设备推流媒体流,终端设备的显示屏上显示课程的视频画面,学生在观看视频画面的同时也可以实现对老师进行互动。
其中,本申请的上课方式可以是一对一或一对多,即一个教师对应一个学生或一个教师对应多个学生。相应的,在一对一的教学方式中,一个用于教师上课的终端设备和一个用于学生上课的终端设备之间进行通信;在一对多的教学方式中,一个用于教师上课的终端设备和多个用于学生上课的终端设备之间进行通信。
终端设备14可以安装有各种通信客户端应用,例如:视频录制应用、视频播放应用、语音交互应用、搜索类应用、及时通信工具、邮箱客户端、社交平台软件等。
终端设备14可以是硬件,也可以是软件。当终端设备14为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。终端设备14为软件时,可以是安装上上述所列举的电子设备中。其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
终端设备14为硬件时,其上还可以安装有显示设备和摄像头,显示设备显示可以是各种能实现显示功能的设备,摄像头用于采集视频流;例如:显示设备可以是阴极射线管显示器(cathode ray tube display,简称CR)、发光二极管显示器(light-emitting diodedisplay,简称LED)、电子墨水屏、液晶显示屏(liquid crystal display,简称LCD)、等离子显示面板(plasma display panel,简称PDP)等。用户可以利用学生的终端设备和老师的终端设备上的显示设备,来查看显示的文字、图片、视频等信息。
需要说明的是,本申请实施例提供的推流服务器的选择方法一般由房间管理服务器102执行,相应的,推流服务器的选择装置一般设置于房间管理服务器中。
房间管理服务器可以是提供各种服务的服务器,房间管理服务器可以是硬件,也可以是软件。当房间管理服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当房间管理服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
应理解,图1中的终端设备、网络和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的终端设备、网络和服务器。
下面将结合附图2-附图3,对本申请实施例提供的推流服务器的选择方法进行详细介绍。其中,本申请实施例中的推流服务器的选择装置可以是房间管理服务器集群中的任意一个房间管理服务器。
请参见图2,为本申请实施例提供了一种推流服务器的选择方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤:
S201、接收上课请求消息。
其中,学生在上课之前,通过终端设备在业务控制台上预约课程,业务控制台可包括至少一个服务器,业务控制台设置课程的上课开始时刻、上课结束时刻和科目内容等信息。在到达课程的上课时间时,业务控制台会为该课程分配一个虚拟教室和该虚拟教室的房间号,房间号用于唯一表示虚拟教室的身份,以及向房间管理服务器发送上课请求消息,上课请求消息分配的虚拟教室的房间号。
虚拟教室为业务控制台分配的用于学生和老师上课的逻辑空间,虚拟教室包括教室上课的终端设备和学生上课的终端设备,虚拟教室中的终端设备相互之间可以进行语音对讲、文字聊天和播放视频的操作。
S202、获取推流集群中各个推流服务器的负荷状态参数的参数值。
其中,负荷状态参数表示推流服务器的负荷轻重程度,负荷状态参数包括但不限于:推流任务数量、终端设备数量、CPU占用率、磁盘IO数量和内存占用率中的一种或多种,推流任务数量表示推流服务器上当前承载的推流路线的数量,推流服务器支持多路推流,推流任务数越大则表示推流服务器的负荷越重,反之,则推流服务器的负荷越轻;终端设备数量表示虚拟教室中当前接入的终端设备的数量,终端设备可以是学生的终端设备或老师的终端设备,终端设备数量越大,推流服务器的负荷越重,反之,则推流服务器的负荷越轻;CPU占用率表示推流服务器上CPU资源的占用情况,CPU占用率越高表示推流服务器的负荷越重,反之则推流服务器的负荷越轻;内存占用率表示推流服务器上内存资源的占用情况,内存占用率越高表示推流服务器的负荷越重,反之则推流服务器的负荷越轻;磁盘IO数量表示单位时间内磁盘上IO操作的数量,磁盘IO数量越大则表示推流服务器的负荷越重,反之则表示推流服务器的负荷越轻。房间管理服务器获取负荷状态参数的参数值的方法可以是直接从推流服务器上获取,或间接的从第三方设备获取,本申请不作限制。
S203、根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器。
其中,房间管理服务器根据S202中获取的各个推流服务器的负荷状态参数的参数值,从推流集群中选择一个负荷较轻的推流服务器作为目标推流服务器。
选择目标推流服务器的规则可以是:从各个推流服务器中选择负荷最轻的推流服务器作为目标推流服务器;或对各个推流服务器的负荷程度进行升序排列,排在首尾的推流服务器的负荷最轻,选择排列在前N位的推流服务器,然后从N个推流服务器中随机选择一个推流服务器作为目标推流服务器。
S204、指示目标推流服务器向房间号对应的虚拟教室推流媒体流。
其中,房间管理服务器向目标推流服务器发送推流任务指示,推流任务指示携带房间号,房间号为虚拟教室的标识,目标推流服务器响应于推流任务指示向虚拟教室中的终端设备推流媒体流,终端设备可以为学生的终端设备或教师的终端设备。进一步的,任务推送指示还可以携带素材标识,目标推流服务器从素材标识从素材库中拉取上课素材,对上课素材进行编码生成媒体流,然后向虚拟教室中的终端设备推送媒体流。如果是直播场景,将老师的终端设备上传的老师媒体流推送给虚拟教室中的终端设备;如果是录播场景时,将预先存储的媒体文件生成老师媒体流,然后推送给各个学生的终端设备;如果是AI(artificial intelligence,人工智能)课程场景时,根据课程内容从素材库中选择上课素材,根据素材生成AI教师的媒体流,然后将虚拟教室中的各个学生的终端设备推送老师媒体流。
本申请实施例的方案在执行时,房间管理服务器获取推流集群中个推流服务器的负荷状态参数的参数值,根据负荷状态参数的参数值从推流集群中选择一个目标推流服务器,指示目标推流服务器向虚拟教室中推送媒体流,房间管理服务器实现推流服务器的选择以及推流服务器实现推流,将房间控制服务器和推流服务器功能独立设置,降低耦合性,便于网络架构后续进行平滑升级。同时,通过负荷状态参数的参数值选择推流服务器,可以提高推流服务器上资源的利用率,实现负载均衡。
请参见图3,为本申请实施例提供了一种推流服务器的选择方法的流程示意图,本实施例的执行主体为房间管理服务器。该推流服务器的选择方法可以包括以下步骤:
S301、接收业务控制台的上课请求消息。
其中,学生在上课之前,通过终端设备在业务控制台上预约课程,业务控制台可包括至少一个服务器,业务控制台设置课程的上课开始时刻、上课结束时刻和科目内容等信息。在到达课程的上课时间时,业务控制台会为该课程分配一个虚拟教室和该虚拟教室的房间号,房间号用于唯一表示虚拟教室的身份,以及向房间管理服务器发送上课请求消息,上课请求消息分配的虚拟教室的房间号,房间管理服务器接收来自业务控制台的上课请求消息。
虚拟教室为业务控制台分配的用于学生和老师上课的逻辑空间,虚拟教室包括教室上课的终端设备和学生上课的终端设备,虚拟教室中的终端设备相互之间可以进行语音对讲、文字聊天和播放视频的操作。
S302、向共享服务器发送负荷状态查询请求。
其中,共享服务器存储有各个推流服务器的负荷状态参数的参数值,共享服务器可以为redis服务器。负载均衡服务器会周期性的监测推流集群中各个推流服务器的负荷状态参数的参数值,然后将监测到的负荷状态参数的参数值通过房间管理服务器上报给共享服务器,这样共享服务器中存储有最新的各个推流服务器的负荷状态参数的参数值。负载均衡服务器在选择上报的房间管理服务器时,可以采用轮询方式在房间管理服务器集群中选择一个房间管理服务器来上报,或者在房间管理服务器集群中选择一个负荷最轻的房间管理服务器来上报。
对于房间管理服务器集群中的任意一个房间管理服务器来说,房间管理服务器向共享服务器发送负荷状态查询请求,负荷状态查询请求用于请求查询推流集群中各个推流服务器的负荷状态参数的参数值。
S303、接收共享服务器响应于负荷状态查询请求返回的负荷状态查询响应。
其中,共享服务器接收来自房间管理服务器的负荷状态查询请求时,向房间管理服务器返回负荷状态查询响应,负荷状态查询响应携带各个推流服务器的标识和负荷状态参数的参数值,负荷状态响应可以包括消息头和消息体,各个推流服务器的标识和负荷状态参数的参数值位于消息体中。
例如:推流集群包括推流服务器1、推流服务器2、推流服务器3和推流服务器4,负荷状态参数为CPU占用率,共享服务器响应于负荷状态查询请求返回的负荷状态查询响应包括:(推流服务器1,5%),(推流服务器2,10%),(推流服务器3,8%),(推流服务器4,9%)。
S304、解析负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
其中,房间管理服务器从负荷状态查询响应的消息体中解析出各个推流服务器的负荷状态参数的参数值。
在另一种可能的实施方式中,房间管理服务器获取各个推流服务器的负荷状态参数的参数值的方法可以包括:房间管理服务器向推流集群中的各个推流服务器广播负荷状态查询请求,各个推流服务器接收到负荷状态查询请求,响应于负荷状态查询请求向房间管理服务器发送携带服务器标识和负荷状态参数的参数值的负荷状态查询响应。
例如:推流集群包括推流服务器1、推流服务器2、推流服务器3和推流服务器4,负荷状态参数为CPU占用率,房间管理服务器向推流集群中广播负荷状态查询请求。推流服务器1响应该负荷状态查询请求,向房间管理服务器发送携带推流服务器1的标识和CPU占用率5%的负荷状态查询响应;推流服务器2响应该负荷状态查询请求,向房间管理服务器发送携带推流服务器2的标识和CPU占用率10%的负荷状态查询响应;推流服务器3响应该负荷状态查询请求,向房间管理服务器发送携带推流服务器3的标识和CPU占用率8%的负荷状态查询响应;推流服务器4响应该负荷状态查询请求,向房间管理服务器发送携带推流服务器4的标识和CPU占用率9%的负荷状态查询响应。
在另一种可能的实施方式中,负载均衡服务器周期性的监测推流集群中各个推流服务器的负荷状态参数的参数值,将各个推流服务器的负荷状态参数的参数值存储到本地。房间服务器向负载均衡服务器发送负荷状态参数查询请求,负载均衡服务器响应于该负荷状态参数查询请求向房间管理服务器返回负荷状态查询响应,负荷状态查询响应携带各个推流服务器的标识和对应的负荷状态参数的参数值。
在另一种可能的实施例方式中,一个房间管理服务器管辖的推流服务器的数量是有限制的,且其管辖的推流服务器为推流集群中的部分推流服务器,那么房间管理服务器并不需要获取推流集群中所有推流服务器的负荷状态参数的参数值,只需要其管辖的推流服务器的负荷状态参数的参数值。
例如:推流集群包括推流服务器1、推流服务器2、推流服务器3和推流服务器4,房间管理服务器1管辖推流服务器1和推流服务器2,房间管理服务器1向共享服务器发送携带推流服务器1和推流服务器2的标识的负荷状态查询请求,然后共享服务器响应于该负荷状态查询请求生成携带推流服务器1和推流服务器2的负荷状态参数的参数值的负荷状态查询响应。
又例如:推流集群包括推流服务器1、推流服务器2、推流服务器3和推流服务器4,房间管理服务器1管辖推流服务器1和推流服务器2,房间管理服务器1向推流服务器1发送负荷状态查询请求,推流服务器1响应于该负荷状态查询请求,向房间管理服务器1返回携带推流服务器1的负荷状态查询响应;房间管理服务器1向推理服务器2发送负荷状态查询请求,推流服务器2响应于该负荷状态查询请求,向房间管理服务器1返回携带推流服务器2的负荷状态查询响应。
S305、根据负荷状态参数的参数值从推流集群中选择N个负荷最轻的推流服务器。
其中,N为大于1的整数,根据负荷状态参数的参数值,将推流集群中的各个推流服务器根据负荷从轻到重进行升序排列,然后选择排在前面的N个推流服务器;或将推流集群中的各个推流服务器根据负荷从重到轻进行降序排列,然后选择排在后面的N个推流服务器。
S306、获取当前时刻。
其中,根据本地的时钟单元或网络的时钟单元获取当前时刻。
S306、将当前时刻进行哈希运算得到哈希值。
其中,将当前时刻的字符串进行哈希运算得到哈希值,哈希运算的算法可以采用已知的任意一种哈希算法、
S307、根据数量N对哈希值进行求模运算得到模值。
其中,根据数量N对哈希值进行求模运算,求模运算的模值为0、1、…、N-1。
S308、在N个负荷最轻的推流服务器中确定模值对应的目标推流服务器。
其中,N个推流服务器从0开始编号,序号分别为:0、1、…、N-1,然后根据S307中计算得到的模值确定对应的目标推流服务器。
例如:N=4,4个推流服务器的编号分别为:0、1、2和3,S307中求模运算得到的模值为1,将编号为1的推流服务器作为目标推流服务器。
在另一种可能的实施方式中,根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器,包括:
从各个推流服务器中选择负荷最轻的推流服务器作为目标推流服务器。
S309、向目标服务器发送携带房间号和素材标识的推流任务指示。
其中,房间管理服务器向目标推流服务器发送推流任务指示,推流任务指示携带房间号和素材标识,房间号为虚拟教室的标识,素材标识为上课素材的标识,目标推流服务器从素材标识从素材库中拉取上课素材,对上课素材进行编码生成媒体流,然后向虚拟教室中的终端设备推送媒体流。如果是直播场景,将老师的终端设备上传的老师媒体流推送给虚拟教室中的终端设备;如果是录播场景时,将预先存储的媒体文件生成老师媒体流,然后推送给各个学生的终端设备;如果是AI(artificial intelligence,人工智能)课程场景时,根据课程内容从素材库中选择上课素材,根据素材生成AI教师的媒体流,然后将虚拟教室中的各个学生的终端设备推送老师媒体流。
实施本申请的实施例,在课程开始时,房间管理服务器获取推流集群中个推流服务器的负荷状态参数的参数值,根据负荷状态参数的参数值从推流集群中选择一个目标推流服务器,指示目标推流服务器向虚拟教室中推送媒体流,房间管理服务器实现推流服务器的选择以及推流服务器实现推流,将房间控制服务器和推流服务器功能独立设置,降低耦合性,便于网络架构后续进行平滑升级。同时,通过负荷状态参数的参数值选择推流服务器,可以提高推流服务器上资源的利用率,实现负载均衡。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图4,其示出了本申请一个示例性实施例提供的推流服务器的选择装置的结构示意图。以下简称装置4,装置4可以通过软件、硬件或者两者的结合实现成为房间管理服务器的全部或一部分。装置4包括:收发单元401、获取单元402、选择单元403和指示单元404。
收发单元401,用于接收上课请求消息;其中,所述上课请求消息携带房间号;
获取单元402,用于获取推流集群中各个推流服务器的负荷状态参数的参数值;
选择单元,用于根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器;
指示单元,用于指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流。
在一个或多个实施例中,所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括;
向共享服务器发送负荷状态查询请求;
接收所述共享服务器响应于所述负荷状态查询请求返回的负荷状态查询响应;其中,所述负荷状态查询响应携带各个推流服务器的负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
在一个或多个实施例中,所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括:
向推流集群中的各个推流服务器广播负荷状态查询请求;
接收各个推流服务器响应于所述负荷状态查询请求返回的负荷状态查询请求;其中,负荷状态查询响应携带推流服务器的服务器标识和负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
在一个或多个实施例中,所述根据各个推流服务器的负荷状态参数的参数值从所述推流集群中选择一个目标推流服务器,包括:
根据所述负荷状态参数的参数值从所述推流集群中选择N个负荷最轻的推流服务器;其中,N为大于1的整数;
从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器。
在一个或多个实施例中,所述从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器,包括:
获取当前时刻;
将所述当前时刻进行哈希运算得到哈希值;
根据数量N对所述哈希值进行求模运算得到模值;
在N个负荷最轻的推流服务器中确定所述模值对应的目标推流服务器。
在一个或多个实施例中,所述指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流,包括:
向所述目标推流服务器发送推流任务指示;其中,所述推流任务指示携带素材标识和房间号,所述推流任务指示用于指示所述目标推流服务器从素材库中选择所述素材标识对应的上课素材,以及根据所述上课素材向所述房间号对应的虚拟教室推送媒体流。
在一个或多个实施例中,负荷状态参数包括:推流任务数量、终端设备数量、CPU占用率、磁盘IO数量和内存占用率中的一种或多种。
需要说明的是,上述实施例提供的装置4在执行推流服务器的选择方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的推流服务器的选择方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2-图3所示实施例的方法步骤,具体执行过程可以参见图2-图3所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的推流服务器的选择方法。
图5为本申请实施例提供的一种推流服务器的选择装置结构示意图,以下简称装置5,装置5可以集成于前述的房间管理服务器中,如图5所示,该装置包括:存储器502、处理器501、输入装置503、输出装置504和通信接口。
存储器502可以是独立的物理单元,与处理器501、输入装置503和输出装置504可以通过总线连接。存储器502、处理器501、输入装置503和输出装置504也可以集成在一起,通过硬件实现等。
存储器502用于存储实现以上方法实施例,或者装置实施例各个模块的程序,处理器501调用该程序,执行以上方法实施例的操作。
输入装置502包括但不限于键盘、鼠标、触摸面板、摄像头和麦克风;输出装置包括但限于显示屏。
通信接口用于收发各种类型的消息,通信接口包括但不限于无线接口或有线接口。
可选地,当上述实施例的分布式任务调度方法中的部分或全部通过软件实现时,装置也可以只包括处理器。用于存储程序的存储器位于装置之外,处理器通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器可以包括易失性存储器(volatile memory),例如存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
其中,处理器501调用存储器502中的程序代码用于执行以下步骤:
接收上课请求消息;其中,所述上课请求消息携带房间号;
获取推流集群中各个推流服务器的负荷状态参数的参数值;
根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器;
指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流。
在一个或多个可能的实施例中,处理器501执行所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括;
向共享服务器发送负荷状态查询请求;
接收所述共享服务器响应于所述负荷状态查询请求返回的负荷状态查询响应;其中,所述负荷状态查询响应携带各个推流服务器的负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
在一个或多个可能的实施例中,处理器501执行获取推流集群中各个推流服务器的负荷状态参数的参数值,包括:
向推流集群中的各个推流服务器广播负荷状态查询请求;
接收各个推流服务器响应于所述负荷状态查询请求返回的负荷状态查询请求;其中,负荷状态查询响应携带推流服务器的服务器标识和负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
在一个或多个可能的实施例中,处理器501执行所述根据各个推流服务器的负荷状态参数的参数值从所述推流集群中选择一个目标推流服务器,包括:
根据所述负荷状态参数的参数值从所述推流集群中选择N个负荷最轻的推流服务器;其中,N为大于1的整数;
从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器。
在一个或多个可能的实施例中,处理器501执行所述从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器,包括:
获取当前时刻;
将所述当前时刻进行哈希运算得到哈希值;
根据数量N对所述哈希值进行求模运算得到模值;
在N个负荷最轻的推流服务器中确定所述模值对应的目标推流服务器。
在一个或多个可能的实施例中,处理器501执行所述指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流,包括:
向所述目标推流服务器发送推流任务指示;其中,所述推流任务指示携带素材标识和房间号,所述推流任务指示用于指示所述目标推流服务器从素材库中选择所述素材标识对应的上课素材,以及根据所述上课素材向所述房间号对应的虚拟教室推送媒体流。
在一个或多个可能的实施例中,负荷状态参数包括:推流任务数量、终端设备数量、CPU占用率、磁盘IO数量和内存占用率中的一种或多种。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的推流服务器的选择方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

Claims (10)

1.一种推流服务器的选择方法,其特征在于,所述方法包括:
接收上课请求消息;其中,所述上课请求消息携带房间号;
获取推流集群中各个推流服务器的负荷状态参数的参数值;
根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器;
指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流。
2.根据权利要求1所述的方法,其特征在于,所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括;
向共享服务器发送负荷状态查询请求;
接收所述共享服务器响应于所述负荷状态查询请求返回的负荷状态查询响应;其中,所述负荷状态查询响应携带各个推流服务器的负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
3.根据权利要求1所述的方法,其特征在于,所述获取推流集群中各个推流服务器的负荷状态参数的参数值,包括:
向推流集群中的各个推流服务器广播负荷状态查询请求;
接收各个推流服务器响应于所述负荷状态查询请求返回的负荷状态查询请求;其中,负荷状态查询响应携带推流服务器的服务器标识和负荷状态参数的参数值;
解析所述负荷状态查询响应得到各个推流服务器的负荷状态参数的参数值。
4.根据权利要求1所述的方法,其特征在于,所述根据各个推流服务器的负荷状态参数的参数值从所述推流集群中选择一个目标推流服务器,包括:
根据所述负荷状态参数的参数值从所述推流集群中选择N个负荷最轻的推流服务器;其中,N为大于1的整数;
从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器。
5.根据权利要求1所述的方法,其特征在于,所述从所述N个负荷最轻的推流服务器中随机选择一个推流服务器作为目标推流服务器,包括:
获取当前时刻;
将所述当前时刻进行哈希运算得到哈希值;
根据数量N对所述哈希值进行求模运算得到模值;
在N个负荷最轻的推流服务器中确定所述模值对应的目标推流服务器。
6.根据权利要求1所述的方法,其特征在于,所述指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流,包括:
向所述目标推流服务器发送推流任务指示;其中,所述推流任务指示携带素材标识和房间号,所述推流任务指示用于指示所述目标推流服务器从素材库中选择所述素材标识对应的上课素材,以及根据所述上课素材向所述房间号对应的虚拟教室推送媒体流。
7.根据权利要求1至6任意一项所述的选择方法,其特征在于,负荷状态参数包括:推流任务数量、终端设备数量、CPU占用率、磁盘IO数量和内存占用率中的一种或多种。
8.一种推流服务器的选择装置,其特征在于,包括:
收发单元,用于接收上课请求消息;其中,所述上课请求消息携带房间号;
获取单元,用于获取推流集群中各个推流服务器的负荷状态参数的参数值;
选择单元,用于根据各个推流服务器的负荷状态参数的参数值在所述推流集群中选择一个目标推流服务器;
指示单元,用于指示所述目标推流服务器向所述房间号对应的虚拟教室推送媒体流。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的方法步骤。
10.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的方法步骤。
CN202011620011.1A 2020-12-30 2020-12-30 推流服务器的选择方法、装置、存储介质及电子设备 Pending CN112822243A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011620011.1A CN112822243A (zh) 2020-12-30 2020-12-30 推流服务器的选择方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011620011.1A CN112822243A (zh) 2020-12-30 2020-12-30 推流服务器的选择方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN112822243A true CN112822243A (zh) 2021-05-18

Family

ID=75855944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011620011.1A Pending CN112822243A (zh) 2020-12-30 2020-12-30 推流服务器的选择方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN112822243A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022411A (zh) * 2022-06-16 2022-09-06 深圳市欢太科技有限公司 基于WebRTC的媒体服务器调度系统、方法及装置
CN115022411B (zh) * 2022-06-16 2024-06-04 深圳市欢太科技有限公司 基于WebRTC的媒体服务器调度系统、方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1495634A (zh) * 2002-06-27 2004-05-12 上海汉唐科技有限公司 服务器集群负载均衡方法及系统
CN1921479A (zh) * 2005-08-23 2007-02-28 中兴通讯股份有限公司 一种流媒体系统负荷分担方法及其系统
CN110071947A (zh) * 2018-01-22 2019-07-30 鸿合科技股份有限公司 在线授课的方法和装置
US20190312811A1 (en) * 2018-04-06 2019-10-10 Cisco Technology, Inc. Stateless distributed load-balancing
CN110673777A (zh) * 2019-08-28 2020-01-10 北京大米科技有限公司 在线教学方法、装置、存储介质及终端设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1495634A (zh) * 2002-06-27 2004-05-12 上海汉唐科技有限公司 服务器集群负载均衡方法及系统
CN1921479A (zh) * 2005-08-23 2007-02-28 中兴通讯股份有限公司 一种流媒体系统负荷分担方法及其系统
CN110071947A (zh) * 2018-01-22 2019-07-30 鸿合科技股份有限公司 在线授课的方法和装置
US20190312811A1 (en) * 2018-04-06 2019-10-10 Cisco Technology, Inc. Stateless distributed load-balancing
CN110673777A (zh) * 2019-08-28 2020-01-10 北京大米科技有限公司 在线教学方法、装置、存储介质及终端设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022411A (zh) * 2022-06-16 2022-09-06 深圳市欢太科技有限公司 基于WebRTC的媒体服务器调度系统、方法及装置
CN115022411B (zh) * 2022-06-16 2024-06-04 深圳市欢太科技有限公司 基于WebRTC的媒体服务器调度系统、方法及装置

Similar Documents

Publication Publication Date Title
CN110570698A (zh) 一种在线教学控制方法、装置、存储介质以及终端
KR100990525B1 (ko) 네트워크내 디바이스들간의 관계 개시
CN110673777A (zh) 在线教学方法、装置、存储介质及终端设备
CN112714186A (zh) 推流服务器的分配方法、媒体流的推送方法、装置、存储介质及电子设备
CN106971257A (zh) 一种基于云平台的智慧学习系统
CN110266509A (zh) 多媒体会议端点传送系统
CN110609970B (zh) 用户身份识别方法、装置、存储介质及电子设备
CN103595759B (zh) 基于云端的桌面展示方法
WO2021159832A1 (zh) 在线交互控制方法、装置、存储介质及电子设备
CN108810052A (zh) 直播服务器的选择方法及装置
US20230285854A1 (en) Live video-based interaction method and apparatus, device and storage medium
CN112769919B (zh) 推流任务的分发方法、装置、存储介质及电子设备
CN107517399A (zh) 一种媒体信息同步的方法以及服务器
CN112309187A (zh) 一种虚拟现实教学方法、装置及系统
JP6335978B2 (ja) 通信セッション上の一部の参加者のための仮想の通信セッションを提供するシステムおよび方法
CN110300053A (zh) 一种添加好友的方法与设备
CN113031943A (zh) 编码生成方法、装置、存储介质及电子设备
CN112632342A (zh) 数据查询方法、装置、存储介质及电子设备
Li et al. A novel genetic service function deployment management platform for edge computing
CN114968227A (zh) 智能作战仿真平台以及智能作战仿真平台的数据处理方法
US20100218120A1 (en) Rich signaling feedback mechanism for group communication
CN108650520A (zh) 一种视频直播控制方法、相关设备及计算机存储介质
CN111885351A (zh) 一种屏幕显示方法、装置、终端设备和存储介质
CN112822243A (zh) 推流服务器的选择方法、装置、存储介质及电子设备
US20190313156A1 (en) Asynchronous Video Conversation Systems and Methods

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210518