通信网络构建方法、装置及计算机设备转让专利

申请号 : CN202210421412.7

文献号 : CN114827097B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐晶

申请人 : 咪咕文化科技有限公司中国移动通信集团有限公司

摘要 :

本发明实施例涉及通信技术领域,公开了一种通信网络构建方法,该方法包括:确定建立连接的各个客户端的流连接数;当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过上述方式,本发明实施例融合了Mesh的去中心化特性、SFU中转及MCU低带宽占用特性,能够实现通信网络的动态自组织。

权利要求 :

1.一种通信网络构建方法,其特征在于,所述方法包括:

确定建立连接的各个客户端的流连接数;所述流连接数为各个客户端流连接数总和;

当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;

当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。

2.根据权利要求1所述的方法,其特征在于,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使当前客户端进行负载计算,得到所述当前客户端对应的负载信息;根据所述负载信息,确定所述当前客户端是否可承担代理连接。

3.根据权利要求1所述的方法,其特征在于,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:当所述当前客户端不可承担代理连接时,根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数;或者在所述当前客户端代理目标客户端的流连接时,所述当前客户端下线前,重新建立目标客户端与各个客户端的流连接,并根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在当前客户端下线且下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。

4.根据权利要求1所述的方法,其特征在于,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:通过监听通知机制向各所述客户端发起流缩减协商请求,并确定各所述客户端的流缩减操作的执行状态。

5.根据权利要求1所述的方法,其特征在于,所述确定建立连接的各个客户端的流连接数之前,所述方法还包括:监听各个客户端接入会议的会议信息,所述会议信息包括各个客户端信息;根据各个所述客户端信息建立各个客户端之间的会议连接。

6.根据权利要求5所述的方法,其特征在于,所述监听各个客户端接入会议的会议信息之前,包括:监听会议事件的注册信息,所述会议事件的注册信息中包括会议ID、参会者ID及格式信息;

监听各个客户端在所述会议事件中的入会注册信息,所述入会注册信息包括各个参会的客户端的参会者ID;

根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接。

7.根据权利要求6所述的方法,其特征在于,所述根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接之前,所述方法还包括:获取各个客户端的连接要素注册信息,所述连接要素注册信息包括会话描述协议及所述客户端对应的建立网络连接的内网IP地址信息候选列表。

8.一种通信网络构建装置,其特征在于,包括:

确定模块,用于确定建立连接的各个客户端的流连接数;所述流连接数为各个客户端流连接数总和;

流缩减模块,用于当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;

通信建立模块,用于当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。

9.一种计算机设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1‑7任意一项所述的通信网络构建方法的操作。

10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行如权利要求1‑7任意一项所述的通信网络构建方法的操作。

说明书 :

通信网络构建方法、装置及计算机设备

技术领域

[0001] 本发明实施例涉及通信技术领域,具体涉及一种通信网络构建方法、通信网络构建装置、计算机设备及计算机可读存储介质。

背景技术

[0002] 目前,WebRTC(Web Real‑Time Communication,网页即时通信)中多人音视频会议形式的P2P流媒体通讯,主要通过Mesh(无线网格网络)、SFU(Selective Forwarding Unit,选择性转发单元)、MCU(MultiPoint Control Unit,多点控制单元)这3种经典网络模型来进行。
[0003] 然而,在实施本发明实施例的过程中,发明人发现:Mesh方式耗用带宽较大,MCU尽管带宽占用很小,但因混流耗时导致的延迟较高,而且需要引入价格不菲的高性能MCU服务器,SFU通过引入大带宽的中转服务端试图解决Mesh的带宽瓶颈,但中心节点故障导致的大面积影响仍旧存在。因此,现有的WebRTC网络模型无法实现通信网络的动态组网调节。

发明内容

[0004] 鉴于上述问题,本发明实施例提供了一种通信网络构建方法、通信网络构建装置、计算机设备及计算机可读存储介质,用于解决现有技术中存在的WebRTC网络模型无法实现通信网络的动态组网调节问题。
[0005] 根据本发明实施例的一个方面,提供了一种通信网络构建方法,所述方法包括:
[0006] 确定建立连接的各个客户端的流连接数;
[0007] 当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;
[0008] 当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0009] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使当前客户端进行负载计算,得到所述当前客户端对应的负载信息;根据所述负载信息,确定所述当前客户端是否可承担代理连接。
[0010] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:当所述当前客户端不可承担代理连接时,根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数;或者
[0011] 在所述当前客户端代理目标客户端的流连接时,所述当前客户端下线前,重新建立目标客户端与各个客户端的流连接,并根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在当前客户端下线且下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。
[0012] 在一种可选的方式中,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:通过监听通知机制向各所述客户端发起流缩减协商请求,并确定各所述客户端的流缩减操作的执行状态。
[0013] 在一种可选的方式中,所述确定建立连接的各个客户端的流连接数之前,所述方法还包括:
[0014] 监听各个客户端接入会议的会议信息,根据各个所述客户端信息建立各个客户端之间的会议连接;所述会议信息包括各个客户端信息。
[0015] 在一种可选的方式中,所述监听各个客户端接入会议的会议信息,包括:监听会议事件的注册信息,所述会议事件的注册信息中包括会议ID、参会者ID及格式信息;监听各个客户端在所述会议事件中的入会注册信息,所述入会注册信息包括各个参会的客户端的参会者ID;根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接。
[0016] 在一种可选的方式中,所述根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接之前,所述方法还包括:获取各个客户端的连接要素注册信息,所述连接要素注册信息包括会话描述协议及所述客户端对应的建立网络连接的内网IP地址信息候选列表。
[0017] 根据本发明实施例的另一方面,提供了一种通信网络构建装置,包括:
[0018] 确定模块,用于确定建立连接的各个客户端的流连接数;
[0019] 流缩减模块,用于当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;
[0020] 通信建立模块,用于当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0021] 根据本发明实施例的另一方面,提供了一种计算机设备,包括:
[0022] 处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
[0023] 所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行所述的通信网络构建方法的操作。
[0024] 根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行所述的通信网络构建方法的操作。
[0025] 本发明实施例通过确定建立连接的各个客户端的流连接数,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,其中,所述当前客户端为各个所述客户端中的任意一个客户端,所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过这样的方式,能够实现通信网络的动态自组织,可以融合Mesh的去中心化特性以及SFU中转及MCU低带宽占用特性的网络架构,降低构建基于WebRTC音视频会议系统的成本。
[0026] 上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

[0027] 附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0028] 图1示出了本发明实施例提供的现有WebRTC的经典网络模型的架构示意图;
[0029] 图2示出了本发明实施例通信网络构建方法的应用环境示意图;
[0030] 图3示出了本发明实施例通信网络构建方法的流程示意图;
[0031] 图4示出了本发明实施例通信网络构建方法中流缩减前后的通信网络示意图;
[0032] 图5示出了本发明实施例提供的通信网络构建装置的结构示意图;
[0033] 图6示出了本发明实施例提供的计算机设备的结构示意图。

具体实施方式

[0034] 下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
[0035] 首先,对现有技术及本申请发明人所发现的现有技术的问题进行进一步阐述。WebRTC用于实现基于网页的视频会议,标准是WHATWG协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real‑Time Communications(RTC))能力。WebRTC的网络架构模型包括Mesh,MCU和SFU这3种。
[0036] 如图1中(a)所示,其中,Mesh是无中心化的P2P流连接:Mesh方式耗用带宽较大,对于N个用户的会议,每个用户都要消费音视频流各(N‑1)路,且每增加一个用户,总的音视频流数增加2N个(音视频各一路),因此仅适用于小规模的会议,因为客户端之间的带宽有限。
[0037] 如图1中(b)所示,SFU(Selective Forwarding Unit,选择性转发单元)是通过服务端代理转发多路流:SFU通过引入大带宽的中转服务端试图解决Mesh的带宽瓶颈,但中心节点故障导致的大面积影响仍旧存在。而且,服务端与每个客户端的带宽上限也是有瓶颈的:因为每个客户端消费的音视频流都是均等的,因此单个会议最大用户数上限,受限于与服务端之间带宽最不流畅的那个客户端。
[0038] 如图1中(c)所示,MCU(MultiPoint Control Unit,多点控制单元)是服务端混流后往客户端推单路流:MCU尽管带宽占用很小,但由于需要进行实时混流,如果支持一定规模的会议,不但因混流耗时导致的延迟较高,而且需要引入价格不菲的高性能MCU服务器。同时,存在这些中心MCU节点故障导致所有会议都中断的问题。
[0039] 本申请基于以上几种WebRTC的网络架构模型所存在的问题,针对局域网场景,提供一种融合Mesh的去中心化特性,以及SFU中转、MCU低带宽占用特性的网络架构方案,以降低企业构建内网环境基于WebRTC音视频会议系统的成本。该网络架构实现的核心思想是:以Mesh为基础,Mesh中的节点根据本地系统资源逐步升级到SFU、MCU,从而尽可能提高每个WebRTC会议的最大用户数上限。下面对本申请实施例通信网络构建方法的应用环境进行阐述。请结合图2,示出了本发明实施例通信网络构建方法的应用环境示意图。如图2所示,本发明实施例提供的通信网络构建方法应用于该动态自组织通信系统中,该动态自组织通信系统包括多个客户端、WebRTC以及监听通知模块,其中监听通知模块用于监听各个客户端上报的客户端信息、会议信息及流缩减事件,并通知WebRTC根据客户端信息、会议信息建立连接,或根据监听到的流缩减事件通知各个客户端执行流缩减操作。每个客户端之间通过WebRTC建立多媒体流,也即音视频会议。其中,监听通知模块可以为任何可以实现监听通知的模块,例如可以是Zookeeper集群。以Zookeeper集群为例,Zookeeper集群包括多个Zookeeper节点,每个节点可以对应一个或多个客户端,可以通过Zookeeper集群的ZooKeeper分布式一致性组件,让各个客户端预先主动上报连接要素信息至Zookeeper集群中,该连接要素信息包括会话描述协议(也即SDP信息)及所述客户端对应的建立网络连接的内网IP地址信息候选列表,该内网IP地址信息候选列表为所述客户端能够被外部连接到的IP地址信息,也即WebRTC中的ICE Candidate列表。本发明实施例中,Zookeeper集群中设置有存储连接要素信息的指定路径,当一个客户端在该指定路径中写入其连接要素信息后,其他客户端可以通过该指定路径进行读取。具体地,客户端将连接要素信息注册到Zookeeper集群中的过程为:各个客户端的会议后台程序启动后,将主动获取本机设备的SDP(多媒体会议的会话描述协议)信息,并上报到ZooKeeper集群中,并定时获取本机当前分配的内网IP地址,基于ZooKeeper分布式一致性组件在ZooKeeper集群中注册所述客户端的可以被外部连接到的IP地址信息,即WebRTC中的ICE Candidate列表,ZooKeeper集群中与该客户端对应的ZooKeeper节点存储连接要素信息,其存储的路径和格式如表1所示。
[0040] 表1:
[0041]
[0042]
[0043] 其中,在一个客户端将其连接要素信息注册到ZooKeeper集群中后,其它客户端可以获取该客户端的连接要素信息。连接要素信息中包括会话描述协议(也即SDP信息)及所述客户端对应的建立网络连接的内网IP地址信息候选列表。其中,由于每个客户端有2个默认的端口:一个用于生产音视频流,一个用于消费音视频流。因此,在iceCandidate不包含该端口信息。其中,该ZooKeeper分布式一致性组件可以通过ZooKeeper二进制库的API实现,其相当于登录zooKeeper的命令行控制台,执行如下命令行指令:create[路径][内容,即文本信息]。
[0044] 本发明实施例中,ZooKeeper集群还用于监听各个客户端接入会议的会议信息,根据各个所述客户端信息建立各个客户端之间的RTC会议连接。其中,ZooKeeper集群还用于获取流缩减协商请求,并将流缩减协商请求通知给各个客户端,以使各个客户端进行根据流缩减协商请求进行流缩减。
[0045] 图3示出了本发明实施例提供的通信网络构建方法的流程图,该方法由上述动态自组织通信系统执行,具体可以该动态自组织通信系统中的客户端,也可以是WebRTC模块,还可以是监听通知模块执行,或该动态自组织通信系统中独立于客户端、WebRTC模块及监听通知模块的控制模块来执行。该动态自组织通信系统可以是用于建立通信网络的设备,可以包括各种形式的设备,例如台式电脑、笔记本电脑、平板电脑、智能手机、个人电脑等。数字助理(PDA)和智能手表,具有信息处理功能、显示功能、数据存储功能、有线/无线网络功能和输入/输出接口设备(例如,显示器、触摸屏、键盘、鼠标、键盘、照相机、麦克风、扬声器等)。如图1所示,该方法包括以下步骤:
[0046] 步骤110:确定建立连接的各个客户端的流连接数。
[0047] 本发明实施例中,流连接数PC_f,指的是建立RTC通信连接的客户端之间相互进行连接,进行多媒体流交互的个数。该多媒体流可以是音视频流,也可以是文本数据流。例如,Mesh的方式连接为点对点连接,其建立该会议连接的各个客户端之间的流连接数为n*(n‑1)/2。
[0048] 其中,所述确定建立连接的各个客户端的流连接数之前,所述方法还包括:监听各个客户端接入会议的会议信息,根据各个所述客户端信息建立各个客户端之间的会议连接;所述会议信息包括各个客户端信息。
[0049] 本发明实施例中,在监听各个客户端接入会议的会议信息之前,首先需要先监听到会议事件的注册信息,所述会议事件的注册信息中包括会议ID、参会者ID及格式信息;再监听各个客户端在所述会议事件中的入会注册信息,所述入会注册信息包括各个参会的客户端的参会者ID;根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接。
[0050] 具体地,以监听通知模块为ZooKeeper集群为例,当某个用户(客户端)发起会议时,该客户端将在ZooKeeper集群中的目标路径中注册生成该会议对应的会议信息。该会议信息包括生成的当前全局唯一的会议ID以及自身的客户端信息。其中,ZooKeeper集群中的存储路径及存储的会议信息格式如表2所示。
[0051] 表2:
[0052]
[0053]
[0054] 其中,该会议信息包括发起会议的客户端对应的客户端信息,如客户端ID;还包括该客户端最近一次进入时间、是否被接管、接管当前参会者的用户ID、接管类型。其中,是否被接管表示是否为通过代理连接的形式与其它客户端连接,也即SFU或MCU,还是点对点连接也即Mesh。ZooKeeper集群在接收到该注册信息后,存储这些信息。其它客户端根据该会议事件的会议ID,可在ZooKeeper集群中的该目标路径下注册自身的客户端信息,具体包括在目标路径中添加该客户端的用户ID,并在JSON形式的字符串信息中添加该客户端对应的会议信息,包括该客户端最近一次进入时间、是否被接管、接管当前参会者的用户ID、接管类型,该客户端还可以根据已参会的客户端预先注册的自身信息,读取已参会的客户端的客户端连接要素,如SDP信息等。根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接的过程包括:当已参会的客户端通过ZooKeeper集群的注册监听机制发现“/room/会议id/user/”中的信息中,有新增的记录时,则感知到新参会者进入,从而从预设路径“/user/”获取新参会的客户端的SDP信息和ICE信息,并根据该SDP信息和ICE信息主动建立发起往新参会的客户端的PeerConection连接,从而建立RTC连接。其中,根据该表2所示,该客户端在会议事件中注册的会议信息中一般默认不被接管,因此各个客户端之间的连接默认采用Mesh的方式连接。Rtc PeerConnection(音频或者视频的调用,具有加密和带宽管理,WebRTC API专有对象,代表当前用户与特定对端的一路P2P连接)是WebRTC API规范中定义的P2P双向连接,连接的两端对应着建立WebRTC会话的客户端/客户端(Mesh方式),或者客户端/服务端(MCU/SFU方式)。传统的Mesh模式,每个RtcPeerConnection需要通过信令服务器进行SDP的offer/answer及ICE Candidate。对于多个P2P连接的情况,即使引入并行计算进行同时处理,也相对比较耗时。而通过本申请的这种方式,使得可以快速的进行RTC通信连接,提高了效率。
[0055] 步骤120:当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端。
[0056] 其中,在参会的各个客户端之间建立了RTC通信后,在之后的音视频会议过程中,会议室的所有客户端进行通信网络的动态自组织。具体通过会议室的所有客户端的流连接数是否超过预设阈值PC_u来判断,当该流连接数超过预设阈值时,则按照预设规则轮询发起流缩减协商请求。该预设规则为预设的全局统一阈值,该阈值可依据场景进行相应设置,本发明实施例不做具体限制。其中,该流缩减协商请求可以是该动态自组织通信系统中的客户端发起的,也可以是WebRTC模块中的控制单元发起的,还可以是监听通知模块发起的。在本发明一个实施例中,可以由最先在会的客户端发起的,具体过程为:
[0057] 通过监听通知机制向各所述客户端发起流缩减协商请求,并确定各所述客户端的流缩减操作的执行状态。首先,根据目标路径中记录的在会的enterTime最早那个客户端U1开始,进行负载计算,则客户端U1通过在ZooKeeper中创建流缩减协商事件的方式,依次向其他客户端发送流缩减协商请求。其中,客户端U1创建流缩减协商事件的节点路径和格式如表3所示。
[0058] 表3:
[0059]
[0060]
[0061] 其中,该流缩减协商事件中包括事件ID、预设规则(生成规则)、事件类型、当前发起方的最近一次进入时间、当前发起方的客户端ID(用户ID)、当前接收方、时间的处理阶段、期望缩减到的个数、累计已缩减的个数等信息。其中,预设规则为对各个客户端进行轮询的规则,其可以是按照在会时间从某个客户端开始依次执行的规则。
[0062] 本发明实施例中,某个客户端U2在通过ZooKeeper的事件监听机制收到流缩减协商请求并判定当前接收方时自己,则需要进行响应处理。客户端U2进行负载计算,得到负载信息,如果根据负载信息确定自身系统资源(CPU、内存、带宽)充裕,则确定可承担代理连接,则可以充当处于同一个会议的客户端U3的SFU,其中客户端U3为同处一个会议的、非U1、U2且与U2建立连接的客户端。此时,客户端U2将ZooKeeper中该流缩减协商事件中的“stage”修改为“accept”,并将客户端U3的“isMasked”修改为“true”,“maskOwner”标识修改为客户端U2,“maskType标识”修改为SFU。其余客户端ZooKeeper收到通知后,关闭与客户端U3的连接,从而完成1次流缩减操作。经过该流缩减操作前后的通信网络示意图如图4所示,从图4中可以看出,客户端U3通过客户端U2与其它客户端通信,客户端U2为其代理连接。完成该流缩减操作后,客户端U2接管客户端U3的音视频流转发,作为其SFU;其他客户端与客户端U3的双向连接断开了,只能通过客户端U2获取客户端U3的音视频流,或者通过客户端U2发送自身的音视频流给客户端U3。
[0063] 本发明实施例中,客户端U2接管客户端U3后,将会在ZooKeeper集群中更改其之前注册的客户端的连接要素信息。并优先做客户端U3的SFU,后续会按照配置的策略进行混流/并流的升降级尝试,例如:在本机CPU有40%以上的空闲利用率,且内存有1G以上的空闲,将自己生产的流与U3的流混成一路,即升级为MCU。同时,由于本机资源也是动态变化的,当本机资源变得紧张时,也允许其主动降级为SFU。此时前述的maskType字段会做相应的变动:即一开始该字段记录为SFU,升级为MCU后将该字段修改为mcu,主动降级时再修改回SFU,始终保持与实际的接管角色一致。
[0064] 其中,当所述当前客户端不可承担代理连接时,根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。具体地,若客户端U2进行负载计算,得到负载信息,如果根据负载信息确定自身系统资源紧张时,则确认其不可承担代理连接,则其不能充当任何其他处于同一个会议室任何用户的SFU,则更新stage为reject。U1收到reject请求后,继续更新更新下一个receiver,并将stage重置为request。整个过程可以是简单的单方顺序请求,多方依次响应的有限循环,即:U1请求‑>U2响应;U1请求‑>U3响应;......;U1请求‑>Uk相应,k=2、3、...,且k<=n,n为当前会议的总人数。直到U1判定流缩减满足阈值条件时,或者k等于n时,停止发送请求。
[0065] 步骤130:当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0066] 其中,在客户端U2完成本次流缩减操作后,将会在流缩减协商事件中把“accumulatedValue”加1,并更新“stage”为“next”。而客户端U1收到这个更新通知后,查看期望缩减到的个数(即expectValue)是否等于累计已缩减的个数(即accumulatedValue),如果前者仍旧大于后者,则更新下一个接收方,并将“stage”重置为request。直到客户端U1本地记录的当前连接数减去确认缩减的连接总数,小于等于预设阈值后,停止发送流缩减请求,并将状态修改为完成。
[0067] 本发明实施例中,在所述当前客户端代理目标客户端的流连接时,若所述当前客户端需要下线但目标客户端仍需在线时,在所述当前客户端下线前,重新建立目标客户端与各个客户端的流连接,并根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在当前客户端下线且下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。具体地,当客户端U2即将下线,此时客户端U3还没下线时,客户端U2无法继续接管客户端U3的音视频流,故客户端U2在离开会议前,需要通过清空客户端U3的maskOwner,并将isMasked修改为false通知其他参会人员,重新建立与客户端U3的RtcPeerConnection,并重新进行必要的流缩减协商过程。确保客户端U2下线不影响客户端U3的继续参会。
[0068] 其中,由于同一时刻只有一个用户发送这个轮询式的流缩减请求过程,且会议内所有客户端的enterTime的先后顺序都是多所有参会者一致可见的,因此,当客户端U1完成了流缩减协商过程并通过将enterTime置下一个最早进入会议的客户端,并将eventType从reorganize修改为elect时,对应的下一个客户端会根据ZooKeeper的事件监听通知机制获悉这个变动,将发送方设置为自己,依次重复流缩减协商的过程。
[0069] 本发明实施例中,当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络,通过流缩减协商操作后,所有的客户端的连接方式已经确定,参会的客户端之间可以是通过Mesh的方式,也可以通过SFU的方式,还可以是通过MCU的方式进行连接,从而实现了通信网络的动态自组织。
[0070] 本发明实施例通过确定建立连接的各个客户端的流连接数,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,其中,所述当前客户端为各个所述客户端中的任意一个客户端,所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过这样的方式,能够实现通信网络的动态自组织,可以融合Mesh的去中心化特性以及SFU中转及MCU低带宽占用特性的网络架构,降低构建基于WebRTC音视频会议系统的成本。
[0071] 图5示出了本发明实施例提供的通信网络构建装置的结构示意图。如图3所示,该装置300包括:
[0072] 确定模块310,用于确定建立连接的各个客户端的流连接数;
[0073] 流缩减模块320,用于当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;
[0074] 通信建立模块330,用于当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0075] 本发明实施例的通信网络构建装置的具体工作过程与上述方法实施例的具体流程步骤大体一致,此处不再赘述。
[0076] 本发明实施例通过确定建立连接的各个客户端的流连接数,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,其中,所述当前客户端为各个所述客户端中的任意一个客户端,所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过这样的方式,能够实现通信网络的动态自组织,可以融合Mesh的去中心化特性以及SFU中转及MCU低带宽占用特性的网络架构,降低构建基于WebRTC音视频会议系统的成本。
[0077] 图6示出了本发明实施例提供的计算机设备的结构示意图,本发明具体实施例并不对计算机设备的具体实现做限定。
[0078] 如图6所示,该计算机设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
[0079] 其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述用于计算机方法实施例中的相关步骤。
[0080] 具体地,程序410可以包括程序代码,该程序代码包括计算机可执行指令。
[0081] 处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
[0082] 存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。
[0083] 程序410具体可以被处理器402调用使计算机设备执行以下操作:
[0084] 确定建立连接的各个客户端的流连接数;
[0085] 当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;
[0086] 当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0087] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使当前客户端进行负载计算,得到所述当前客户端对应的负载信息;根据所述负载信息,确定所述当前客户端是否可承担代理连接。
[0088] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:当所述当前客户端不可承担代理连接时,根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数;或者
[0089] 在所述当前客户端代理目标客户端的流连接时,所述当前客户端下线前,重新建立目标客户端与各个客户端的流连接,并根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在当前客户端下线且下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。
[0090] 在一种可选的方式中,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:通过监听通知机制向各所述客户端发起流缩减协商请求,并确定各所述客户端的流缩减操作的执行状态。
[0091] 在一种可选的方式中,所述确定建立连接的各个客户端的流连接数之前,所述方法还包括:
[0092] 监听各个客户端接入会议的会议信息,根据各个所述客户端信息建立各个客户端之间的会议连接;所述会议信息包括各个客户端信息。
[0093] 在一种可选的方式中,所述监听各个客户端接入会议的会议信息,包括:监听会议事件的注册信息,所述会议事件的注册信息中包括会议ID、参会者ID及格式信息;监听各个客户端在所述会议事件中的入会注册信息,所述入会注册信息包括各个参会的客户端的参会者ID;根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接。
[0094] 在一种可选的方式中,所述根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接之前,所述方法还包括:获取各个客户端的连接要素注册信息,所述连接要素注册信息包括会话描述协议及所述客户端对应的建立网络连接的内网IP地址信息候选列表。
[0095] 本发明实施例通过确定建立连接的各个客户端的流连接数,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,其中,所述当前客户端为各个所述客户端中的任意一个客户端,所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过这样的方式,能够实现通信网络的动态自组织,可以融合Mesh的去中心化特性以及SFU中转及MCU低带宽占用特性的网络架构,降低构建基于WebRTC音视频会议系统的成本。
[0096] 本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在计算机设备上运行时,使得所述计算机设备执行上述任意方法实施例中的通信网络构建方法。
[0097] 可执行指令具体可以用于使得计算机设备执行以下操作:
[0098] 确定建立连接的各个客户端的流连接数;
[0099] 当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数;所述当前客户端为各个所述客户端中的任意一个客户端;所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;
[0100] 当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。
[0101] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使当前客户端进行负载计算,得到所述当前客户端对应的负载信息;根据所述负载信息,确定所述当前客户端是否可承担代理连接。
[0102] 在一种可选的方式中,所述当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:当所述当前客户端不可承担代理连接时,根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数;或者
[0103] 在所述当前客户端代理目标客户端的流连接时,所述当前客户端下线前,重新建立目标客户端与各个客户端的流连接,并根据所述预设规则向下一个客户端发起所述流缩减协商请求,以使在当前客户端下线且下一个客户端可承担代理连接时,所述下一个客户端代理目标客户端的流连接,以缩减所述流连接数。
[0104] 在一种可选的方式中,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,包括:通过监听通知机制向各所述客户端发起流缩减协商请求,并确定各所述客户端的流缩减操作的执行状态。
[0105] 在一种可选的方式中,所述确定建立连接的各个客户端的流连接数之前,所述方法还包括:
[0106] 监听各个客户端接入会议的会议信息,根据各个所述客户端信息建立各个客户端之间的会议连接;所述会议信息包括各个客户端信息。
[0107] 在一种可选的方式中,所述监听各个客户端接入会议的会议信息,包括:监听会议事件的注册信息,所述会议事件的注册信息中包括会议ID、参会者ID及格式信息;监听各个客户端在所述会议事件中的入会注册信息,所述入会注册信息包括各个参会的客户端的参会者ID;根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接。
[0108] 在一种可选的方式中,所述根据所述入会注册信息及各个客户端的连接要素信息,建立各个所述客户端之间的会议连接之前,所述方法还包括:获取各个客户端的连接要素注册信息,所述连接要素注册信息包括会话描述协议及所述客户端对应的建立网络连接的内网IP地址信息候选列表。
[0109] 本发明实施例通过确定建立连接的各个客户端的流连接数,当所述流连接数大于预设阈值时,按照预设规则轮询发起流缩减协商请求至各个客户端,以使在当前客户端可承担代理连接时,所述当前客户端代理目标客户端的流连接,以缩减所述流连接数,其中,所述当前客户端为各个所述客户端中的任意一个客户端,所述目标客户端为各个所述客户端中除所述当前客户端的任意客户端;当缩减后的所述流连接数小于等于所述预设阈值时,结束流缩减操作,以确定各个所述客户端之间的通信网络。通过这样的方式,能够实现通信网络的动态自组织,可以融合Mesh的去中心化特性以及SFU中转及MCU低带宽占用特性的网络架构,降低构建基于WebRTC音视频会议系统的成本。
[0110] 本发明实施例提供一种通信网络构建装置,用于执行上述通信网络构建方法。
[0111] 本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使计算机设备执行上述任意方法实施例中的通信网络构建方法。
[0112] 本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的通信网络构建方法。
[0113] 在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0114] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0115] 类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
[0116] 本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0117] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。