CN116599796A - 网关、网关热升级方法及系统 - Google Patents
网关、网关热升级方法及系统 Download PDFInfo
- Publication number
- CN116599796A CN116599796A CN202310436793.0A CN202310436793A CN116599796A CN 116599796 A CN116599796 A CN 116599796A CN 202310436793 A CN202310436793 A CN 202310436793A CN 116599796 A CN116599796 A CN 116599796A
- Authority
- CN
- China
- Prior art keywords
- parent process
- parent
- service request
- child
- gateway
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 433
- 230000008569 process Effects 0.000 claims abstract description 377
- 238000012545 processing Methods 0.000 claims description 93
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013404 process transfer Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种网关、网关热升级方法及系统,涉及云计算领域,该方法包括:收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;子进程用于在建立连接后,接收父进程转移的端口信息和文件描述符信息;退出父进程,以及利用子进程根据端口信息和文件描述符信息处理服务请求。本申请基于退出信号执行断开父进程与子进程之间的断开操作,实现对父进程退出过程的控制,从而可以减少服务请求在等待时间内未收到回复,父进程就退出等情况,进一步保证父进程的优雅退出。
Description
技术领域
本申请涉及云计算领域,特别是涉及一种网关、网关热升级方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
网关作为承载机器上进出口的流量的关键设施,在进行应用重新部署或者升级时需要具备热升级功能,以便其上的进出流量不会受阻,从而不会中断机器上的服务请求和响应,保障机器的服务可用性。现有的网关热升级方案中,子进程接收到父进程传输的FD(File Descriptor,文件描述符)之后,向父进程发送消息,以使父进程执行退出,而父进程机械性的等待一段时间退出,可能存在请求在等待时间内未收到回复就退出,不能保证进程的优雅退出。
发明内容
本申请实施例提供了一种网关、网关热升级方法及系统,可以至少优化父进程退出的过程,使父进程实现优雅退出。
根据本申请的一个方面,还提供了一种网关热升级方法,包括:收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
根据本申请的另一个方面,还提供了一种网关热升级系统,包括控制模块和处理模块:所述控制模块,用于收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;所述处理模块,用于退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
根据本申请的另一个方面,还提供了一种网关,该网关按照上述的方法步骤进行网关热升级。
根据本申请的另一个方面,还提供了一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据上述的方法。
根据本申请的另一个方面,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述的方法步骤。
根据本申请的另一个方面,还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
本发明实施例的有益效果:
在本申请实施例中,收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。本申请在收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程之间的连接,基于退出信号执行断开父进程与子进程之间的断开操作,实现对父进程退出过程的控制,从而可以减少服务请求在等待时间内未收到回复,父进程就退出等情况,进一步保证父进程的优雅退出。
本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1是本发明实施例的网关热升级方法的流程图;
图2是本发明实施例的现有的网关热升级方法的示意图;
图3是本申请实施例的网关热升级方法的示意图;
图4是能够用于实现本发明的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
目前,现有的网关热升级方案中,参见图2所示的现有的网关热升级方法的示意图,父子进程启动的时候都会创建socket(套接字)并利用bind函数(将一个套接字(Socket)与一个本地地址(IP地址和端口号)绑定的函数)绑定到一个特定的UDS(UnixDomain Socket,Unix域套接字)文件上:对于第一次部署的应用由于其没有父进程,所以可以创建该UDS文件;而对于后续热升级的子进程来说,由于其拥有父进程,所以可以通过直接打开其父进程的UDS文件来完成和父进程的通信。该方案中,下述步骤都是基于热升级时子进程拥有父进程的情况来进行说明的。
1、子进程在进行到bind处理之前需要首先对父进程发送shutDownParent(用于关闭父进程的指令)的消息,父进程接收到之后开始停止监听(listener),关闭socket,这样可以使得新的连接快速失败(fail-fast),避免新的连接进入accept queue(接受队列)。
2、子进程收到1步骤的response(响应)之后发送passListenSocket(用于传递监听的Socket的指令)消息,消息中会携带要传输的FD类型,比如,若网关目前只对外开放inbound和outbound端口,则可以将父进程绑定的inbound和outbound以及FD传输给子进程就可以了,日后如果有新的开放端口继续传输即可。
3、当开启TLS(Transport Layer Security,传输层安全)加密时,网关处会处于某种状态中。
4、子进程接收到父进程传输的FD之后就可以接收新的连接了,子进程发送drainListenerAndkillParent(用于通知父进程退出的指令)消息,让父进程优雅退出。此时父进程剩下的工作就是把已经建立好的连接处理完毕,此处预留一定时间让其处理,处理完后清理FD防止泄漏,然后执行优雅退出。
在上述方案中,父进程只是机械性的等待一段时间从而退出,可能存在请求在等待时间内未收到回复就退出,不能保证进程的优雅退出。
网关自身需要具备高可用的特性从而作为一种基础设施保障其负责代理的组件的网络通信可靠性。因此,基于以上背景,本申请现提出一种网关、网关热升级方法及系统,该方法可以优化父进程退出的过程,使父进程实现优雅退出。
下面对涉及的术语进行说明。
热升级:指不中断应用服务进行升级的行为。
网关软件:一种进行网络请求转换和代理的软件,可以运行在普通计算机或服务器上,通过软件实现不同网络或协议之间的通信。网关软件通常包括路由器、防火墙、代理服务器等,可以实现不同的网关功能。
优雅退出:程序、系统或网络连接的正常结束或关闭,这种退出方式可以避免程序或系统在结束时出现异常或错误,避免数据丢失或损坏,从而保证数据的完整性和安全性。
在本实施例中提供了一种网关热升级方法,该方法可以应用于服务端,服务端可以基于客户端的服务请求,向客户端提供网关服务。网关服务可以通过网关软件实现。图1是根据本申请实施例的网关热升级方法的流程图,下面对图1中所涉及到的方法步骤进行说明。
步骤S102,收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息。
在该步骤中,服务请求可以由客户端发送至网关,用于通过网关向其所在的服务端请求服务。需要说明的是,该网关可以是硬件设备,也可以是通过网关软件实现的。该服务请求可以用于建立热升级后的子进程与热升级前的父进程之间的连接,所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息。
其中,端口信息用于确定从父进程转移至子进程的端口,该端口可以用于实现接收数据包、对数据包进行过滤和安全检查、进行网络地址转换以及发送数据包等功能,具体采用的端口可以根据实际需求进行确定,本发明实施例对此不作具体限定。在计算机网络编程中,Socket是一种通信机制,它允许不同的进程在网络上进行通信。Socket通常使用文件描述符(File Descriptor,FD)来进行操作。FD是一个整数,它是操作系统内核为每个打开的文件或设备分配的唯一标识符。在Socket编程中,Socket FD是指一个Socket连接的文件描述符,它是一个整数,用于标识一个Socket连接。Socket FD可以用于发送和接收数据,以及进行其他Socket操作,如设置Socket选项、关闭Socket连接等。在Socket编程中,Socket FD通常是通过Socket函数创建的。
在该步骤中,进程可以是正在运行的程序的实例。进程是计算机系统中的基本执行单元,它包含了程序代码、数据和执行状态等信息。进程通常使用Socket机制进行通信,每个进程可以创建一个或多个Socket连接,用于与其他进程进行通信。进程之间的通信可以是同步的或异步的,可以通过Socket发送和接收数据,也可以通过其他通信机制进行交互。在该步骤中,父进程和子进程之间是一种层次关系,子进程可以是父进程的一个副本,它们共享一些资源,如可以共享端口信息和文件描述符信息,但他们之间也可以有一些资源是独立的。将网关热升级之前已经存在的进程作为父进程,将网关热升级之后使用的与该父进程共享端口信息和文件描述符信息等信息的进程作为子进程。
在该步骤中,退出信号用于确定启动执行异步处理任务的时间。退出信号可以以消息或者指令等形式发送。其中,消息可以是在通信过程中传递的信息,例如,可以是文本、图片、音频、视频等形式。指令可以是用来控制、调整、配置设备或系统的参数,以达到特定的目的。退出信号采用的形式,可以由其发出的端根据实际需求进行确定,本发明实施例对此不作具体限定。
在该步骤中,在收到退出信号时,通过退出信号启动断开父进程与子进程之间连接的操作,实现对断开操作的控制,减少请求在等待时间内未收到回复父进程就退出的情况。
步骤S104,退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
在该步骤中,退出所述父进程是结束当前正在运行的父进程,释放占用的系统资源。利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求,其中,该子进程可以用于执行该退出的父进程的部分或全部工作。
此处需要说明的是,通过网关热升级,可以实现将父进程处理的工作,全部或部分转移至子进程进行处理。
另外需要说明的是,若某子进程不存在对应的父进程,则说明该进程是第一次部署,则可以创建该进程的UDS文件,该进程的端口信息和文件描述符信息通过该新创建的UDS文件获取。
在本申请实施例中,收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。本申请在收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程之间的连接,基于退出信号执行断开父进程与子进程之间的断开操作,实现对父进程退出过程的控制,从而可以减少服务请求在等待时间内未收到回复,父进程就退出等情况,进一步保证父进程的优雅退出。
在一种可能的实施方式中,该方案还包括生成所述服务请求的异步处理任务;所述异步处理任务用于断开所述父进程与所述子进程之间的连接;收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接,可以按照如下步骤执行:利用异步处理组件执行所述异步处理任务。
在该可能的实施方式中,网关在收到服务请求之后,对每个服务请求生成一个对应的异步处理任务。例如,该异步处理任务可以是Tokio(一个异步I/O(Input/Output,输入/输出)运行时库,它提供了一种高效的方式来编写异步、并发和可扩展的网络应用程序)任务,所述异步处理任务用于断开所述父进程与所述子进程之间的连接。
需要说明的是,异步处理任务可以参考协程,可以在执行过程中暂停和恢复,从而实现任务的切换和调度。
在该步骤中,对每个服务请求生成一个对应的异步处理任务,该任务被执行后,可以实现断开父进程与子进程之间的连接,从而可以通过控制该异步处理任务的执行,实现对父进程与子进程之间连接状态的控制,即可以实现对释放该连接的时机的控制。
异步处理组件可以用于执行异步处理任务,从而实现断开所述父进程与所述子进程之间的连接。异步处理组件可以基于select宏实现。其中,select是一个系统调用,用于在多个文件描述符上等待数据的到来。select宏是一个封装了select系统调用的函数,用于在一组文件描述符上等待数据的到来。
在该步骤中,在收到退出信号时,才利用异步处理组件执行所述异步处理任务,从而可以通过退出信号启动断开父进程与子进程之间连接的操作,实现对断开操作的控制,减少请求在等待时间内未收到回复父进程就退出的情况。
在一种可能的实施方式中,所述退出信号由客户端或由服务端发出;所述异步处理组件包括第一处理组件和第二处理组件;利用异步处理组件执行所述异步处理任务,可以按照如下步骤执行:若先收到所述客户端发出的第一退出信号,则利用所述第一处理组件断开所述父进程与所述子进程之间的连接;若先收到所述服务端发出的第二退出信号,则利用所述第二处理组件断开所述父进程与所述子进程之间的连接。
在该可能的实施方式中,客户端和服务端可以是运行在不同的计算机上的进程,它们通过网络进行通信。客户端向服务端发送请求消息,服务端接收请求消息并处理,最终返回响应消息给客户端。
在进行网关热升级时,可以由客户端或服务端控制热升级过程的父进程的退出。例如,当客户端需要暂停热升级,控制父进程提前退出的情况下,会发送退出信号,将客户端发出的退出信号作为第一退出信号。在正常进行热升级的过程中,服务端可以通过发送退出信号,控制父进程的退出时机,将服务端发出的退出信号作为第二退出信号。例如,在一种可能的实施方式中,该第二退出信号,可以在所述子进程处理完成所述连接请求后或所述连接请求超时响应后发出,从而保证父进程的优雅退出。
若在收到服务端发送的第二退出信号之前,先收到所述客户端发出的该第一退出信号,则利用第一处理组件执行异步处理任务,从而断开所述父进程与所述子进程之间的连接。若在收到客户端发送的第一退出信号之前,先收到服务端发出的第二退出信号,则利用所述第二处理组件执行异步处理任务,从而断开所述父进程与所述子进程之间的连接。
在该步骤中,第一处理组件和第二处理组件,哪个先被响应,则被响应的组件则会根据收到的退出信号处理相应的任务,从而实现控制父进程和子进程的断开时机,进而可以保证父进程的优雅退出。
需要说明的是,第一处理组件或第二处理组件,可以是软件系统中的一个独立模块或部件,可以被单独开发、测试、部署和维护;可以具有明确定义的接口和功能,可以被其他组件或系统调用和使用。
考虑到在进程管理模块中,父进程退出时,可能被认定为是异常退出等情况,因此退出的父进程容易被重新拉起,导致资源的浪费。在一种可能的实施方式中,退出所述父进程,可以按照如下步骤执行:根据第一识别符识别所述父进程,根据第二识别符识别所述子进程;其中,所述父进程预先在进程管理模块中通过所述第一识别符标记,所述子进程预先在所述进程管理模块中通过所述第二识别符标记;控制所述父进程处于退出状态,以及控制所述子进程处于运行状态。
在该可能的实施方式中,进程管理模块可以用于管理网关涉及的进程。进程管理模块具体采用的进程管理方式可以根据实际需求进行选择,本发明实施例对此不作具体限定。
第一识别符识和第二识别符可以根据实际需求选择,例如,可以包括特殊字符、数字、字符串等。预先利用第一识别符标记父进程,利用第二识别符标记子进程,从而可以区分出父进程和子进程,进而根据第一识别符识别所述父进程,根据第二识别符识别所述子进程,控制所述父进程处于退出状态,以及控制所述子进程处于运行状态。
例如,在一种可能的实施方式中,进程管理模块通过Systemd(一种基于依赖关系的进程管理方式)实现。Systemd可以自动启动和停止系统服务,并且可以在服务之间建立依赖关系,以确保它们按照正确的顺序启动和停止。若网关进程使用了Systemd进行管理,而Systemd具备将所管理的进程加入到守护列表的功能(例如,本申请可以通过添加rustyncproxy.service到/usr/lib/systemd/system/中实现),这样就可以使得网关进程在出现异常退出的时候,Systemd能够及时将网关进程迅速拉起保障网关进程的高可用性,但是这种机制也给本申请的热升级带来了不小的麻烦。考虑这样一种情况:网关父进程被Systemd守护,当网关子进程connect父进程的UDS地址时,父进程转交完FD之后优雅退出,此时Systemd检测到父进程退出,便将其重启,而这样的重启可能影响热升级的过程。
为了使父进程退出而不要再被拉起,在使用Systemd实现进程管理模块时,在将被管理的进程添加到Systemd的守护列表的时候可以配置进程的服务模版名字为
rustyncproxy@.service,也就是在服务名字后面多加了一个@字符,之后,将父进程命名为rustyncproxy@0.service;子进程命名为rustyncproxy@1.service;这样在热升级的时候通过@后面的参数不同来区分父进程和子进程。
为了保证在网关进程出现意外宕机的时候Systemd能够迅速将其拉起,在一种可能的实施方式中,退出所述父进程后,还可以执行如下步骤:
接收所述父进程退出后的返回值;所述返回值包括第一返回值和第二返回值;若所述返回值为所述第一返回值,则控制所述父进程继续处于退出状态;若所述返回值为所述第二返回值,则拉起所述父进程。
在该可能的实施方式中,父进程退出后会发送返回值,该返回值包括第一返回值和第二返回值,其中,第一返回值可以在父进程正常退出的情况下返回,例如,第一返回值可以为0;第二返回值可以在父进程异常退出的情况下返回,例如,第二返回值可以为异常提示参数,如终止信号情报(SIGTERM)等。
在该步骤中,通过对返回值作区分处理,得到第一返回值和第二返回值,从而使得若父进程正常退出,则控制所述父进程继续处于退出状态,从而使其在热升级的时候不会被反复重启;若父进程异常退出,则根据第二返回值,拉起所述父进程,缓解因意外情况造成的父进程退出的问题。
端口信息中可以包括多种类型的端口信息。在一种可能的实施方式中,所述端口信息包括outbound端口信息和inbound端口信息;利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求,可以按照如下步骤执行:
利用所述子进程根据所述outbound端口信息生成outbound端口,根据所述inbound端口信息生成inbound端口;利用所述子进程根据所述文件描述符信息生成Socket文件;利用所述Socket文件、所述outbound端口和所述inbound端口处理所述服务请求。
在该可能的实施方式中,inbound端口是指网关设备用于接收来自外部网络的数据包的端口。outbound端口是指网关设备用于向外部网络发送数据包的端口。上述两种端口也可以用于进行转发、路由、过滤、安全检查和地址转换等操作,是网关设备的重要组成部分,对于保护内部网络的安全和实现网络通信具有重要作用。
父进程将outbound端口信息、inbound端口信息以及文件描述符信息转移至子进程之后,子进程可基于收到的信息生成自己的outbound端口、inbound端口和Socket文件,从而实现父进程所能实现的部分或全部功能。
在该步骤中,端口信息可以包括多种类型的端口信息,具体根据实际需求进行设置,本发明实施例对此不作具体限定。
在父进程退出后,子进程可以在后续的网关热升级过程中作为新的父进程,向新的子进程进行转移端口信息和文件描述符信息。因此,在一种可能的实施方式中,利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求,可以按照如下步骤执行:
接收目标进程的目标服务请求;建立所述子进程与所述目标进程之间的连接;向所述目标进程转移所述端口信息和所述文件描述符信息,以利用所述目标进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
在该可能的实施方式中,在子进程作为后续网关热升级过程中的父进程时,目标进程可以作为新的子进程,目标进程的服务请求可以作为目标服务请求,接收目标进程的目标服务请求,建立所述子进程与所述目标进程之间的连接;向所述目标进程转移所述端口信息和所述文件描述符信息,以利用所述目标进程根据所述端口信息和所述文件描述符信息处理所述服务请求,从而使网关进行不断的进行热升级。
下面以一个具体实施例对该方法的实施进行说明。
参见图3所示的网关热升级方法的示意图,本申请采取的方案是使用双进程共存一段时间来保证socket FD在新进程(即子进程)和老进程(即父进程)之间的传输,从而使得在热升级期间,网络请求不会发生中断。网关的新进程在热升级开始的时候都会尝试去连接(connect)到一个特定的UDS地址,如果老进程存在的话,那么会connect到老进程之前创建的socket文件上,则可以将老进程创建好的inbound、outbound socket FD转移给新进程。如果老进程不存在,则connect不成功,证明是第一次部署网关服务或者存在Unix域套接字(Unix domain socket)通信错误,需要重试和超时策略来保证网关服务能够继续运行下去。
新进程在得到老进程转移过来的inbound、outbound socket FD时会根据这些FD创建新的inbound、outbound socket FD并完成bind,这样新的经过网关的网络请求就会被转移给新的进程来进行服务,而老进程此时并不会立即消亡,其还需要等待之前已经建立完毕的请求得到响应(或者超时)之后才能消亡。上述的新进程可以在后续的热升级中作为父进程与新的子进程进行连接,以及执行优雅退出,进而重复上述的流程步骤。
在上述步骤中,老进程首先要保证在收到新进程connect的时候把FD转移给新进程,然后需要立即停止自身inbound、outbound的socket的connect,保证不要再来新的客户端连接了,这一点可以通过select宏处理退出信号drain和connect异步任务来实现。
其次,老进程需要等待之前已经connect的请求处理完毕,这一点的实现是网关服务为每个请求分配了一个tokio处理任务(类似协程),每个任务会被分配两个异步select宏,第一个select宏是处理客户端提前退出的;第二个select宏是处理退出信号drain的;每一个异步select宏谁先被响应则这个任务会执行相应的任务:退出信号drain的select宏是指当老进程要执行优雅退出时候发出的,相应的处理任务就是等待该请求收到回复或者超时响应之后释放connect连接,这样就实现了之前已经和老进程建立连接的请求需要等待其收到回复或者超时返回。
本发明实施例提供了一种网关热升级方法,该方法能够保证之前已经和老进程建立连接的服务请求需要等待其收到回复或者超时返回,还能保证新的请求去往新进程进行处理,从而实现在网关升级的时候不会中断业务请求或者响应,保障了网关的高可用性和高稳定性。
本发明实施例还请提供了一种网关热升级系统,包括控制模块和处理模块:所述控制模块,用于收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;所述处理模块,用于退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
在本申请实施例中,在收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程之间的连接,基于退出信号执行断开父进程与子进程之间的断开操作,实现对父进程退出过程的控制,从而可以减少服务请求在等待时间内未收到回复,父进程就退出等情况,进一步保证父进程的优雅退出。
在一种可能的实施方式中,还包括生成模块,用于生成所述服务请求的异步处理任务;所述异步处理任务用于断开所述父进程与所述子进程之间的连接;所述控制模块,具体用于:利用异步处理组件执行所述异步处理任务。
在一种可能的实施方式中,所述退出信号由客户端或由服务端发出;所述异步处理组件包括第一处理组件和第二处理组件;所述控制模块具体用于:若先收到所述客户端发出的第一退出信号,则利用所述第一处理组件断开所述父进程与所述子进程之间的连接;若先收到所述服务端发出的第二退出信号,则利用所述第二处理组件断开所述父进程与所述子进程之间的连接。
在一种可能的实施方式中,所述第二退出信号在所述子进程处理完成所述连接请求后或所述连接请求超时响应后发出。
在一种可能的实施方式中,所述处理模块,用于:根据第一识别符识别所述父进程,根据第二识别符识别所述子进程;其中,所述父进程预先在进程管理模块中通过所述第一识别符标记,所述子进程预先在所述进程管理模块中通过所述第二识别符标记;控制所述父进程处于退出状态,以及控制所述子进程处于运行状态。
在一种可能的实施方式中,所述处理模块,还用于:接收所述父进程退出后的返回值;所述返回值包括第一返回值和第二返回值;若所述返回值为所述第一返回值,则控制所述父进程继续处于退出状态;若所述返回值为所述第二返回值,则拉起所述父进程。
在一种可能的实施方式中,所述端口信息包括outbound端口信息和inbound端口信息;所述处理模块,用于:利用所述子进程根据所述outbound端口信息生成outbound端口,根据所述inbound端口信息生成inbound端口;利用所述子进程根据所述文件描述符信息生成Socket文件;利用所述Socket文件、所述outbound端口和所述inbound端口处理所述服务请求。
在一种可能的实施方式中,所述处理模块,还用于:接收目标进程的目标服务请求;建立所述子进程与所述目标进程之间的连接;向所述目标进程转移所述端口信息和所述文件描述符信息,以利用所述目标进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
本发明实施例还提供一种网关,其中,所述网关按照上述的方法步骤进行网关热升级。
本发明实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
本发明实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
参考图4,现将描述可以作为本发明的服务器或用户的电子设备400的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,电子设备400包括计算单元401,其可以根据存储在只读存储器(ROM)402中的计算机程序或者从存储单元408加载到随机访问存储器(RAM)403中的计算机程序,来执行各种适当的动作和处理。在RAM 403中,还可存储设备400操作所需的各种程序和数据。计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
电子设备400中的多个部件连接至I/O接口405,包括:输入单元406、输出单元407、存储单元408以及通信单元409。输入单元406可以是能向电子设备400输入信息的任何类型的设备,输入单元406可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元407可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元408可以包括但不限于磁盘、光盘。通信单元409允许电子设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401的一些示例包括但不限于处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元401执行上文所描述的各个方法和处理。例如,在一些实施例中,前述的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 402和/或通信单元409而被载入和/或安装到电子设备400上。在一些实施例中,计算单元401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行前述的方法。
用于实施本发明实施例的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明实施例的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本发明实施例使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。本发明实施例中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本发明实施例所提供的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的保护范围在此方面不受限制。
“实施例”一词在本说明书中指的是结合实施例描述的具体特征、结构或特性可以包括在本发明的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见。尤其,对于装置、设备、系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
Claims (13)
1.一种网关热升级方法,包括:
收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;
退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
2.根据权利要求1所述的方法,其中,还包括:
生成所述服务请求的异步处理任务;所述异步处理任务用于断开所述父进程与所述子进程之间的连接;
收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接,包括:利用异步处理组件执行所述异步处理任务。
3.根据权利要求2所述的方法,其中,所述退出信号由客户端或由服务端发出;所述异步处理组件包括第一处理组件和第二处理组件;利用异步处理组件执行所述异步处理任务,包括:
若先收到所述客户端发出的第一退出信号,则利用所述第一处理组件断开所述父进程与所述子进程之间的连接;
若先收到所述服务端发出的第二退出信号,则利用所述第二处理组件断开所述父进程与所述子进程之间的连接。
4.根据权利要求3所述的方法,其中,
所述第二退出信号在所述子进程处理完成所述连接请求后或所述连接请求超时响应后发出。
5.根据权利要求1所述的方法,其中,退出所述父进程,包括:
根据第一识别符识别所述父进程,根据第二识别符识别所述子进程;其中,所述父进程预先在进程管理模块中通过所述第一识别符标记,所述子进程预先在所述进程管理模块中通过所述第二识别符标记;
控制所述父进程处于退出状态,以及控制所述子进程处于运行状态。
6.根据权利要求5所述的方法,其中,退出所述父进程后,还包括:
接收所述父进程退出后的返回值;所述返回值包括第一返回值和第二返回值;
若所述返回值为所述第一返回值,则控制所述父进程继续处于退出状态;
若所述返回值为所述第二返回值,则拉起所述父进程。
7.根据权利要求1-6任一项所述的方法,其中,所述端口信息包括outbound端口信息和inbound端口信息;利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求,包括:
利用所述子进程根据所述outbound端口信息生成outbound端口,根据所述inbound端口信息生成inbound端口;
利用所述子进程根据所述文件描述符信息生成Socket文件;
利用所述Socket文件、所述outbound端口和所述inbound端口处理所述服务请求。
8.根据权利要求1-6任一项所述的方法,利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求,包括:
接收目标进程的目标服务请求;
建立所述子进程与所述目标进程之间的连接;
向所述目标进程转移所述端口信息和所述文件描述符信息,以利用所述目标进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
9.一种网关热升级系统,包括控制模块和处理模块:
所述控制模块,用于收到退出信号时,断开服务请求的热升级前的父进程与热升级后的子进程与之间的连接;其中,所述服务请求用于建立热升级后的子进程与热升级前的父进程之间的连接;所述子进程用于在建立所述连接后,接收所述父进程转移的端口信息和文件描述符信息;
所述处理模块,用于退出所述父进程,以及利用所述子进程根据所述端口信息和所述文件描述符信息处理所述服务请求。
10.一种网关,其中,所述网关按照权利要求1-8任一项所述的方法步骤进行网关热升级。
11.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-8任一项所述的方法步骤。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8任一项所述的方法步骤。
13.一种计算机程序产品,其中,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310436793.0A CN116599796A (zh) | 2023-04-17 | 2023-04-17 | 网关、网关热升级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310436793.0A CN116599796A (zh) | 2023-04-17 | 2023-04-17 | 网关、网关热升级方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116599796A true CN116599796A (zh) | 2023-08-15 |
Family
ID=87605320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310436793.0A Pending CN116599796A (zh) | 2023-04-17 | 2023-04-17 | 网关、网关热升级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116599796A (zh) |
-
2023
- 2023-04-17 CN CN202310436793.0A patent/CN116599796A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10802906B2 (en) | Monitoring method and apparatus of server, and storage medium | |
EP2645636B1 (en) | Home gateway, cloud server, and method for communication therebetween | |
WO2019184164A1 (zh) | 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质 | |
US20210240497A1 (en) | Plugin framework to support zero touch management of heterogeneous infrastructure elements across distributed data centers | |
WO2016131172A1 (zh) | 一种更新网络服务描述器nsd的方法及装置 | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
CN107682460B (zh) | 一种分布式存储集群数据通信方法及系统 | |
CN112291298A (zh) | 异构系统的数据传输方法、装置、计算机设备和存储介质 | |
WO2024113582A1 (zh) | 一种多云集群资源共享方法、装置、设备及存储介质 | |
CN114553693B (zh) | 网关升级方法及装置 | |
US10887403B2 (en) | Method for managing connections for data communications | |
CN111212117A (zh) | 一种远程交互的方法和装置 | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
WO2024119861A1 (zh) | 一种区块链节点的部署方法、装置及终端设备 | |
CN111427704B (zh) | 配置指令的远程监控方法、装置、设备及存储介质 | |
CN111901395A (zh) | 多集群切换方法及装置 | |
CN116599796A (zh) | 网关、网关热升级方法及系统 | |
CN103907094A (zh) | 在多主机计算环境下对数据访问的串行化 | |
US7805733B2 (en) | Software implementation of hardware platform interface | |
CN116418791A (zh) | 固件升级方法、固件升级系统、服务器及存储介质 | |
CN113014565B (zh) | 实现防端口扫描的零信任架构及服务端口访问方法和设备 | |
CN113259404B (zh) | 基于tcp/ip协议的工业通信中间件及其使用方法 | |
WO2022220880A1 (en) | Managing a software application | |
WO2022220881A1 (en) | Generating a software application | |
CN115396430A (zh) | 云手机管理方法及系统 |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Wang Zhongjie Inventor after: Shi Wenhao Inventor after: Wang Binbin Inventor after: Wang Tao Inventor before: Wang Zhongjie Inventor before: Shi Wenhao Inventor before: Wang Binbin Inventor before: Si Yun |