直播业务中数据连接重启方法、数据处理方法和装置

文档序号:1398631 发布日期:2020-03-03 浏览:9次 >En<

阅读说明:本技术 直播业务中数据连接重启方法、数据处理方法和装置 (Data connection restarting method, data processing method and device in live broadcast service ) 是由 刘廷伟 闵庆欢 朱照远 于 2018-08-24 设计创作,主要内容包括:本发明公开了一种直播业务中数据连接重启方法、数据处理方法和装置。其中,该方法包括:存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。本发明解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。(The invention discloses a data connection restarting method, a data processing method and a data processing device in a live broadcast service. Wherein, the method comprises the following steps: storing data of a process to be migrated; stopping receiving the data packet sent by the plug flow terminal in the kernel protocol stack, and executing process restart; and migrating the data of the process to be migrated to the target process, and recovering the data connection. The invention solves the technical problem of low execution efficiency caused by that the related technology can realize the in-plan restart under the condition that the live stream is not interrupted only by modifying a user layer protocol stack through an upper layer service in the process of solving the problem of live stream interruption.)

直播业务中数据连接重启方法、数据处理方法和装置

技术领域

本发明涉及互联网领域,具体而言,涉及一种直播业务中数据连接重启方法、数据处理方法和装置。

背景技术

内容分发网络(Content Delivery Network,简称CDN)上直播推流业务已经非常庞大,而且直播业务对于断流重推非常敏感,一旦发生计划内或者计划外的软件重启,将会导致该服务器上的所有直播流断流。

相关技术中在解决上述问题的过程中,将协议栈移植到用户态,通过在用户态进程中记录协议栈信息,从而实现直播流不断流的情况下,计划内进行重启。

但是相关技术中也存在相关问题,其中,现有技术是在用户层协议栈实现的,需要单独适配协议栈,并在适配后的协议栈上进行移植,由于用户层协议栈没有统一的接口和标准,需要上层业务修改后才能实现直播流不断流的情况下,计划内进行重启。

针对上述由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种直播业务中数据连接重启方法、数据处理方法和装置,以至少解决由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

根据本发明实施例的一个方面,提供了一种直播业务中数据连接重启方法,包括:存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

可选的,存储待迁移进程的数据包括:在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据。

可选的,将待迁移进程的数据迁移至目标进程包括:读取待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至目标进程。

可选的,存储待迁移进程的数据包括:在会话信息位于网络端的情况下,在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据。

进一步地,可选的,将待迁移进程的数据迁移至目标进程包括:第二主机读取第一主机的待迁移进程的内核协议栈状态和内容数据,并将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程。

可选的,在内核协议栈中停止接收推流终端发送的数据包包括:停止接收推流终端发送的数据包,并丢弃在停止期间推流终端发送的数据包。

可选的,在将待迁移进程的数据迁移至目标进程之后,该方法还包括:重新接收进程重启时丢弃的推流终端发送的数据包,恢复数据连接。

根据本发明实施例的一方面,还提供了另一种直播业务中数据连接重启方法,包括:在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;从会话信息中读取待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

根据本发明实施例的一方面,还提供了又一种直播业务中数据连接重启方法,包括:在会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

根据本发明实施例的一方面,还提供了再一种数据处理方法,包括:存储待迁移进程的数据;在内核协议栈中停止接收发送方发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

根据本发明实施例的另一方面,还提供了一种直播业务中数据连接重启装置,包括:存储模块,用于存储待迁移进程的数据;重启模块,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;数据恢复模块,用于将待迁移进程的数据迁移至目标进程,恢复数据连接。

可选的,存储模块包括:第一存储单元,用于在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据。

可选的,数据恢复模块包括:读取单元,用于读取待迁移进程的内核协议栈状态和内容数据;更新单元,用于将待迁移进程的内核协议栈状态和内容数据更新至目标进程。

可选的,存储模块包括:第二存储单元,用于在会话信息位于网络端的情况下,在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据。

进一步地,可选的,数据恢复模块包括:数据恢复单元,用于控制第二主机读取第一主机的待迁移进程的内核协议栈状态和内容数据,并将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程。

可选的,重启模块包括:丢弃单元,用于停止接收推流终端发送的数据包,并丢弃在停止期间推流终端发送的数据包。

可选的,该装置还包括:接收模块,用于在将待迁移进程的数据迁移至目标进程之后,重新接收进程重启时丢弃的推流终端发送的数据包,恢复数据连接。

根据本发明实施例的另一方面,还提供了另一种直播业务中数据连接重启装置,包括:存储模块,用于在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;重启模块,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;读取模块,用于从会话信息中读取待迁移进程的内核协议栈状态和内容数据;更新模块,用于将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

根据本发明实施例的另一方面,还提供了又一种直播业务中数据连接重启装置,包括:存储模块,用于在会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;重启模块,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;更新模块,用于在第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据的情况下,将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:存储模块,用于存储待迁移进程的数据;重启模块,用于在内核协议栈中停止接收发送方发送的数据包,执行进程重启;数据迁移模块,用于将待迁移进程的数据迁移至目标进程,恢复数据连接。根据本发明实施例的又一方面,还提供了一种存储介质,包括:存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行:存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种直播业务中数据连接重启方法的计算机终端的硬件结构框图;

图2是根据本发明实施例一的直播业务中数据连接重启方法的流程图;

图3是根据本发明实施例一的一种直播业务中数据连接重启方法的流程示意图;

图4是根据本发明实施例一的直播业务中数据连接重启方法中单机内热修复的流程示意图;

图5是根据本发明实施例一的直播业务中数据连接重启方法中跨主机热修复的流程示意图;

图6是根据本发明实施例二的直播业务中数据连接重启方法的流程示意图;

图7是根据本发明实施例三的直播业务中数据连接重启方法的流程示意图;

图8是根据本发明实施例四的直播业务中数据连接重启装置的结构图;

图9是根据本发明实施例五的直播业务中数据连接重启装置的结构图;

图10是根据本发明实施例六的直播业务中数据连接重启装置的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请涉及的技术名词:

内容分发网络:Content Delivery Network,简称CDN。

实施例1

根据本发明实施例,还提供了一种直播业务中数据连接重启方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种直播业务中数据连接重启方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的直播业务中数据连接重启方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的直播业务中数据连接重启方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,本申请提供了如图2所示的直播业务中数据连接重启方法。图2是根据本发明实施例一的直播业务中数据连接重启方法的流程图。

步骤S202,存储待迁移进程的数据;

本申请上述步骤S202中,本申请实施例提供的直播业务中数据连接重启方法可以适用于基于CDN的数据直播业务中,例如,基于CDN网络技术的互联网实况直播或转播比赛,节目,会议等事件,其中,在执行数据连接热修复的过程中,首先需要对待迁移进程的内核协议栈状态和内容数据进行存储,区别于现有技术,本申请利用会话信息,即,会话session(后续简称:session)存储介质的多样性实现单机内或跨主机,甚至跨机房的数据连接迁移,即,在session中存储待迁移进程的数据,且在本申请实施例中该session可以维护在应用层,其中,该待迁移进程的数据可以包括:对于直播场景下传输控制协议(TransmissionControl Protocol,简称TCP)连接信息,其中,该直播场景下TCP连接信息包括:内核socket的属性(包括socket本身、TCP属性、TCP拥塞控制的属性)、内核发出send和接收请求receive queue的属性和数据(包括seq num,ack num,tcp send queue数据,tcp recvqueue数据)。

这里需要说明的是,本申请实施例中的内核协议栈状态包括:内核socket的属性(包括socket本身、TCP属性、TCP拥塞控制的属性)、内核发出send和接收请求receivequeue的属性;

本申请实施例中的内容数据包括:直播的内容数据,例如,seq num,ack num,tcpsend queue数据,tcp recv queue数据。

步骤S204,在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;

本申请上述步骤S204中,基于步骤S202中对待迁移进程的数据的存储,对待迁移进程的数据连接进行冻结,进而开始进程重启,达到对于推流终端的新到达的数据包直接丢弃,不做任何处理,避免数据包丢包和乱序的情况发生。

在本申请实施例中对数据连接的冻结,基于TCP协议特点,具体包括:内核协议栈停止接收推流终端发送的数据包,并对停止接收推流终端发送的数据包期间接收的推流终端发送的数据包进行丢弃,由于未向推流终端反馈“已接收该数据包”,推流终端将一直发送内核协议栈丢弃的数据包,直至重启结束重新接收推流终端发送的数据包。

并且,由于待迁移进程的内核协议栈状态和内容数据存储于session中,当冻结数据连接时,由于未向推流终端反馈“已接收该数据包”,推流终端将一直发送内核协议栈丢弃的数据包,直至重启结束重新接收推流终端发送的数据包,保障了热迁移后数据不丢失的情况下发生,且实现了在热迁移过程中数据由一个进程到达另一进程的平滑过渡。

其中,利用TCP协议栈的可靠传递特性,在短时间内的freeze(比如5s之内),可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到freeze期间的数据。

步骤S206,将待迁移进程的数据迁移至目标进程,恢复数据连接。

本申请上述步骤S206中,由于CDN上直播推流业务非常庞大,而且直播业务对于断流重推非常敏感,然而是软件就会有BUG,一旦发生计划内或者计划外的软件重启,将会导致该服务器上的所有直播流断流,基于本申请提供的直播业务中数据连接重启方法,通过session预先存储待迁移进程的内核协议栈状态和内容数据,以及对待迁移进程的数据连接的冻结,实现将待迁移进程的数据热迁移至目标进程,进而对待迁移进程进行解冻,恢复数据连接,达到降低计划外重启引起的断流,以及用户“无感知差异”的进行计划内的重启的目的。

其中,目标进程可以包括:待迁移数据重启后的进程,或,接管待迁移进程的其他进程(例如,新的进程,空闲的进程)。

综上,结合步骤S202至步骤S206,图3是根据本发明实施例一的一种直播业务中数据连接重启方法的流程示意图;如图3所示,本申请实施例提供的直播业务中数据连接重启方法具体如下:

Step1,保持内核协议栈状态和内容数据data;

其中,Step1对应本申请步骤S202。

Step2,内核冻结该数据连接;

Step3,进程热修复重启;

其中,Step2和3对应本申请步骤S204。

Step4,恢复内核协议栈状态和内容数据data;

Step5,内核取消对该数据连接的冻结。

其中,Step4和5对应本申请步骤S206,热迁移完成,取消对原进程的数据连接的冻结。

这里Step2至Step5,基于TCP协议特性,即,推流终端在未收到内核协议栈反馈的“已接收数据”的响应情况下,推流终端将一直发送未收到响应的数据包,因此在数据连接的冻结阶段,由于停止接收推流终端发送的数据包,并丢弃该数据包,推流终端将处于一直未收到响应,且一直发送数据包的状态,其中,一直发送的数据包可以包括未收到响应反馈的数据包,在重启结束,完成热迁移之后,由于恢复了数据连接,内核协议栈将恢复接收推流终端发送的数据包,进而将冻结期间的数据包重新接收,保障了数据的完整性。

此外,由于重启的时间小于推流终端与内核协议栈之间数据重传超时的时间,所以对于直播业务,不会造成数据断流,即,假设当主机进程A-0需要重启,将A-0的内核协议栈状态和内容数据迁移至进程A-1,冻结内核协议栈与推流终端之间的数据连接,重启进程A-0所需时间为2秒(单位:s),由于直播场景下用户在获得直播数据流时往往会缓存一段播放时间的数据流,假设缓存一段播放时间的数据流的播放时间为5秒(单位:s),当发生进程重启,原进程A-0的数据迁移时,内核协议栈与推流终端之间的数据重传超时的时间为5秒(单位:s),而在直播2秒之后,进程A-0的内核协议栈状态和内容数据已经迁移至进程A-1,完成了进程的重启和热迁移,对于用户侧的体验则是感知不到进程重启带来的播放卡顿。

上述示例仅以实现本申请提供的直播业务中数据连接重启方法为例进行说明,具体不做限定。

需要说明的是,本申请实施例提供的直播业务中数据连接重启方法所有的改动直接在Linux内核实现,对上层业务透明,应用不需要单独适配协议栈,增强了兼容性以及节约了系统资源,并且基于步骤S202至步骤S206,能够支持单机内连接热修复,以及跨主机的连接热修复的场景。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

具体的,本申请实施例提供的直播业务中数据连接重启方法可以适用于两个场景:场景一,单机内热修复;场景二,跨主机热修复。

其中,场景一:单机内热修复具体如下:

图4是根据本发明实施例一的直播业务中数据连接重启方法中单机内热修复的流程示意图,如图4所示,本申请实施例提供的直播业务中数据连接重启方法如下:

可选的,步骤S202中存储待迁移进程的数据包括:

Step1,在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据。

可选的,步骤S206中将待迁移进程的数据迁移至目标进程包括:

Step1,读取待迁移进程的内核协议栈状态和内容数据;

Step2,将待迁移进程的内核协议栈状态和内容数据更新至目标进程。

具体的,结合步骤S202中的Step1和步骤S206中的Step1和Step2,在场景一中,如图4所示,例如需要将主机A中的进程A-0的数据迁移至进程A-1,为了避免直播流断流,在单机内热修复场景下的热迁移过程中,先对进程A-0进行读操作,将进程A-0的数据存储至会话信息session,其中,这里的session存储可以是本地内存、磁盘或者网络上的存储设备;

在内核协议栈中冻结该数据连接,对于推流终端的新到达的数据包直接丢弃,不做任何处理;

在进程重启后,读取session存储中的连接数据,恢复连接,即,对进程A-1执行写操作,将待迁移进程的内核协议栈状态和内容数据更新至目标进程,其中,利用TCP协议栈的可靠传递特点,即,数据包重传特点,在冻结期间丢弃的数据包,推流终端会进行重传,连接恢复。

区别于现有技术中在单机场景下为确保直播流不断流,现有技术在用户层协议栈实现的,需要单独适配协议栈,并在适配后的协议栈上进行移植,由于用户层协议栈没有统一的接口和标准,需要上层业务修改后才能实现直播流不断流的情况下,计划内进行重启;而本申请实施例提供的单机内热修复的方案中所有的改动直接在Linux内核实现,对上层业务透明,应用不需要单独适配协议栈,即,内核协议栈的修改是兼容应用层接口的,对上层业务透明,所以在进程重启和进程数据热迁移的过程中省去了上层业务的配置过程,提升了重启执行效率。

场景二,跨主机热修复具体如下:

图5是根据本发明实施例一的直播业务中数据连接重启方法中跨主机热修复的流程示意图,如图5所示,本申请实施例提供的直播业务中数据连接重启方法如下:

可选的,步骤S202中存储待迁移进程的数据包括:

Step1,在会话信息位于网络端的情况下,在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据。

进一步地,可选的,步骤S206中将待迁移进程的数据迁移至目标进程包括:

Step1,第二主机读取第一主机的待迁移进程的内核协议栈状态和内容数据,并将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程。

具体的,结合步骤S202中的Step1和步骤S206中的Step1,在场景二中,如图5所示,在跨主机热修复场景下,区别于场景一在单机内热修复场景下的会话信息session,在场景二中会话信息session是存到网络上的设备,在进行跨主机热修复的过程中,先对主机A中的进程A-0进行读操作,将进程A-0的数据存储至会话信息session,在内核协议栈中冻结该数据连接,对于推流终端的新到达的数据包直接丢弃,不做任何处理;在进程重启后,读取session存储中的连接数据,恢复连接,即,对主机B进程B-0执行写操作,将待迁移进程的内核协议栈状态和内容数据更新至目标进程,其中,利用TCP协议栈的可靠传递特点,即,数据包重传特点,在冻结期间的数据包,推流终端会进行重传,连接恢复。

其中,在跨主机场景下利用TCP协议站的数据包重传特点,推流终端将原本发送至主机A的数据在进程重启,数据热迁移之后,根据预先的主备设备配置,将该数据发送至主机B,保障了直播数据的完整度。

这里需要说明的是,推流终端将原本发送至主机A的数据改发至主机B的过程,可以根据预先设定,设定主机A为主设备,设定主机B为备用设备,当主机A中的进程A-0需要重启,无法完成直播业务时,为保障直播的顺利播出,通过将进程A-0的数据存储至会话信息session,在内核协议栈中冻结该数据连接,对于推流终端的新到达主机A的数据包直接丢弃,不做任何处理;另外,读取session存储中的连接数据,启用主机B的进程B-0,并对主机B执行写操作,将待迁移进程的内核协议栈状态和内容数据更新至主机B的目标进程,并接收推流终端原发送至主机A但是被丢弃的数据包,保障了直播数据的完整度。

除此之外,推流终端还可以根据网络轮询的方式,获取网络侧分配的空闲状态的主机,在执行进程重启之后,将原发送至主机A但被丢弃的数据包发送至分配的空闲状态的主机。

上述示例仅以实现本申请提供的直播业务中数据连接重启方法为例进行说明,具体不做限定。综上,本申请实施例提供的直播业务中数据连接重启方法基于场景一或场景二,本申请实施例提供的直播业务中数据连接重启方法还包括:

可选的,步骤S204中在内核协议栈中停止接收推流终端发送的数据包包括:停止接收推流终端发送的数据包,并丢弃在停止期间推流终端发送的数据包。

可选的,在步骤S206之后,本申请实施例提供的直播业务中数据连接重启方法还包括:

步骤S207,重新接收进程重启时丢弃的推流终端发送的数据包,恢复数据连接。

实施例2

根据本发明实施例的一方面,还提供了另一种直播业务中数据连接重启方法,图6是根据本发明实施例二的直播业务中数据连接重启方法的流程示意图,如图6所示,在单机内热修复场景下,包括:

步骤S602,在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;

步骤S604,在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;

步骤S606,从会话信息中读取待迁移进程的内核协议栈状态和内容数据;

步骤S608,将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

综上,结合步骤S602至步骤S608,对应实施例一中场景一单机内热修复场景部分以及结合图4所示,本申请提供的直播业务中数据连接重启方法具体如下:

1、热修复之前,将相关信息(备注1)存储到session存储中,这里的会话信息session存储可以是本地内存、磁盘或者网络上的存储设备;

2、在内核协议栈中冻结freeze数据连接,对于推流终端的新到达的数据包直接丢弃,不做任何处理;

3、进程重启后,读取会话session存储中的连接数据,恢复连接;

4、利用TCP协议栈的可靠传递特点,即,数据包重传特点,在freeze期间的数据包,推流终端会进行重传,连接恢复;

备注1:对于直播场景下TCP连接信息包括内核socket的属性(包括socket本身、TCP属性、TCP拥塞控制的属性)、内核send和receive queue的属性和数据(包括seq num,ack num,tcp send queue数据,tcp recv queue数据)。

这里需要说明的是,本申请实施例中的内核协议栈状态包括:内核socket的属性(包括socket本身、TCP属性、TCP拥塞控制的属性)、内核发出send和接收请求receivequeue的属性;

本申请实施例中的内容数据包括:直播的内容数据,例如,seq num,ack num,tcpsend queue数据,tcp recv queue数据。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过在单机内热修复场景下,会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;从会话信息中读取待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

实施例3

根据本发明实施例的一方面,还提供了又一种直播业务中数据连接重启方法,图7是根据本发明实施例三的直播业务中数据连接重启方法的流程示意图,如图7所示,在跨主机热修复场景下,包括:

步骤S702,在会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;

步骤S704,在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;

步骤S706,第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据;

步骤S708,将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

综上,结合步骤S702至步骤S708,对应实施例一中场景二跨主机热修复场景部分以及结合图5所示,在跨主机热修复场景中,会话信息session包括:存到网络上的设备。除此之外,如图5所示,区别于实施例2中单机内热修复场景下的数据连接重启,本申请实施例是将主机A的进程A-0的数据存储至网络端的session中,然后冻结该进程A-0的数据连接,即,将推流终端新发送的数据包丢弃;在跨主机热迁移的过程中,主机B的进程B-0从session中读取进程A-0的数据,完成热迁移,对进程A-0的数据连接解冻,根据TCP协议栈的可靠传递特点,即,数据包重传特点,在冻结freeze期间的数据包,推流终端会进行重传,连接恢复。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过在跨主机热修复场景下,会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的直播业务中数据连接重启方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例4

根据本发明实施例,还提供了一种用于实施上述直播业务中数据连接重启方法的装置,如图8所示,图8是根据本发明实施例四的直播业务中数据连接重启装置的结构图,该装置包括:存储模块82、重启模块84和数据恢复模块86。

其中,存储模块82,用于存储待迁移进程的数据;重启模块84,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;数据恢复模块86,用于将待迁移进程的数据迁移至目标进程,恢复数据连接。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

此处需要说明的是,上述存储模块82、重启模块84和数据恢复模块86对应于实施例一中的步骤S202至步骤S206,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的CDN系统中,可以通过软件实现,也可以通过硬件实现。

可选的,存储模块包括:第一存储单元,用于在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据。

可选的,数据恢复模块包括:读取单元,用于读取待迁移进程的内核协议栈状态和内容数据;更新单元,用于将待迁移进程的内核协议栈状态和内容数据更新至目标进程。

可选的,存储模块包括:第二存储单元,用于在会话信息位于网络端的情况下,在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据。

进一步地,可选的,数据恢复模块包括:数据恢复单元,用于控制第二主机读取第一主机的待迁移进程的内核协议栈状态和内容数据,并将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程。

可选的,重启模块包括:丢弃单元,用于停止接收推流终端发送的数据包,并丢弃在停止期间推流终端发送的数据包。

可选的,该装置还包括:接收模块,用于在将待迁移进程的数据迁移至目标进程之后,重新接收进程重启时丢弃的推流终端发送的数据包,恢复数据连接。

实施例5

根据本发明实施例,还提供了一种用于实施上述直播业务中数据连接重启方法的装置,如图9所示,图9是根据本发明实施例五的直播业务中数据连接重启装置的结构图,在单机内热修复场景下,该装置包括:存储模块92、重启模块94、读取模块96和更新模块98。

其中,存储模块92,用于在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;重启模块94,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;读取模块96,用于从会话信息中读取待迁移进程的内核协议栈状态和内容数据;更新模块98,用于将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过在单机内热修复场景下,会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;从会话信息中读取待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

此处需要说明的是,上述存储模块92、重启模块94、读取模块96和更新模块98对应于实施例二中的步骤S602至步骤S608,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例二所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例二提供的CDN系统中,可以通过软件实现,也可以通过硬件实现。

实施例6

根据本发明实施例,还提供了一种用于实施上述直播业务中数据连接重启方法的装置,如图10所示,图10是根据本发明实施例六的直播业务中数据连接重启装置的结构图,在跨主机热修复场景下,该装置包括:存储模块1002,重启模块1004和更新模块1006。

其中,存储模块1002,用于在会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;重启模块1004,用于在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;更新模块1006,用于在第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据的情况下,将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包。

在本发明实施例中,采用利用TCP协议栈的可靠传递特性,在短时间内的冻结,可以保证不会触发推流终端断流,同时在连接恢复后,可以依靠重传获取到冻结期间的数据的方式,通过在跨主机热修复场景下,会话信息位于网络端的情况下,第一主机在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;第二主机从会话信息中读取第一主机的待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至第二主机的目标进程,并重新接收进程重启时丢弃的推流终端发送的数据包,达到了降低计划外重启引起的断流以及实现计划内重启的目的,从而实现了避免对CDN场景下的数据连接进行热迁移时发生直播流断流的技术效果,进而解决了由于相关技术在解决直播流断流问题的过程中需要通过上层业务修改用户层协议栈才能实现直播流不断流的情况下的计划内重启,导致的执行效率低的技术问题。

此处需要说明的是,上述存储模块1002,重启模块1004和更新模块1006对应于实施例三中的步骤S702至步骤S706,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例三所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例三提供的CDN系统中,可以通过软件实现,也可以通过硬件实现。

实施例7

根据本发明实施例的一方面,还提供了再一种数据处理方法,包括:存储待迁移进程的数据;在内核协议栈中停止接收发送方发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

实施例8

根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:存储模块,用于存储待迁移进程的数据;重启模块,用于在内核协议栈中停止接收发送方发送的数据包,执行进程重启;数据迁移模块,用于将待迁移进程的数据迁移至目标进程,恢复数据连接。

实施例9

根据本发明实施例的又一方面,还提供了一种存储介质,包括:存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行:存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

实施例10

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据连接重启的方法所执行的程序代码。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:存储待迁移进程的数据;在内核协议栈中停止接收推流终端发送的数据包,执行进程重启;将待迁移进程的数据迁移至目标进程,恢复数据连接。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:存储待迁移进程的数据包括:在会话信息位于本地存储设备的情况下,在会话信息中存储待迁移进程的内核协议栈状态和内容数据。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:将待迁移进程的数据迁移至目标进程包括:读取待迁移进程的内核协议栈状态和内容数据;将待迁移进程的内核协议栈状态和内容数据更新至目标进程。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:存储待迁移进程的数据包括:在会话信息位于网络端的情况下,在会话信息中存储第一主机的待迁移进程的内核协议栈状态和内容数据。

进一步地,可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:将待迁移进程的内核协议栈状态和内容数据迁移至目标进程包括:第二主机读取第一主机的待迁移进程的内核协议栈状态和内容数据,并将待迁移进程的数据更新至第二主机的目标进程。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在内核协议栈中停止接收推流终端发送的数据包包括:停止接收推流终端发送的数据包,并丢弃在停止期间推流终端发送的数据包。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在将待迁移进程的数据迁移至目标进程之后,重新接收进程重启时丢弃的推流终端发送的数据包,恢复数据连接。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种注册域名的获取方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类