一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于QUIC协议的服务升级方法、装置及电子设备与流程

2022-08-17 09:25:56 来源:中国专利 TAG:

一种基于quic协议的服务升级方法、装置及电子设备
技术领域
1.本公开涉及数据通讯技术领域,尤其涉及一种基于quic协议的服务升级方法、装置及电子设备。


背景技术:

2.用户数据报协议(user datagram protocol,简称udp)是一种无连接的传输层协议,快速udp互联网连接协议(quic udp internet connections,简称quic)是一种使用udp进行多路并发传输的协议。
3.随着技术的发展,基于quic协议的服务升级已逐渐成为需要经常进行的操作。由于quic协议基于的udp不具有接入(accept)机制,不能像基于tcp的协议栈那样容易的实现平滑升级,因此目前还没有可用的升级方式,只能通过ab升级或者滚动升级。然而,ab升级模式在升级过程需要额外机器,滚动升级模式存在服务闪断的问题,影响用户的使用体验。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于quic协议的服务升级方法、装置及电子设备。
5.本公开提供了一种基于quic协议的服务升级方法,包括:当第一进程接收到升级通知时,查询处于等待连接状态的监听套接字;其中,所述升级通知为第二进程启动后发出的;获取已处理完成网络请求的第一网络连接对应的第一套接字;将所述监听套接字和所述第一套接字发送给所述第二进程,以使所述第二进程根据所述监听套接字和所述第一套接字与客户端建立网络连接。
6.进一步,所述获取已处理完成网络请求的第一网络连接对应的第一套接字的步骤,包括:在当前已建立的网络连接中,查询已处理完成网络请求的第一网络连接;将所述第一网络连接对应的已连接套接字确定为第一套接字。
7.进一步,所述方法还包括:在当前已建立的网络连接中,查询未处理完成网络请求的第二网络连接;将所述第二网络连接对应的已连接套接字确定为第二套接字。
8.进一步,所述方法还包括:接收所述客户端的网络请求;判断所述网络请求对应的套接字为所述监听套接字、所述第一套接字或所述第二套接字;如果为所述第二套接字,所述第一进程响应所述网络请求;如果为所述监听套接字或所述第一套接字,所述第一进程发送响应通知至所述第二进程,以使所述第二进程响应所述网络请求。
9.进一步,所述方法还包括:关闭获取的所述监听套接字和所述第一套接字。
10.进一步,所述方法还包括:判断是否有未处理完成的网络请求;如果没有,确定执行退出操作。
11.进一步,所述将所述监听套接字和所述第一套接字发送给所述第二进程的步骤,包括:通过进程间通信将所述监听套接字和所述第一套接字发送给所述第二进程。
12.本公开还提供了一种基于quic协议的服务升级装置,包括:通知接收模块,用于当
第一进程接收到升级通知时,查询处于等待连接状态的监听套接字;其中,所述升级通知为第二进程启动后发出的;套接字获取模块,用于获取已处理完成网络请求的第一网络连接对应的第一套接字;套接字发送模块,用于将所述监听套接字和所述第一套接字发送给所述第二进程,以使所述第二进程根据所述监听套接字和所述第一套接字与客户端建立网络连接。
13.本公开还提供了一种电子设备,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行上述方法。
14.本公开还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。
15.本公开实施例提供的技术方案与现有技术相比具有如下优点:
16.本公开实施例提供了一种基于quic协议的服务升级方法、装置及电子设备,当第一进程接收到第二进程启动后发出的升级通知时,首先查询处于等待连接状态的监听套接字,以及获取已处理完成网络请求的第一网络连接对应的第一套接字;然后将监听套接字和第一套接字发送给第二进程,以使第二进程根据监听套接字和第一套接字与客户端建立网络连接。在本公开实施例中,第一进程获取的监听套接字和第一套接字,均为当前无需处理网络请求的空闲的套接字;第一进程在接收到第二进程的升级通知时,将上述空闲的套接字发送给第二进程,能够保证不会因为quic协议升级而中断网络连接,有效改善了服务闪断的问题;而且,上述升级方式无需额外机器,易于部署。
附图说明
17.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
18.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
19.图1为本公开实施例所述基于quic协议的服务升级方法流程图;
20.图2为本公开实施例所述基于quic协议的服务升级方法的场景示意图;
21.图3为本公开实施例所述基于quic协议的服务升级装置结构框图;
22.图4为本公开实施例所述电子设备的结构示意图。
具体实施方式
23.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
24.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
25.考虑到目前的升级方案中,诸如ab升级或者滚动升级的升级方式,均不能较好地实现针对基于quic协议的服务升级;基于此,本实施例提供了一种基于quic协议的服务升
级方法、装置及电子设备,该技术可应用于音视频播放、音视频通话和浏览器等基于quic协议的应用服务上。为便于理解,以下对本公开实施例进行详细介绍。
26.实施例一:
27.图1为本公开实施例提供的一种基于quic协议的服务升级方法流程图,本实施例可适用于服务器进程更新的情况,该方法可以由服务器进程更新装置来执行,具体包括如下步骤:
28.步骤s102,当第一进程接收到升级通知时,查询处于等待连接状态的监听套接字;其中,升级通知为第二进程启动后发出的。可以理解,第一进程为旧进程,第二进程为升级完成后的新进程。
29.在第一进程进行基于quic协议的网络连接时,启动第二进程并且启动第二进程的网络监听。第二进程启动成功后向第一进程发送升级通知,第一进程接收到升级通知后,将满足预设空闲条件的套接字传递给第二进程。其中,上述套接字可以采用fd(file descriptor,文件描述符);上述预设空闲条件是指需要保证套接字由第一进程传递至第二进程前后,在基于套接字建立的网络连接上没有数据的传输。
30.监听套接字(可采用accept fd表示)是处于等待连接状态的套接字,它实时监听网络状态,等待客户端的连接请求;也就是说,监听套接字未与客户端建立网络连接,不存在数据的传输,从而监听套接字为满足上述预设空闲条件的套接字。
31.步骤s104,获取已处理完成网络请求的第一网络连接对应的第一套接字。
32.在本实施例中,当套接字监听到客户端的连接请求,并响应该连接请求时,会建立与客户端的网络连接;在此情况下,将建立网络连接的套接字称为已连接套接字(可采用connect fd表示)。第一进程中可以包括一个或多个网络连接,每个网络连接对应一个已连接套接字。第一进程查询网络连接上是否尚有未处理完成的网络请求或网络响应,以得到没有未处理完成的网络请求或网络响应对应的网络连接,并将得到的网络连接确定为已处理完成网络请求的第一网络连接;进而将第一网络连接对应的已连接套接字作为第一套接字。
33.步骤s106,将监听套接字和第一套接字发送给第二进程,以使第二进程根据监听套接字和第一套接字与客户端建立网络连接。
34.第一进程将监听套接字和第一套接字发送给第二进程。第二进程根据接收到的第一套接字继续进行由第一进程切换来的网络连接;以及,第二进程根据接收到的监听套接字继续监听网络状态,当监听到客户端的新的连接请求时,第二进程通过该监听套接字处理客户端的新的连接请求,与客户端建立新的网络连接。在本实施例中,第二进程通过第一套接字继续第一进程的网络连接,能够保证网络连接在新、旧进程切换时,不会发生网络服务闪断;进一步结合第二进程利用监听套接字建立新的网络连接,容易实现平滑升级,对于用户而言,不会因为网络升级而受到影响。
35.本公开实施例提供的基于quic协议的服务升级方法,当第一进程接收到第二进程启动后发出的升级通知时,首先获取满足空闲条件的监听套接字和第一套接字;然后将监听套接字和第一套接字发送给第二进程,以使第二进程基于监听套接字和第一套接字与客户端建立网络连接。在本公开实施例中,第一进程获取的监听套接字和第一套接字,均为当前无需处理网络请求的套接字;第一进程在接收到第二进程的升级通知时,将上述无需处
理网络请求的套接字发送给第二进程,能够保证不会因为quic协议升级而中断网络连接,有效改善了服务闪断的问题;而且,上述升级方式无需额外机器,易于部署。
36.根据本公开又一个方面的基于quic协议的服务升级方法,该方法可以包括如下步骤1至步骤5:
37.步骤1,在第一进程进行网络连接时,启动第二进程;第二进程启动成功后向第一进程发送升级通知。
38.步骤2,第一进程根据升级通知,查询套接字中处于等待连接状态的监听套接字。
39.步骤3,获取已处理完成网络请求的第一网络连接对应的第一套接字。
40.具体的,首先在当前已建立的网络连接中,查询已处理完成网络请求的第一网络连接。在当前已建立的网络连接中,有些网络连接可能有尚未处理完成的网络请求,有些网络连接则可能没有未处理完成的网络请求。基于此,当网络连接上没有尚未处理完成的请求或者响应时,将该网络连接确定为第一网络连接;比如,当网络连接上没有正在传输的块数据(如视频流)时,将该网络连接确定为第一网络连接。在此之后,将第一网络连接对应的已连接套接字确定为第一套接字。
41.第一网络连接上没有未处理完成的网络请求,此时将其对应的第一套接字发送给第二进程,由第二进程继承第一套接字的第一网络连接,第一网络连接上的服务不会被中断。
42.步骤4,关闭获取的监听套接字和第一套接字。
43.在具体实现时,可以在查询得到监听套接字和第一套接字之后,同时关闭监听套接字和第一套接字;或者,考虑到网络连接上处理网络请求完成与否的状态是随时变化的,从而,可以每查询到监听套接字或第一套接字后,即相应关闭查询到的监听套接字或第一套接字。
44.关闭监听套接字和第一套接字,对此可以理解为,第一进程关闭第一套接字对客户端的网络请求的处理,从而切断第一进程的第一网络连接。以及,第一进程关闭监听套接字对客户端的连接请求的监听。
45.步骤5,第一进程通过进程间通信(uds,unix domain socket)将监听套接字和第一套接字发送给第二进程。
46.至此,为了保证网络服务不会被中断,会出现第一进程和第二进程都在进行网络监听的情况,具体为:第二进程根据监听套接字和第一套接字与客户端建立新的网络连接,并对新的网络请求进行处理;同时,第一进程通过尚未处理完成网络请求的网络连接继续对网络请求进行处理。
47.在本实施例中,可以基于linux内核reuseport(套接字复用机制),第一进程和第二进程同时监听同一端口,当监听到客户端的网络请求时,由第一进程或者第二进程响应网络请求。
48.在一种实施例中,第一进程还可以在当前已建立的网络连接中,查询未处理完成网络请求的第二网络连接,并将第二网络连接对应的已连接套接字确定为第二套接字。
49.在此基础上,基于quic协议的服务升级方法还可以包括如下步骤(1)-(4):
50.(1)接收客户端的网络请求;在实际应用中,客户端的套接字首先描述它要连接的服务器端套接字,指出服务器端套接字的参数,参数可以包括套接字的地址和端口号,然后
向服务器端套接字发送携带上述地址和端口号的网络请求。
51.(2)判断网络请求对应的套接字为监听套接字、第一套接字或第二套接字。具体的,根据网络请求中携带的地址和端口号,可以判断网络请求对应的套接字是监听套接字、第一套接字或者还是第二套接字。
52.(3)如果为所述第二套接字,第一进程响应网络请求。第二套接字是未处理完成网络请求的第二网络连接对应的已连接套接字,在判断是第二套接字的情况下,表示对应的网络连接尚未处理完成网络请求。从而,为了保证网络服务的稳定性,可以基于用户态accept机制,将网络请求分配至第一进程,由第一进程继续对该网络请求进行处理。
53.(4)如果为监听套接字或第一套接字,第一进程发送响应通知至第二进程,以使第二进程响应网络请求。在此情况下,网络请求对应的套接字是已发送给第二进程的监听套接字或第一套接字,且监听套接字或第一套接字对应的网络连接没有未处理完成网络请求。从而,可以基于用户态accept机制,将网络请求分配至第二进程,由第二进程继续对该网络请求进行处理,此时不会对网络服务造成影响。
54.本实施例通过第一进程和第二进程同时监听网络状态,第一进程通过第二套接字对未完成处理的网络请求继续进行处理,第二进程通过监听套接字和第一套接字对新的网络请求进行处理,实现quic协议的稳定、平滑升级,有效改善了服务闪断的问题。
55.基于上述实施例,基于quic协议的服务升级方法还包括退出第一进程。退出第一进程的一种实现方式可参照如下所示:第一进程判断是否有未处理完成的网络请求;如果没有,确定执行退出操作。
56.针对第一进程上的网络连接,第一进程判断是否存在尚未处理完成网络请求的网络连接;如果不存在尚未处理完成网络请求的网络连接,表示第一进程已完成全部的网络请求,此时退出不会影响网络服务的稳定性,从而确定执行退出操作。当然,如果还有未处理完成的网络请求,确定未处理完成网络请求的网络连接为上述第二网络连接,并通过第二网络连接继续处理网络请求。
57.在另一种退出第一进程的实现方式中,还可以首先接收第二进程发送的退出通知;比如:第二进程在接收到至少一个第一套接字后,向第一进程发送退出通知,或者第二进程基于监听套接字或第一套接字与客户端建立新的网络连接后,向第一进程发送退出通知。第一进程在接收到退出通知后,再判断是否有未处理完成的网络请求,并在没有的情况下,确定执行退出操作。
58.参照图2所示的服务升级场景示意图,本实施例以视频直播的网络服务为例,提供一种基于quic协议的服务升级方法的具体实施例。
59.参照图2,客户端可以为用于直播的手机、电脑或ipad等终端设备,且客户端可以为多个,诸如客户端ipa:1234和客户端ipb:4567。
60.在第一进程退出之前,也即在第一进程和第二进程均运行于服务端的linux系统中,同时监听linuxconnect api(linux系统连接端口)的过程中,第一进程和第二进程通过linux connect api将客户端和对应的套接字进行绑定;参照linux net kernel(linux系统网络内核)中的路由表,第一、二行记录的套接字为与客户端ipa:1234绑定的套接字,且第一行记录的套接字为监听套接字,第二行记录的套接字为已连接套接字;第三、四行记录的套接字为与客户端ipb:4567绑定的套接字,且第三行记录的套接字为已连接套接字,第
四行记录的套接字为监听套接字。
61.第一进程通过uds将监听套接字和已连接套接字中的第一套接字发送给第二进程;其中,第一套接字的获取过程可参照上述实施例,在此不再展开描述。
62.服务端的第一进程和第二进程同时监听端口,当监听到客户端的网络请求时,该网络请求诸如为直播推送请求,解析该直播推送请求中携带的多媒体数据和套接字的参数;根据套接字的参数,确定将该直播推送请求分配给第一进程或第二进程。在此以分配给第二进程为例,第二进程通过套接字与客户端建立新的网络连接,并将多媒体数据上传至cdn(content delivery network,内容分发网络),以通过cdn将客户端的多媒体数据推送至其他客户端。
63.实施例二:
64.基于上述实施例提供的基于quic协议的服务升级方法,参见图3所示的一种基于quic协议的服务升级装置的结构框图,该装置包括:
65.通知接收模块302,用于当第一进程接收到升级通知时,查询处于等待连接状态的监听套接字;其中,升级通知为第二进程启动后发出的;
66.套接字获取模块304,用于获取已处理完成网络请求的第一网络连接对应的第一套接字;
67.套接字发送模块306,用于将监听套接字和第一套接字发送给第二进程,以使第二进程根据监听套接字和第一套接字与客户端建立网络连接。
68.本公开实施例提供的基于quic协议的服务升级装置,第一进程获取的监听套接字和第一套接字,均为当前无需处理网络请求的套接字;第一进程在接收到第二进程的升级通知时,将上述无需处理网络请求的套接字发送给第二进程,能够保证不会因为quic协议升级而中断网络连接,有效改善了服务闪断的问题;而且,上述升级方式无需额外机器,易于部署。
69.在一种实施例中,套接字获取模块304具体用于:
70.在当前已建立的网络连接中,查询已处理完成网络请求的第一网络连接;将第一网络连接对应的已连接套接字确定为第一套接字。
71.在一种实施例中,套接字获取模块304还可以用于:在当前已建立的网络连接中,查询未处理完成网络请求的第二网络连接;将第二网络连接对应的已连接套接字确定为第二套接字。
72.在一种实施例中,上述装置还包括判断模块(图中未示出);该判断模块用于:
73.接收客户端的网络请求;判断网络请求对应的套接字为监听套接字、第一套接字或第二套接字;如果为第二套接字,第一进程响应网络请求;如果为监听套接字或第一套接字,第一进程发送响应通知至第二进程,以使第二进程响应网络请求。
74.在一种实施例中,上述装置还包括关闭模块(图中未示出);该关闭模块用于:关闭获取的监听套接字和第一套接字。
75.在一种实施例中,上述装置还包括退出模块(图中未示出);该退出模块用于:判断是否有未处理完成的网络请求;如果没有,确定执行退出操作。
76.在一种实施例中,套接字发送模块306具体用于:通过进程间通信将监听套接字和第一套接字发送给第二进程。
77.本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,本实施例部分未提及之处,可参考前述实施例一中相应内容。
78.基于前述实施例,本实施例给出了一种电子设备,参照图4所示的电子设备的结构示意图,其包括:处理器402和存储装置404;存储装置404上存储有计算机程序,计算机程序在被处理器402运行时执行如上述实施例一所提供的方法。
79.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
80.进一步,本实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述实施例一所提供方法的步骤。
81.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
82.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献