具体实施方式
通常,服务器和客户端设备之间设置有代理设备,以便利用该代理设备的缓存功能来缓解服务器压力。所说的代理设备一般是预先配置好的,客户端设备默认通过该代理设备向服务器请求数据。但是,一旦该代理设备发生故障,客户端与服务器之间的连接就会中断,客户端设备发送的数据请求就不能到达服务器,也不能收到服务器发送的响应数据。
另外,客户端设备和服务器之间、服务器和代理设备之间、以及代理设备和客户端设备之间通常采用单播协议HTTP建立HTTP连接并传递数据,客户端设备收到的是以HTTP进行单层封装的数据。但是,HTTP连接的数据传输效率较低,会导致服务器的压力较大。
为解决上述问题,本发明实施例提供一种数据传输方法,一方面由服务器指定代理设备,客户端设备通过该服务器指定的代理设备向服务器请求数据;另一方面,在服务器和代理设备之间建立比HTTP连接具有更优传输效率的连接,进行数据传输。本文中将所述比HTTP连接具有更优传输效率的连接称为优化连接,该优化连接可以是WebSocket连接或者多播连接。从而,一方面,在当前的代理设备故障时,服务器可以再指定其它的代理设备,客户端可以通过其它代理设备与服务器进行数据交互以获取请求的数据;另一方面,优化连接例如WebSocket连接或者多播连接比HTTP连接具有更高的数据传输效率,可以减轻服务器的压力。本发明实施例还提供相应的设备及***。以下分别进行详细说明。
请参考图1,本发明实施例提供一种数据传输方法,包括:
110、服务器获取客户端设备支持的嵌入协议。
本发明实施例在服务器和代理设备之间,采用传输效率比HTTP协议更优的、客户端设备支持的嵌入协议,建立优化连接进行数据传输,所说的嵌入协议可以是WebSocket协议或者多播协议。代理设备收到的服务器发送的数据将是采用该嵌入协议封装的数据,代理设备需要采用HTTP协议对收到的数据进行外层封装后,才能通过HTTP连接发送给客户端设备。最终,客户端设备收到的数据将是以所说的嵌入协议作为内层封装协议、以HTTP协议作为外层封装协议进行双层封装的数据。这就要求客户端设备要具备解析采用双层协议封装的数据的能力,本文中把客户端设备的这种能力称为客户端设备的隧道能力。服务器与代理设备建立优化连接之前,可以获取客户端设备的隧道能力,以便采用客户端支持的嵌入协议与代理设备建立优化连接。
客户端设备在发送数据请求给服务器之前,可以先发送隧道协商请求给服务器,将客户端设备的隧道能力携带在隧道协商请求中告知服务器。该隧道协商请求中包括:客户端设备支持的嵌入协议的标识,客户端设备请求的数据内容例如请求收看的节目的标识;还可以包括:客户端设备的标识。
在直播场景中,所说的客户端设备请求收看的节目的标识可以是频道号或者频率(frequency)等任何能够标识请求收看的节目的信息。所说的嵌入协议的标识可以是嵌入协议的名称、代号或者ID(IDentity)等任何能够标识该嵌入协议的信息。所说的嵌入协议可以是WebSocket协议或者多播协议,多播协议具体可以是实时流传输协议(Real Time Streaming Protocol,RTSP)或者实时传送协议(Real-time Transport Protocol,RTP)。所说客户端设备的标识是任何可以标识客户端的信息,例如客户端的网际协议(Internet Protocol,IP)地址。
服务器通过接收客户端设备发送的隧道协商请求,来识别客户端设备的隧道能力。如果客户端设备支持的嵌入协议有两种或者两种以上,则服务器可以从其中选择一种,作为后续与代理设备建立优化连接采用的协议。如果客户端设备支持的嵌入协议只有一种,则服务器直接选择该嵌入协议,作为后续与代理设备建立优化连接采用的协议。如果服务器无法识别客户端设备的隧道能力,即,不能识别客户端设备支持的嵌入协议的标识,则可以回应错误响应给客户端设备。
120、服务器指定一个代理设备,采用所述客户端设备支持的嵌入协议,建立连接到指定的代理设备的优化连接。
服务器可以按照策略从当前可用的代理设备中指定一个代理设备,与指定的代理设备建立优化连接。所说的策略可以是:比较各个可用的代理设备的负担,指定其中负担较小的代理设备,例如比较各个代理设备连接的客户端设备的数量,指定其中连接的客户端设备较少的代理设备;还可以是比较代理设备相对于服务器的距离,例如跳数(hop count),与一个标准值的差值,指定其中差值最小的代理设备;或者也可以比较各个可用的代理设备的指数,该指数根据代理设备的负担以及相对于服务器的距离加权得到,指定其中指数最大或最小的代理设备。
服务器指定代理设备之后,发送隧道指定消息给指定的代理设备。该隧道指定消息中,包括客户端设备支持的嵌入协议的标识。如果服务器在客户端设备支持的嵌入协议选择了一种,则隧道指定消息中只包括该被选择嵌入协议的标识。该隧道指定消息中还可以包括客户端设备请求收看的节目的标识。该隧道指定消息中还可以包括客户端设备的标识,例如客户端设备的IP地址,客户端设备的IP地址可以从隧道协商请求中获得。若代理设备支持隧道指定消息中的至少一种嵌入协议,则采用隧道指定消息中有的并且其支持的嵌入协议嵌入协议与服务器建立优化连接,如果隧道指定消息中有的并且其支持的嵌入协议多于一种,则选择其中一种嵌入协议与服务器建立优化连接。举例来说,该优化连接可以是:WebSocket连接,或者RTSP连接,或者RTP连接。代理设备可以发送隧道指定成功响应给服务器,以表示优化连接已建立成功。
在优化连接建立完成后,服务器建立并保存该优化连接的标识与客户端设备请求收看的节目的标识之间的第一对应关系。如果第一对应关系已存在,则根据该优化连接的标识与客户端设备请求收看的节目的标识更新第一对应关系,即如果该优化连接的标识与客户端设备请求收看的节目的标识的对应关系不在第一对应关系中,则将其加入第一对应关系中。该第一对应关系可以以对应关系表的形式保存,称为第一对应关系表,如表1所示,其中,可以用数字编号例如101作为优化连接的标识,可以用频道号例如中央一套(CCTV1)作为客户端设备请求收看的节目的标识,也可以用频率例如CCTV1对应的频率57.75MHz作为请求收看的节目的标识。
如果代理设备收到的隧道指定消息中还包括客户端设备请求收看的节目的标识,则在优化连接建立完成后,代理设备中也可以建立并保存该优化连接的标识与该客户端设备请求收看的节目的标识之间的对应关系,称为第二对应关系,具体也可以是对应关系表的形式,如图1所示。如果第二对应关系已存在,则根据该优化连接的标识与隧道指定消息中包括的客户端设备请求收看的节目的标识更新第二对应关系,即如果该优化连接的标识与客户端设备请求收看的节目的标识的对应关系不在第二对应关系中,则将其加入第二对应关系中。
表1
通常,代理设备与服务器之间的优化连接与客户端设备请求收看的节目是一一对应的关系。服务器在收到携带节目标识的隧道协商请求后,可以查询保存的第一对应关系中是否已经存在该节目的优化连接,如果不存在,说明尚未建立该节目的优化连接,则服务器与代理设备才建立该节目的优化连接;如果已经存在该节目的优化连接,服务器与代理设备可以不再建立新的优化连接,而是采用已建立的该节目的优化连接。服务器也可以不进行查询,而是将节目的标识携带在隧道指定消息中发送给代理设备,由代理设备查询保存的第二对应关系中是否已经存在该节目的优化连接,如果不存在,代理设备与服务器才建立该节目的优化连接;如果已经存在,代理设备与服务器可以不再建立新的优化连接,而是利用已建立的该节目的优化连接。
其中,如果服务器或者代理设备查询发现已存在与客户端设备请求收看的节目的标识对应的优化连接,可以进一步判断该优化连接的负担是否过重,例如承载的数据流量是否达到阈值,如果达到,代理设备与服务器可以另外再建一条对应于所说的节目的优化连接,以分担部分数据流量。从而,所说的第一或第二对应关系中,一个节目可以对应于一个以上优化连接。例如表1中,节目CCTV6就对应有两个优化连接103和104。但是,每个优化连接只能对应于一个节目。
服务器或者代理设备还可以把客户端设备的标识,例如IP地址,保存在自己建立的第一或第二对应关系中,如表2所示。客户端设备的IP地址可以从隧道协商请求获得,例如从隧道协商请求的源地址字段获得。这样,前文所说的进一步判断优化连接的负担是否过重具体也可以是,判断优化连接对应的客户端设备的数量是否达到阈值。
表2
如果服务器指定的代理设备不支持服务器选择的嵌入协议,该代理设备发送错误响应给服务器。服务器收到错误响应后可以重新指定一个新的代理设备,与该新的代理设备建立优化连接;服务器收到错误响应后也可以拒绝客户端的隧道协商请求,即,发送隧道协商失败消息给客户端设备。
服务器与指定的代理设备成功建立起优化连接后,服务器将该指定的代理设备的标识发送给客户端设备,以指示客户端设备将用于请求节目数据的数据请求发送给该指定的代理设备,通过该代理设备向服务器请求数据。服务器还可以将优化连接的标识发送给客户端设备。一种实施方式中,服务器可以将指定的代理设备的标识携带在隧道协商成功响应中发送给给客户端设备。客户端设备收到代理设备的标识后,就可以向该代理设备发送数据请求,以请求节目数据。
130、服务器接收代理设备转发的,来自于客户端设备的数据请求,生成基于所述嵌入协议的响应数据通过所述优化连接发送给所述代理设备,以便所述代理设备采用HTTP协议将所述响应数据进行外层封装后发送给所述客户端设备。
该数据请求为HTTP请求,代理设备根据该数据请求建立与客户端设备间的HTTP连接。
客户端设备获得服务器发送的代理设备的标识后,即可发送用于请求节目数据的数据请求给代理设备。该数据请求中包括客户端设备请求收看的节目的标识和客户端的标识。在服务器将优化连接的标识发送给客户端设备的情况下,该数据请求中也可以包括优化连接的标识和客户端的标识,或者包括客户端设备请求收看的节目的标识、优化连接的标识和客户端的标识。
代理设备上建立第三对应关系。第三对应关系也可以以对应关系表的形式保存,称为第三对应关系表,如表3所示。第三对应关系中至少保存优化连接的标识和客户端设备的标识的对应关系。代理设备可以根据隧道指定消息或者数据请求建立第三对应关系。例如,在隧道指定消息中包括客户端设备的标识的情况下,代理设备在接收到服务器发送的隧道指定消息后,根据隧道指定消息中的客户端设备的标识以及根据该隧道指定消息建立或利用的优化连接的标识建立第三对应关系。又如,在数据请求中包括优化连接的标识的情况下,代理设备在接收到数据请求后,根据数据请求中的客户端设备的标识以及优化连接的标识建立第三对应关系。如果第三对应关系已存在,则根据该优化连接的标识与客户端设备的标识更新第三对应关系,即如果该优化连接的标识与客户端设备的标识的对应关系不在第三对应关系中,则将其加入第三对应关系中。
表3
第三对应关系中也可以包括节目的标识,以第三对应关系表的形式保存的第三对应关系如表4所示。代理设备可以根据隧道指定消息或者数据请求建立第三对应关系,或者根据隧道指定消息和数据请求建立包括节目的标识的第三对应关系。例如,在隧道指定消息中包括客户端设备请求收看的节目的标识和客户端设备的标识的情况下,代理设备在接收到服务器发送的隧道指定消息后,根据隧道指定消息中的客户端设备请求收看的节目的标识、客户端设备的标识以及根据该隧道指定消息建立或利用的优化连接的标识建立第三对应关系。又如,在数据请求中包括客户端设备请求收看的节目的标识、优化连接的标识和客户端的标识的情况下,代理设备在接收到数据请求后,根据数据请求中的节目的标识、优化连接的标识和客户端的标识建立第三对应关系。此外,代理设备也可以从隧道指定消息获取节目的标识和优化连接的标识的对应关系,从数据请求获取节目的标识和客户端设备的标识的对应关系或者优化连接的标识和客户端设备的标识的对应关系,从而建立第三对应关系。也可以从隧道指定消息获取客户端设备的标识和优化连接的标识的对应关系,从数据请求获取节目的标识和客户端设备的标识的对应关系,从而建立第三对应关系。如果所述第二对应关系和第三对应关系都是根据隧道指定消息建立的,则所述第二对应关系和第三对应关系的内容可以相同,或者可以是同一对应关系。
表4
代理设备收到客户端设备发送的数据请求后,可以直接将数据请求转发给服务器;如果代理设备具备汇聚功能,也可以将多个客户端设备发送的第二数据请求,汇聚成一个第一数据请求发送给服务器。所说的汇聚功能可以是实时流传输协议定义的汇聚(multiplexing)功能,具体可以是将多个请求收看不同节目的第二数据请求打包进一个第一数据请求中,或者是将多个请求收看相同节目的第二数据请求抑制成一个第一数据请求。所说的抑制是指只保留一个第二数据请求,忽略其它请求收看收看相同节目的第二数据请求,将该保留的第二数据请求作为第一数据请求。
服务器根据收到的数据请求中包括的节目的标识生成该节目的响应数据,并根据第一对应关系获取该节目对应的优化连接,将该节目的响应数据通过该节目对应的优化连接发送给代理设备。如果服务器收到的数据请求中包括多个节目的标识,服务器将生成多个响应数据,即,针对每个节目生成一个响应数据;然后服务器查询第一对应关系获取每个节目的优化连接,将不同节目的响应数据通过各自对应的优化连接发送给代理设备。
代理设备收到服务器通过优化连接发送的响应数据后,需要采用HTTP协议对该响应数据进行外层封装后,才能通过HTTP连接将封装后的响应数据发送给客户端设备。具体的,代理设备收到服务器通过优化连接例如101发送的响应数据后,先采用HTTP协议对该响应数据进行外层封装,再查询第第三对应关系得到该优化连接101对应的客户端设备的标识,将该封装后的响应数据发送给查询得到的客户端设备;如果查询得知对应的客户端设备有多个,则将该封装后的响应数据按照对应的客户端设备的数量复制成多份,分别发送给对应的多个客户端设备。
客户端设备收到的数据将是以嵌入协议作为内层封装协议、以HTTP协议作为外层封装协议进行双层封装的数据。其中,所说内层嵌入协议是客户端支持的嵌入协议。从而,客户端设备可以解析收到的数据,正常收看节目。
综上,本发明实例提供的数据传输方法,一方面,代理设备是由服务器指定的,在指定的代理设备故障时,服务器可以更改指定的代理设备,与更改后的代理设备建立优化连接进而与客户端进行数据交互,从而,保障客户端与服务器之间的数据传输不至于中断;另一方面,在服务器和代理设备之间采用客户端支持的嵌入协议建立起优化连接,通过该优化连接传输客户端设备通过代理设备发送的数据请求和服务器返回的响应数据,相对于现有技术中的HTTP连接传输数据,可以具有更优的传输效率,因而可以减轻服务器的压力,特别是直播场景下并发用户请求对服务器造成的压力。另外,如果代理设备具备汇聚功能,通过将多个数据请求汇聚成一个,可以进一步减少代理设备和服务器之间的流量带宽,节约资源,减轻服务器的负担。
本发明实施例中,在步骤130之后还可以包括服务器与代理设备断开优化连接的步骤。
如果有客户端设备停止收看节目,该客户端设备可以向代理设备发送断开请求以告知代理设备已经停止收看节目,该断开请求中包括该客户端设备停止收看的节目的标识以及客户端设备的标识。客户端设备也可以在停止收看节目时不发送断开请求告知代理设备,则代理设备需要通过预设的机制,例如超时机制,来感知客户端设备是否已经停止收看节目。代理设备得知客户端设备停止收看节目后,将停止收看节目的客户端设备的标识从第三对应关系中删除。
如果代理设备的第二对应关系中保存有客户端标识,也需要将停止收看节目的客户端设备的标识从所说的第二对应关系中删除。服务器建立的第一对应关系中如果保存有客户端标识,则代理设备在更新自己保存的第二对应关系之后还要可以知服务器,以便服务器更新自己保存的第一对应关系,将停止收看节目的客户端设备的标识从所说的第一对应关系中删除。
当第三对应关系中某个优化连接对应的所有客户端设备都停止收看对应的节目后,可以将该优化连接拆除。该拆除连接的操作可以由代理设备发起。服务器建立的第一对应关系如果保存有客户端标识,该拆除连接的操作也可以由服务器发起。
通过将不使用的优化连接及时拆除,可以释放资源,进一步减轻服务器的负担。
请参考图2,本发明实施例提供一种数据传输方法,包括:
210、代理设备将收到的客户端设备发送的数据请求转发给服务器。
本实施例中,代理设备和服务器预先已建立好优化连接,该优化连接是采用客户端设备支持的嵌入协议建立的,该嵌入协议是比HTTP具有更优传输效率的协议,具体可以WebSocket协议或者多播协议。代理设备和服务器建立优化连接的步骤可以包括:
a、代理设备接收所述服务器发送的隧道指定消息,所述隧道指定消息中携带所述客户端设备支持的嵌入协议和所述客户端设备请求收看的节目的标识。
b、采用所述客户端设备支持的嵌入协议与所述服务器建立优化连接。
举例来说,该优化连接可以是:WebSocket连接,或者RTSP连接,或者RTP连接。代理设备可以发送隧道指定成功响应给服务器,以表示优化连接已建立成功。优化连接已建立成功后,代理设备可以建立并保存第二对应关系,所述第二对应关系中至少包括:所述客户端设备请求收看的节目和所述优化连接的对应关系。如果第二对应关系已存在,则根据该优化连接的标识与隧道指定消息中包括的客户端设备请求收看的节目的标识更新第二对应关系,即如果该优化连接的标识与客户端设备请求收看的节目的标识的对应关系不在第二对应关系中,则将其加入第二对应关系中。第二对应关系具体可以是对应关系表的形式,如图1所示。
代理设备收到隧道指定消息后,与服务器建立优化连接之前,可以查询第二对应关系中是否已经存在所述节目的优化连接,如果不存在,说明尚未建立该节目的优化连接,则代理设备与服务器才建立该节目的优化连接。如果查询发现已经存在所述节目的优化连接,则代理设备与服务器可以不再建立新的优化连接,而是利用已建立的该节目的优化连接。
优化连接建立成功后,服务器会将该代理设备的标识发送给客户端设备,以指示客户端设备将用于请求节目数据的数据请求发送给该指定的代理设备。代理设备收到客户端设备发送的数据请求后,可以直接将数据请求转发给服务器;如果代理设备具备汇聚功能,也可以将多个客户端设备发送的第二数据请求,汇聚成一个第一数据请求发送给服务器。所说的汇聚功能可以是实时流传输协议定义的汇聚(multiplexing)功能,具体可以是将多个请求收看不同节目的第二数据请求打包进一个第一数据请求中,或者是将多个请求收看相同节目的第二数据请求抑制成一个第一数据请求。所说的抑制是指只保留一个第二数据请求,忽略其它请求收看收看相同节目的第二数据请求,将该保留的第二数据请求作为第一数据请求。
代理设备收到数据请求转发给所述服务器之前,还可以建立并保存第三对应关系。第三对应关系也可以以对应关系表的形式保存,称为第三对应关系表,如表3所示。第三对应关系中至少保存优化连接的标识和客户端设备的标识的对应关系。如果第三对应关系已存在,则根据该优化连接的标识与客户端设备的标识更新第三对应关系,即如果该优化连接的标识与客户端设备的标识的对应关系不在第三对应关系中,则将其加入第三对应关系中。
220、所述代理设备接收所述服务器通过已建立的优化连接发送的响应数据,所述优化连接是所述代理设备与所述服务器采用所述客户端设备支持的嵌入协议建立的,所述响应数据是基于所述嵌入协议的响应数据。
代理设备接收服务器发送的响应数据。该响应数据是服务器根据数据请求中包括的节目的标识生成的,针对每个节目生成一个响应数据。服务器生成响应数据后,通过查询第一对应关系获取每个节目的优化连接,将不同节目的响应数据通过各自对应的优化连接发送给代理设备。所说的优化连接是代理设备与服务器采用客户端设备支持的嵌入协议建立的。所说的响应数据则是基于所述嵌入协议的响应数据,即,采用所述嵌入协议的响应数据。
230、所述代理设备采用超文本传输协议将所述响应数据进行外层封装后发送给所述客户端设备。
代理设备收到服务器通过优化连接发送的响应数据后,需要采用HTTP协议对该响应数据进行外层封装后,才能通过HTTP连接将封装后的响应数据发送给客户端设备。具体的,代理设备收到服务器通过优化连接发送的响应数据后,可以从保存的第三对应关系中查询所述优化连接对应的客户端设备,将采用HTTP进行了外层封装的响应数据发送给查询到的客户端设备。
客户端设备收到的数据将是以嵌入协议作为内层封装协议、以HTTP协议作为外层封装协议进行双层封装的数据。其中,所说内层嵌入协议是客户端支持的嵌入协议。从而,客户端设备可以解析收到的数据,正常收看节目。
综上,本发明实例提供的数据传输方法,在服务器和代理设备之间采用客户端支持的嵌入协议建立起优化连接,通过该优化连接传输客户端设备通过代理设备发送的数据请求和服务器返回的响应数据,相对于现有技术中的HTTP连接传输数据,可以具有更优的传输效率,因而可以减轻服务器的压力,特别是直播场景下并发用户请求对服务器造成的压力。另外,如果代理设备具备汇聚功能,通过将多个数据请求汇聚成一个,可以进一步减少代理设备和服务器之间的流量带宽,节约资源,减轻服务器的负担。
请参考图3所示的应用场景例,涉及的设备包括三个客户端设备301、302和303,一个无隧道功能的代理设备304,一个具有隧道封装功能的代理设备305和服务器306。客户端设备301、302和303支持相同的嵌入协议例如RTP,可以是三个分别装有某个嵌入协议插件的IE(Internet Explorer)客户端设备。代理设备304无隧道封装功能,仅仅作为普通代理,提供转发的功能。代理设备305具有隧道封装功能,还具有汇聚客户端设备发送的数据请求的功能,可以将多个客户端设备发送的数据请求汇聚成一个。服务器306可以是web服务器。
本应用场景例包括:
客户端设备301和302均向服务器306发起隧道协商请求,每个客户端设备发送的隧道协商请求中携带了该客户端设备支持的嵌入协议的标识和该客户端设备请求收看的节目的标识,还可以包括该客户端设备的标识。隧道协商请求经过代理设备304,转发给服务器306。服务器306收到隧道协商请求后,识别客户端设备支持的嵌入协议。如果服务器306不能识别客户端设备301和302支持的嵌入协议,则向客户端设备301和302发出错误响应,指示客户端设备隧道协商不成功。如果服务器306能够支持识别出的嵌入协议,从中选择一种嵌入协议,以便和指定的代理设备采用该选择的嵌入协议建立优化连接。
服务器306选择完嵌入协议后,根据预定策略指定具有隧道功能的代理设备305,发送隧道指定消息给代理设备305。隧道指定消息中包括所选择的协议的标识、请求收看的节目的标识,还可以包括客户端设备的标识。代理设备305接收到隧道指定消息后,先判断是否支持服务器选择的嵌入协议,如果不支持,代理设备305向服务器306发送错误响应,服务器306收到错误响应后,也会向客户端设备301和302发出错误响应,指示隧道协商不成功;如果代理设备305支持服务器选择的嵌入协议,代理设备305与服务器306采用该嵌入协议建立优化连接。然后服务器和代理设备各自建立并保存该优化连接与客户端设备301与302请求收看的节目的对应关系,服务器建立的该对应关系称为第一对应关系,代理设备建立的该对应关系称为第二对应关系。代理设备305向服务器306发送隧道指定成功响应,表明代理设备305和服务器306之间的隧道协商和建立成功。
服务器306收到代理设备305发送的隧道指定成功响应后,将代理设备305的标识发送给客户端设备301和302,以通知客户端设备301和302将数据请求发·送个代理设备305。其中,服务器可以将代理设备305的标识携带在隧道协商成功响应发送给客户端设备301和302。至此,隧道协商成功。
客户端设备301和302并发向代理设备305发送数据请求,例如数据传送(data transfer)请求。代理设备305将收到的多个数据请求汇聚成一个,例如汇聚的数据请求(bulk data req),转发给服务器。代理设备305还建立起第三对应关系,第三对应关系中包括客户端设备和优化连接的对应关系。服务器106对代理设备发送的数据请求进行响应,生成每个节目的响应数据(responsedata),将每个节目的响应数据通过各个节目的优化连接给代理设备305。代理设备305用HTTP对响应数据进行外层封装后,从第三对应关系中查询该优化连接对应的客户端设备为301和302,然后将封装后的响应数据复制为2份,分别发送给客户端设备301和302。
如果新的客户端设备303向服务器306发送隧道协商请求。服务器306收到隧道协商请求后,也选择了相同的嵌入协议,并指定了代理设备305,然后向代理设备305发送隧道指定消息。代理设备305收到隧道指定消息后,从第二对应关系发现客户端设备303请求收看的节目对应的优化连接已经建立,则不必再建立新的组播连接,向服务器306回应连接通道更新消息。服务器306收到该连接通道更新消息后给客户端设备303发送隧道协商成功响应。客户端设备303收到隧道协商成功响应后,向代理设备305发送数据请求,以获取请求收看的节目的数据。代理设备更新第三对应关系,加入客户端设备303的标识。
假定客户端设备301停止收看节目,则发送断开请求(disconnection req)给代理设备305,该断开请求中携带节目的标识和客户端设备的标识等信息;当然,客户端设备301停止收看节目时也可以不通知代理设备305,此时代理设备305通过预设的机制(比如说超时等)感知客户端设备301是否已经停止收看节目。代理设备305获知客户端设备301已经停止收看节目后,更新自己保存的第三对应关系,同时可以向服务器306发出一个连接通道更新消息,通知服务器该客户端设备已经离线,以便服务器要对该客户端设备做些别的业务,比如统计等。服务器306收到连接通道更新消息后,向代理设备305回应连接通道更新响应。如果客户端设备301发出过断开请求,那么代理设备305在更新自己保存的第三对应关系后,向客户端设备301发出断开响应(disconnection ack)。
当代理设备305保存的第三对应关系中某个优化连接对应的客户端设备全部停止收看对应的节目时,该优化连接需要进行拆除,以释放资源。该拆除操作可以由代理设备305发起,也可以由服务器306发起。
请参考图4,本发明实施例提供一种服务器,包括:
获取模块410,用于获取客户端设备支持的嵌入协议;
连接建立模块420,用于指定一个代理设备,采用所述客户端设备支持的嵌入协议,建立连接到所述代理设备的优化连接;
接收模块430,用于接收所述代理设备转发的,来自于所述客户端设备的数据请求;
响应模块440,用于生成基于所述嵌入协议的响应数据,将所述响应数据通过所述优化连接发送给所述代理设备,以便所述代理设备采用超文本传输协议将所述响应数据进行外层封装后发送给所述客户端设备。
进一步的,所述获取模块410,具体可以用于接收所述客户端设备发送的隧道协商请求,所述隧道协商请求中包括客户端设备支持的嵌入协议的标识与客户端设备请求收看的节目的标识,所述嵌入协议包括WebSocket协议和/或多播协议。
更进一步的,服务器还可以包括:关系建立模块,用于在所述连接建立模块成功建立起连接到所述代理设备的优化连接之后,建立并保存第一对应关系,所述第一对应关系中至少包括:客户端设备请求收看的节目和所述优化连接的对应关系。
再进一步的,所述响应模块440,具体可以用于根据所述数据请求中包括的节目的标识生成所述节目的响应数据,根据所述第一对应关系获取所述节目对应的优化连接,将所述节目的响应数据通过所述节目对应的优化连接发送给所述代理设备。
又进一步的,服务器还可以包括:查询模块,用于查询所述第一对应关系中是否已经存在所述节目的优化连接;若不存在,则指示所述连接建立模块420建立连接到所述代理设备的优化连接;若已经存在,则确定采用所述已经建立的优化连接。
还进一步的,所述连接建立模块420,具体用于发送隧道指定消息给所述代理设备,所述隧道指定消息中携带所述客户端设备支持的嵌入协议,以便采用所述嵌入协议建立连接到所述代理设备的优化连接,在所述优化连接建立成功后,服务器将所述代理设备的标识发送给所述客户端设备,以指示所述客户端设备将用于请求节目数据的数据请求发送给所述代理设备。
所说的服务器具体可以是计算机,包括:中央处理器(Central ProcessingUnit,CPU)、存储器、外部连接装置等。
本发明实施例提供的服务器,一方面,在指定的代理设备故障时,服务器可以更改指定的代理设备,与更改后的代理设备建立优化连接进而与客户端进行数据交互,从而,保障客户端与服务器之间的数据传输不至于中断;另一方面,可以和代理设备采用客户端支持的嵌入协议建立起优化连接,通过该优化连接传输客户端设备通过代理设备发送的数据请求和服务器返回的响应数据,相对于现有技术中的HTTP连接传输数据,可以具有更优的传输效率,因而可以减轻服务器的压力,特别是直播场景下并发用户请求对服务器造成的压力。
请参考图5,本发明实施例提供一种代理设备,该代理设备可以是一服务器,包括:
请求转发模块510,用于将收到的客户端设备发送的数据请求转发给服务器;
数据接收模块520,用于接收所述服务器通过已建立的优化连接发送的响应数据,所述优化连接是所述代理设备与所述服务器采用所述客户端设备支持的嵌入协议建立的,所述响应数据是基于所述嵌入协议的响应数据;
数据发送模块530,用于采用超文本传输协议将所述响应数据进行外层封装后发送给所述客户端设备。
进一步的,代理设备还可以包括:
连接建立模块,用于接收所述服务器发送的隧道指定消息,所述隧道指定消息中携带所述客户端设备支持的嵌入协议的标识和所述客户端设备请求收看的节目的标识,采用所述客户端设备支持的嵌入协议与所述服务器建立优化连接。
关系建立模块,用于在所述优化连接建立成功后,根据所述优化连接和所述隧道指定消息更新第二对应关系,所述第二对应关系中至少包括:所述客户端设备请求收看的节目和所述优化连接的对应关系。
更进一步的,代理设备还可以包括:
查询模块,用于查询所述第二对应关系中是否已经存在所述节目对应的优化连接;若不存在,则指示所述连接建立模块采用所述客户端设备支持的嵌入协议与所述服务器建立优化连接;若已经存在,则确定采用所述已经存在的优化连接。
再进一步的,所述关系建立模块,还可以用于在所述请求转发模块610将收到的客户端设备发送的数据请求转发给服务器之前,建立并保存第三对应关系,所述第三对应关系中至少包括:客户端设备与优化连接的对应关系。
还进一步的,所述数据发送模块530,具体可以用于从所述第三对应关系中查询所述优化连接对应的客户端设备;将采用超文本传输协议进行了外层封装的所述响应数据发送给所述查询到的客户端设备。
所说的代理设备具体可以是计算机,包括:中央处理器(Central ProcessingUnit,CPU)、存储器、外部连接装置等。
本发明实施例提供的代理设备,可以和服务器采用客户端支持的嵌入协议建立起优化连接,通过该优化连接传输客户端设备通过代理设备发送的数据请求和服务器返回的响应数据,相对于现有技术中的HTTP连接传输数据,可以具有更优的传输效率,因而可以减轻服务器的压力,特别是直播场景下并发用户请求对服务器造成的压力。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过硬件来完成,也可以通过程序指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机读取存储器、磁盘或光盘等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。