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

网关升级方法及装置与流程

2022-06-01 17:45:22 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种网关升级方法。本技术同时涉及一种网关升级装置,一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.网关(gateway)又称网间连接器、协议转换器。在具体应用中,网关可以通过安装在网关设备中的网关程序,在网络层以上实现网络互连功能。
3.相关技术中,为了保证网关性能,通常需要对当前运行中的网关程序进行升级。此时,需要停止上述当前运行的网关程序。但是,这样会导致网关程序正在处理的服务请求中断,客户端很可能频繁重启服务请求,容易降低客户端性能。因此,需要提供更加平滑的方案。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种网关升级方法。本技术同时涉及一种网关升级装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的网关升级不够平滑的问题。
5.根据本技术实施例的第一方面,提供了一种网关升级方法,包括:
6.接收包含升级数据的升级指令,基于所述升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,并根据所述第一网关进程与监听端口的绑定,采用重用端口技术,绑定所述第二网关进程与所述监听端口;
7.在所述第二网关进程创建成功后,解除所述第一网关进程与所述监听端口的绑定,并调用所述第一网关进程处理目标服务请求,其中,所述目标服务请求为在所述第二网关进程创建成功前所述第一网关进程接收到的服务请求;
8.在对所述目标服务请求的处理达到预设处理条件的情况下,利用所述第二网关进程替换所述第一网关进程,确定完成升级。
9.根据本技术实施例的第二方面,提供了一种网关升级装置,包括:
10.初始化模块,被配置为接收包含升级数据的升级指令,基于所述升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,并根据所述第一网关进程与监听端口的绑定,采用重用端口技术,绑定所述第二网关进程与所述监听端口;
11.过渡模块,被配置为在所述第二网关进程创建成功后,解除所述第一网关进程与所述监听端口的绑定,并调用所述第一网关进程处理目标服务请求,其中,所述目标服务请求为在所述第二网关进程创建成功前所述第一网关进程接收到的服务请求;
12.升级模块,被配置为在对所述目标服务请求的处理达到预设处理条件的情况下,利用所述第二网关进程替换所述第一网关进程,确定完成升级。
13.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所
述网关升级方法的步骤。
14.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述网关升级方法的步骤。
15.本技术一实施例实现了接收包含升级数据的升级指令,基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,并根据第一网关进程与监听端口的绑定,采用重用端口技术,建立第二网关进程与监听端口的绑定;在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求;在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。这样,本实施例通过重用端口技术,可以保证第二网关进程与监听端口的绑定,不影响第二网关进程与监听端口的绑定。并且,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,可以保证在第二网关创建成功以前,监听端口发送的服务请求可以被第一网关进程正常接收。在此基础上,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。因此,可以保证第一网关进程接收的服务请求,能够被第一网关进程处理,减少进程切换导致的服务请求处理中断。因此,通过上述保证网关升级中服务请求的正常接收以及正常处理,可以减少网关升级引起的服务请求中断,从而提高网关升级的平滑性。可见,本方案可以实现网关的平滑升级。
附图说明
16.图1是本技术一实施例提供的一种网关升级方法的流程图;
17.图2是本技术另一实施例提供的一种网关升级方法的处理流程图;
18.图3是本技术一实施例提供的一种网关升级方法在网关设备中的用例图;
19.图4是本技术一实施例提供的一种网关升级装置的结构示意图;
20.图5是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
21.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
22.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
23.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
24.首先,对本技术一个或多个实施例涉及的名词术语进行解释。
25.超文本传输协议(http,hyper text transfer protocol):用于分布式、协作式和超媒体信息系统的应用层协议,通过http或者https协议请求的资源可以由uri统一资源标识符来标识。其中,https(hyper text transfer protocol over securesocket layer)是指超文本传输安全协议,一种通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护的协议。统一资源标识符是用于标识某一互联网资源名称的字符串。统一资源标识符允许用户对包括用户客户端本地和互联网的资源通过特定的协议进行交互操作。
26.gw:本技术中指网关(gateway)应用程序(app,application),也就是网关进程。gw对外用来接收客户端client的服务请求req以及发送对服务请求的响应resp给客户端client,对内连接服务端,对网关设备内部组件的服务转发或/或接收,起到代理服务的作用。
27.传输控制协议(tcp,transmission control protocol):一种面向连接的基于字节流的传输层协议,http连接建立在tcp之上。
28.reuseport:重用端口技术,可以使多个应用程序使用同一端口来收数据。具体的,reuseport通过套接字复用机制,允许将多个套接字绑定bind在同一个ip地址或者端口对上,这样,就可以实现多个服务与同一个端口的绑定。其中,ip地址(internet protocol address)是指互联网协议地址,又译为网际协议地址。ip地址是ip协议提供的一种统一的地址格式,ip协议为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
29.socket:网络套接字,对网络中不同主机上的应用进程之间进行双向通信的端点的抽象,一种进程间通信的机制,包含了一套网络应用程序接口也就是端口对。
30.协程:比线程粒度更小更灵活的组件,占用空间小,切换性能好,允许执行被挂起与被恢复。进程和线程进程均可以看作在内存中运行的应用程序。每个进程都有该进程独立的一块内存空间,一个进程可以包含多个线程。
31.listen_fd:一种套接字描述符,进程的监听功能可以由与该套接字关联的端口实现。
32.slb(server load balancer):是指对多台应用实例进行流量分发的负载均衡服务。可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。
33.ns(netscaler):一种硬件负载均衡设备,可以实现slb。
34.命令行界面(cli,command-line interface):是指可在用户提示符下键入可执行指令的界面,命令行界面通常不支持鼠标,用户可以通过键盘输入指令,计算机接收到指令后予以执行。
35.bin文件:一种二进制文件,bin文件的用途具体由系统和应用决定。
36.curl(commandline uniform resource locator):curl是一个利用url语法在命令行下工作的文件传输工具,它支持文件上传和下载。
37.初始化进程:也称init进程,是内核启动的第一个用户进程。init进程具有重读
hup信号的特性。因此,对init进程的配置文件进行更改后,不需要再重新启动系统int进程就可以按照更改后的配置文件运行。其中,hup信号是指实现重新加载配置文件功能的信号。
38.web(world wide web):即全球广域网,也称为万维网,是一种基于超文本和http的、全球性的、动态交互的、跨平台的分布式图形信息系统。
39.在具体应用中,可以通过网关服务组件实现网关升级。其中,网关服务组件可以包括:nginx组件、envoy组件、mosn组件。为了便于理解,下面以示例性说明的形式介绍利用上述网关服务组件实现网关升级的具体方式。
40.示例性的,nginx组件是一种由c语言实现的开源网关服务组件,通过nginx组件可以基于当前版本的网关进程与升级版本的网关进程间的继承机制,也就是父子进程的fork,提高网关升级的平滑性。其中,fork是指通过系统调用创建一个与原进程初始参数或者传入的变量可以不同、实现相同功能的进程,针对一个进程进行fork后,系统先给新的进程分配资源,例如存储数据和代码的空间,然后把原进程的所有值都复制到新的进程中。
41.上述通过nginx组件实现的网关升级,虽然无需进行套接字socket文件描述符的迁移和传递,但是,worker进程也就是运行中的网关进程退出会发送关闭连接http connection:close的消息,使得客户端client主动断开与网关进程的连接,从而导致部分网关进程正在处理的服务请求中断,导致平滑性降低。并且,通过nginx组件进行的网关升级需要运维人员人工控制不同网关进程间的继承,不够便捷。并且,通过nginx组件进行的网关升级需要借助命名空间(namespace,标识符的可见范围)组织和重用网关进程的代码。因此,在namespace隔离的应用场景,例如docker容器中,无法通过nginx组件实现网关升级,导致可用性降低。
42.并且,envoy组件是一种由c 语言实现的开源网关服务组件,mosn组件是一种由go语言实现的开源网关服务组件。通过envoy组件或者mosn组件可以进行不同版本的网关进程间listen_fd的拷贝以及传递,从而实现网关升级,是一种单进程多线程下相对平滑的升级机制。但是,需要经历进程间关于listen_fd传递的环节;并且,当前版本的网关进程也就是old envoy会主动发送应用层断链消息,导致服务请求的处理中断。
43.上述通过网关服务组件实现网关升级的方案,通常利用有父子进程的fork、进程间listen_fd的拷贝以及传递实现网关升级,存在容易出错、不够便捷、对服务请求的处理容易中断以及应用场景受限等问题。
44.为提供更加可靠的方案,在本技术中,提供了一种网关升级方法,本技术同时涉及一种网关升级装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
45.在具体应用中,本技术实施例的执行主体可以为安装有网关应用程序的网关设备,该网关设备可以为计算设备,例如,服务器、台式计算机、便携式计算机、网络交换机、路由器、移动终端等等。并且,上述网关设备的形式可以为单个设备、集群等等,这都是合理的。
46.图1示出了本技术一实施例提供的一种网关升级方法的流程图,具体包括以下步骤:
47.s102,接收包含升级数据的升级指令,基于升级数据和当前版本的第一网关进程,
创建升级版本的第二网关进程,并根据第一网关进程与监听端口的绑定,采用重用端口技术,绑定第二网关进程与监听端口。
48.在具体应用中,网关进程通常用于进行客户端和服务端之间信息的传递,可以针对不同的服务端设置不同的网关进程。并且,上述升级指令可以由服务端发送至运行网关进程的网关设备,升级指令的发送时机可以是多种的。下面以示例性描述的形式进行具体说明。
49.示例性的,服务端可以在接收到运维人员发送的升级命令的情况下,或者按照预设周期,查找与升级指令对应的升级数据,生成包含该升级数据的升级指令,发送至网关设备。或者,示例性的,网关设备可以按照预设周期发送版本检测信息至服务端,版本检测信息包含当前版本的网关进程的版本信息;进而服务端根据版本检测信息中的版本信息,确定存在升级版本的情况下,生成包含升级版本对应的升级数据的升级指令,并发送该升级指令至网关设备。任何升级指令的发送时机均可用于本技术,本实施例对此不作限制。
50.在接收到升级指令后,可以提取升级指令中的升级数据,以创建升级版本的第二网关进程。其中,当前版本的第一网关进程是指当前运行中的网关进程,升级版本的第二网关进程是指具有通过升级数据实现的功能的网关进程。例如,第一网关进程的版本信息为版本1.0,第二网关进程的版本信息为1.1,第二网关进程的功能优于第一网关进程,且该更优功能的实现依赖上述升级数据。
51.并且,监听端口是指向网关进程发送服务请求的端口,监听端口可以通过套接字机制,绑定与网关连接的应用端的接口如客户端套接字。这样,应用端通过应用套接字发送服务请求至与应用端套接字绑定的监听端口,监听端口在监听到应用端发送的服务请求的情况下,转发该服务请求至网关进程。其中,应用端可以是多种的。示例性的,应用端可以是与网关连接的客户端、与网关连接的服务端、网关设备中与网关进程存在交互的端口等等。任何可以向网关进程发送服务请求的主体均可作为应用端,本实施例对此不作限制。基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程的方式,具体可以是多种的。根据第一网关进程与监听端口的绑定,采用重用端口技术,建立第二网关进程与监听端口的绑定的方式,具体可以是多种的。为了便于理解和合理布局,后续以可选实施例的形式对创建第二网关进程,以及建立第二网关进程与监听端口的绑定的方式,进行具体说明。
52.s104,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,其中,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务请求。
53.在具体应用中,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务请求。因此,在解除第一网关进程与监听端口的绑定的情况下,第二网关进程创建成功前第一网关进程接收到的服务请求中,很可能存在已经被第一网关处理完成的已完成服务请求。并且,已完成服务请求无需处理。因此,目标服务请求可以包括:第一网关进程未处理完成的目标服务请求。示例性的,解除第一网关进程与监听端口的绑定的情况下,第一网关进程old gw可以继续处理非idle状态的目标服务请求old req,例如目标服务请求为请求网关上传数据或者下载数据,那么此时可以保证仍在上传的数据继续上传,仍在下载的数据继续下载。其中,非idle状态的目标服务请求是指第一网关进程old gw仍在处理的服
务请求,idle状态的目标服务请求是指已经处理完毕不影响本次平滑升级的目标服务请求。
54.另外,为了便于理解和合理布局,后续以可选实施例的形式对在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定的方式,进行具体说明。
55.s106,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。
56.在具体应用中,预设处理条件是指可以保证第一网关进程无需继续处理目标服务请求的条件。因此,在一种可选的实施方式中,上述预设处理条件,具体可以包括:未处理完成的目标服务请求的个数达到个数阈值,或者,对目标服务请求的处理时长达到预设时长阈值。
57.示例性的,未处理完成的目标服务请求的个数达到个数阈值,可以包括:未处理完成的目标服务请求的个数小于个数阈值等于个数阈值。其中,个数阈值可以按照具体应用需求设置,例如,个数阈值可以为0、1、2等等。在一种情况中,可能存在网络性能异常、服务请求处理异常等客观因素,因此,为了保证网关升级的完成,可以在目标服务请求的处理时长达到预设时长阈值的情况下,利用第二网关进程替换第一网关进程,确定完成升级。其中,目标服务请求的处理时长达到预设时长阈值,可以包括:目标服务请求的处理时长等于或者大于预设时长阈值。其中,预设时长预支可以根据具体应用需求进行设置,本实施例对此不作限制。
58.这样,在执行上述步骤s106之前,本技术实施例提供的网关升级方法,还可以包括如下三种示例性描述中的步骤。示例性的,在调用第一网关进程处理目标服务请求的情况下,开始计时;在计时获得的时长达到预设时长阈值的情况下,未完成的目标服务请求均可以继续由第一网关进程处理,直到处理完成,也就是第一网关进程通过判断当前的目标服务请求的数量是否为0,直到所有都处理完成即目标服务请求的数量为0,则第一网关进程可以退出。也就是说,此时可以确定对目标服务请求的处理达到预设处理条件,利用第二网关进程替换第一网关进程。或者,示例性的,统计处理状态为处理中的目标服务请求的个数,在处理状态为处理中的目标服务请求的个数达到个数阈值的情况下,确定对目标服务请求的处理达到预设处理条件。或者,示例性的,在调用第一网关进程处理目标服务请求的情况下,开始计时;在计时获得的时长达到预设时长阈值的情况下,确定对目标服务请求的处理达到预设处理条件。这样,本实施例通过确定对目标服务请求的处理达到预设处理条件,可以减少进程切换导致的服务请求处理中断,以及减少第一网关进程处理中的服务请求处理中断,从而实现保证网关升级的平滑性的效果。
59.并且,利用第二网关进程替换第一网关进程,是指当前版本的网关进程被升级版本的网关进程取代,则网关设备可以通过升级版本的网关进程实现网关的功能,因此,可以确定完成升级。另外,利用第二网关进程替换第一网关进程,确定完成升级的方式,具体可以是多种的。为了便于理解和合理布局,后续以可选实施例的形式,对利用第二网关进程替换第一网关进程,确定完成升级的方式进行具体说明。
60.本技术一实施例通过重用端口技术,可以保证第二网关进程与监听端口的绑定,不影响第二网关进程与监听端口的绑定。并且,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,可以保证在第二网关创建成功以前,监听端口发送的服务请求可
以被第一网关进程正常接收。在此基础上,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。因此,可以保证第一网关进程接收的服务请求,能够被第一网关进程处理,减少进程切换导致的服务请求处理中断。因此,通过上述保证网关升级中服务请求的正常接收以及正常处理,可以减少网关升级引起的服务请求中断,从而提高网关升级的平滑性。
61.并且,本实施例提供的方案,不涉及对命名空间的利用,因此,对docker容器这种命名空间隔离的应用场景友好:可以适用于命名空间隔离的应用场景,可用性提高。并且,本实施例提供的方案无需对套接字描述符进行拷贝以及传递,可以减少无需人工管控可以自动实现网关升级。
62.在一种可选的实施方式中,上述升级数据包括:升级版本的二进制文件,和/或升级版本的配置文件;
63.相应地,上述基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,具体可以包括如下步骤:
64.查找当前版本的第一网关进程的安装目录;
65.复制安装目录下的各文件,得到第二网关进程的安装目录;
66.利用升级版本的二进制文件,和/或升级版本的配置文件,更新第二网关进程的安装目录;
67.创建基于更新后的安装目录下的文件实现运行的进程,获得升级版本的第二网关进程。
68.本实施例通过复制第一网关进程的安装文件创建第二网关进程,可以实现第一网关进程与第二网关进程的解耦,从而提高网关升级的稳定性。
69.在另一种可选的实施方式中,上述升级数据包括:升级版本的二进制文件,和/或升级版本的配置文件;
70.相应地,上述基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,具体可以包括如下步骤:
71.查找当前版本的第一网关进程的安装目录;
72.根据安装目录,将当前版本的二进制文件替换为升级版本的二进制文件,和/或将当前版本的配置文件替换为升级版本的配置文件;
73.创建基于安装目录下的文件实现运行的进程,获得升级版本的第二网关进程。
74.在具体应用中,网关进程的升级对应的优化功能和/或者新增功能,可以通过二进制文件和/或者配置文件实现。因此,上述升级数据可以包括:升级版本的二进制文件,和/或升级版本的配置文件。相应地,上述根据安装目录,将当前版本的二进制文件替换为升级版本的二进制文件,具体可以包括:从安装目录中查找当前版本的二进制文件的安装位置,将该安装位置处的二进制文件替换为升级版本的二进制文件。类似的,根据安装目录,将当前版本的配置文件替换为升级版本的配置文件,具体可以包括:从安装目录中查找当前版本的配置文件的安装位置,将该安装位置处的配置文件替换为升级版本的配置文件。
75.其中,任一文件的安装位置即该文件的存储位置,例如,二进制文件的安装位置可
以为c盘中a文件夹下的b文件夹。示例性的,发布时用第二网关进程new gw的bin文件和配置文件,在原软件也就是第一网关进程的安装目录下,分别替换第一网关进程old gw的bin文件和配置文件。本实施例无需进行复杂的父子进程机制,只需经过简单的文件替换即可创建第二网关进程,可以大大降低网关升级的复杂度,提高网关升级的效率。
76.在一种情况中,针对网关升级的不同状态,可以发送不同的升级状态信息至网关设备。例如,升级状态信息可以包括:启动升级restart、停止升级stop、重新下载reload等等。其中,对于启动升级restart的信息,可以执行本实施例的步骤以创建第二网关进程;对于停止升级stop,则停止执行本技术实施例的步骤;对于重新下载reload的信息,则可以向服务端发送请求重新发送升级数据的信号。另外,上述各升级状态信息发布的具体发送时机可以根据应用需求进行,本实施例对此不作限制。例如,启动升级restart的信息可以包含在上述升级指令中,或者重新发送的升级数据中;停止升级stop和重新下载reload可以在接收到升级指令以后发送,这都是合理的。并且,升级状态信息可以由服务端或者网关设备中管理网关进程的管理进程发出。
77.在一种可选的实施方式中,上述根据第一网关进程与监听端口的绑定,采用重用端口技术,绑定第二网关进程与监听端口,具体可以包括如下步骤:
78.获取第一网关进程与监听端口进行绑定的绑定环境,以及获取第一网关进程的第一监听套接字,查找与第一监听套接字对应的端口套接字;
79.针对第二网关进程,配置绑定环境,在绑定环境中创建第二网关进程的第二监听套接字,并建立第二监听套接字与端口套接字的对应关系,完成第二网关进程与监听端口的绑定。
80.在具体应用中,为了实现第一网关进程与监听端口之间的绑定,通常由监听端口所属计算设备基于监听端口的ip地址或者端口标识,创建端口套接字,利用该端口套接字发送绑定请求至网关设备的端口绑定进程,绑定请求中包含端口套接字描述符;网关设备的端口绑定进程接收到绑定请求的情况下,创建第一网关进程的第一监听套接字,利用端口套接字描述符,建立第一监听套接字与端口套接字的对应关系,也就是绑定第一监听套接字与端口套接字,从而建立第一网关进程与监听端口的绑定。因此,第一网关进程与监听端口进行绑定的绑定环境,是指进行第一网关进程与监听端口的绑定的过程中,所配置的用于创建第一监听套接字、以及建立第一监听套接字与端口套接字的对应关系的配置环境,具体可以为配置文件、存储空间等等环境。这样,本实施例针对第二网关进程,配置绑定环境,并在绑定环境中建立第二监听套接字与端口套接字的对应关系,可以保证第二网关进程的绑定环境与第一网关进程的绑定环境一致,有利于重用端口技术的实现,以及减少绑定环境异常导致的升级不平滑问题。另外,监听端口与应用端的端口绑定的过程,与上述绑定过程类似,区别在于端口不同,以及端口所属的计算设备不同、监听端口与应用端的端口绑定也就是实现网关设备与应用端的连接,上述连接具体可以指超文本传输协议服务http server。
81.示例性的,第二网关进程new gw可以通过socket的reuseport重用端口技术和第一网关进程old gw实现在同一个端口也就是监听端口上的监听,可以对第一网关进程和第二网关进程配置一样的环境,建立第二网关进程同后端例如服务端各业务的连接。并且,在一种情况中,上述第一监听套接字和第二监听套接字,可以采用reuseport技术的热备份模
式进行管理:从创建的n个reuseport技术下的套接字中,确定一个作为当前套接字进行工作,上述n个套接字中余下的作为备份,在当前套接字不再可用的情况,才会从备份中确定一个取代该当前套接字,当前套接字的具体确定方式可以按照应用需求设置。在本技术实施例中,如果采用热备份模式,那么在第一网关进程解除绑定后,第二网关进程可以进行工作。在另一种情况中,上述第一监听套接字和第二监听套接字,可以采用reuseport技术的负载均衡模式进行管理:即上述n个套接字均可以进行工作,当服务请求到来的时候,可以选取一个套接字来处理该服务请求,这样就可以达到负载均衡的目的,降低某一个套接字所属进程的压力。在本技术实施例中,可以在第一网关进程解除绑定前、第二网关进程创建成功、且第二网关进程与监听端口的绑定成功的情况下,采用上述负载均衡模式进行管理。
82.这样,本实施例采用重用端口技术,对端口套接字进行复用,实现第一网关进程和第二网关进程均可以绑定监听端口的端口套接字的效果,保证网关升级过程中第一网关进程和第二网关进程均可以用于处理服务请求,提高升级平滑性。
83.在一种可选的实施方式中、上述解除第一网关进程与监听端口的绑定,具体可以包括如下步骤:
84.发送监听关闭指令至第一网关进程,其中,监听关闭指令用于第一网关进程解除第一网关进程的监听套接字与监听端口的端口套接字的对应关系。
85.在具体应用中,可以采用http路由消息的形式,发送监听关闭指令至第一网关进程,也就是通过http路由消息给第一网关进程old gw发送消息,以让第一网关进程关闭listen_fd。示例性的,可以利用curl发送一个包含监听关闭指令的http请求至第一网关进程,例如“curl-sil-x post http://xxxx:/xxxxxxx/upgrade?signal=1”,从而停止accept new conn,即第一网关进程不再接收服务请求。其中,http路由是指通过一行启动命令或管理脚本或其他管理工具做自动化运维管理,可以提高网关升级的便捷性。并且,可以适用于docker容器的应用场景。的网关程序的平滑升级。关闭listen_fd是指解除第一网关进程的监听套接字与监听端口的端口套接字的对应关系,具体可以是删除该对应关系,从该对应关系中删除其中一个套接字等等。
86.本实施例通过关闭第一网关进程对服务请求的接收,可以避免第一网关进程无法合理退出服务请求处理的情况,进一步保证网关升级的平滑性。
87.在一种可选的实施方式中,在上述解除第一网关进程与监听端口的绑定之前,本技术实施例提供的网关升级方法还可以包括如下步骤:
88.确定第二网关进程是否创建成功,或者,第二网关进程与监听端口的绑定是否成功;
89.若未成功,则调用第一网关进程处理第一服务请求,其中,第一服务请求为通过第一网关进程与监听端口的绑定接收的服务请求。
90.在具体应用中,上述确定第二网关进程与监听端口的绑定是否成功,是指检查是否在reuseport所使用的端口上进行第二网关进程listen_fd套接字的监听,第二网关进程与后端是否成功绑定等。此时,第二网关进程创建失败,或者第二网关进程与监听端口的绑定未能成功建立,则无法由第二网关接收以及处理服务请求。因此,本实施例可以保证若第二网关进程new gw启动过程出错或超时,则可以采用fallback的形式由old gw处理服务请求,进一步减少升级对服务请求处理的影响。
91.在一种可选的实施方式中,在上述解除第一网关进程与监听端口的绑定之后,本技术实施例提供的网关升级方法还可以包括如下步骤:
92.调用第二网关进程处理第二服务请求,其中,第二服务请求为通过第二网关进程与监听端口的绑定接收的服务请求。
93.其中,解除第一网关进程与监听端口的绑定之后,意味着监听端口发送的服务请求无法发送至第一网关进程,也就无需第一网关进程处理。并且,监听端口发送的服务请求可以通过第二网关进程与监听端口的绑定,发送至第二网关进程,进而由第二网关进程接收。也就是说,解除第一网关进程与监听端口的绑定之后,发送至网关设备的服务请求均可看作是第二服务请求。因此,可以调用第二网关进程处理第二服务请求。这样,可以减少服务请求在不同进程间的切换,保证后续第一网关进程与第二网关进程间的平滑切换。并且,在完成升级后服务请求的处理与升级过程中服务请求的处理均无需进行中断、切换,可以进一步提高网关升级的平滑性。
94.为了便于理解,下面以图2为例对本技术图1实施例及图1部分实施例进行整合。如图2所示本技术另一实施例提供的一种网关升级方法的处理流程图,该方法包括如下步骤:
95.s202,接收包含升级数据的升级指令,基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,并根据第一网关进程与监听端口的绑定,采用重用端口技术,绑定第二网关进程与监听端口;
96.s204,确定第二网关进程是否创建成功,或者,第二网关进程与监听端口的绑定是否成功;若未成功,则执行步骤s206,若成功,则执行步骤s208。
97.s206,调用第一网关进程处理第一服务请求,其中,第一服务请求为通过第一网关进程与监听端口的绑定接收的服务请求。
98.s208,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,其中,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务请求;
99.s210,调用第二网关进程处理第二服务请求,其中,第二服务请求为通过第二网关进程与监听端口的绑定接收的服务请求。
100.s212,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。
101.在具体应用中,步骤s210与步骤s212可以同步执行,或者步骤s210在步骤s212之前、且在步骤s208之后执行,以保证第一网关进程与监听端口的绑定解除后,监听端口发送的服务请求可以被正常接收以及处理,进一步保证网关升级的平滑性。本实施例的各步骤与上述图1实施例及图1部分可选实施例中表述相同的步骤相同,具体可以参见上述图1实施例及图1部分可选实施例中表述相同的步骤的描述,在此不再赘述。
102.在一种可选的实施方式中、上述利用第二网关进程替换第一网关进程,确定完成升级,具体可以包括如下步骤:
103.基于第二网关进程,更新初始化进程的配置文件,确定完成升级。
104.在具体应用中,基于第二网关进程,更新初始化进程的配置文件的方式可以是多种的。示例性的,可以利用第二网关进程的配置文件中与第一网关进程的配置文件中不同的内容,更新初始化进程的配置文件中第一网关进程的配置文件。或者,示例性的,可以在
将初始化进程的配置文件中,添加第二网关进程的配置文件。或者,示例性的,可以从初始化进程的配置文件删除第一网关进程的配置文件,替换为第二网关进程的配置文件。示例性的,在一种情况中,可以对第一网关进程进行销毁,以解放资源占用,提高网关性能。本实施例即第一网关进程old gw退出后,第二网关进程new gw被init进程领养,彻底取代第一网关进程old gw,完成平滑升级,从而由第二网关继续服务。
105.下述结合附图3,以本技术提供的网关升级方法在网关设备的应用为例,对网关升级方法进行进一步说明。其中,图3示出了本技术一实施例提供的一种网关升级方法在网关设备中的用例图。其中,网关设备具体可以包括:负载均衡层和网关层。其中,网关层可以采用集群形式;负载均衡层、网关层、后端数据处理层可以提供分布式的服务。网关层采用集群形式提供分布式的服务,则第一网关进程和第二网关进程的数量均可以为多个,具体的,可以是多个网关设备中分别均匀分布多个网关进程,任一网关设备中网关进程的数量可以为一个或者多个。在此基础上,负载均衡设备可以对客户端发送的服务请求以负载均衡的形式进行分配:负载均衡设备将客户端发送的服务请求中的目标服务请求,按照负载均衡的形式发送至第一网关进程,将客户端发送的服务请求中的第二服务请求,按照负载均衡的形式发送至第二网关进程。这样,可以通过负载均衡提高第一网关进程和第二网关进程的性能,提高对服务请求处理的效率,进一步提高网关升级的平滑性。
106.在一种情况中,服务请求的响应由后端实现,例如,服务请求为向后端请求视频下载或者上传视频至后端,那么第一网关进程对目标服务请求进行处理,可以是第一网关进程发送目标服务请求至后端,第二网关进程发送第二服务请求至后端。相应地,后端可以将响应结果反馈至相应的网关进程,由该网关进程转发响应结果至客户端。在一种情况中,网关设备中可以缓存用于响应服务请求的数据,那么可以由网关进程自身利用该数据处理服务请求,例如对于请求下载目标视频的服务请求的处理,可以是网关进程发送运行该网关进程的设备存储的目标视频至作为服务请求来源的客户端。
107.并且,客户端通过与网关层的连接,可以实现与后端数据处理层的交互。客户端具体可以是多种形式的。示例性的,该客户端可以是全球广域网web、应用程序(app,application)、命令行界面等等形式。客户端也可以是作为全球广域网web、应用程序(app,application)、命令行界面载体的计算设备。控制平面具体是指管理网关层级的平面,例如专用的控制服务器、图3所示的后端等等。控制平面可以发送升级指令至负载均衡层和/或网关层。在一种情况中,负载均衡层可以存储接收到的升级指令,以便升级异常的情况下网关层可以直接从传输距离更近的负载均衡层重新获取升级数据,提高升级效率。另外,本实施例可以通过上述本技术图1实施例的步骤,将第一网关进程升级为第二网关进程。并且,在第二网关进程升级失败的情况下,可以返回由第一网关进程继续处理服务请求,即fallback的形式。上述关于升级和升级失败情况下各步骤的具体实现方式可以参见上述图1实施例的描述,在此不再赘述。
108.本技术一实施例通过重用端口技术,可以保证第二网关进程与监听端口的绑定,不影响第二网关进程与监听端口的绑定。并且,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,可以保证在第二网关创建成功以前,监听端口发送的服务请求可以被第一网关进程正常接收。在此基础上,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务,在第二网关进程创建成功后,解除第一网关进程与监听端口的
绑定,并调用第一网关进程处理目标服务请求,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。因此,可以保证第一网关进程接收的服务请求能够被第一网关进程处理,减少进程切换导致的服务请求处理中断。因此,通过上述保证网关升级中服务请求的正常接收以及正常处理,可以减少网关升级引起的服务请求中断,从而提高网关升级的平滑性。并且,本实施例提供的方案,不涉及对命名空间的利用,因此,对docker容器这种命名空间隔离的应用场景友好:可以适用于命名空间隔离的应用场景,可用性提高。并且,本实施例提供的方案无需对套接字描述符进行拷贝以及传递,可以减少无需人工管控可以自动实现网关升级。
109.与上述方法实施例相对应,本技术还提供了网关升级装置实施例,图4示出了本技术一实施例提供的一种网关升级装置的结构示意图。如图4所示,该装置包括:
110.初始化模块402,被配置为接收包含升级数据的升级指令,基于升级数据和当前版本的第一网关进程,创建升级版本的第二网关进程,并根据第一网关进程与监听端口的绑定,采用重用端口技术,绑定第二网关进程与监听端口;
111.过渡模块404,被配置为在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,其中,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务请求;
112.升级模块406,被配置为在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。
113.本技术一实施例通过重用端口技术,可以保证第二网关进程与监听端口的绑定,不影响第二网关进程与监听端口的绑定。并且,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,可以保证在第二网关创建成功以前,监听端口发送的服务请求可以被第一网关进程正常接收。在此基础上,目标服务请求为在第二网关进程创建成功前第一网关进程接收到的服务,在第二网关进程创建成功后,解除第一网关进程与监听端口的绑定,并调用第一网关进程处理目标服务请求,在对目标服务请求的处理达到预设处理条件的情况下,利用第二网关进程替换第一网关进程,确定完成升级。因此,可以保证第一网关进程接收的服务请求,能够被第一网关进程处理,减少进程切换导致的服务请求处理中断。因此,通过上述保证网关升级中服务请求的正常接收以及正常处理,可以减少网关升级引起的服务请求中断,从而提高网关升级的平滑性。
114.在一种可选的实施方式中,初始化模块402,进一步被配置为:
115.获取第一网关进程与监听端口进行绑定的绑定环境,以及获取第一网关进程的第一监听套接字,查找与第一监听套接字对应的端口套接字;
116.采用重用端口技术,建立第二网关进程的第二监听套接字;
117.针对第二网关进程,配置绑定环境,并在绑定环境中建立第二监听套接字与端口套接字的对应关系,完成第二网关进程与监听端口的绑定。
118.在一种可选的实施方式中,过渡模块404,进一步被配置为:
119.发送监听关闭指令至第一网关进程,其中,监听关闭指令用于第一网关进程解除第一网关进程的监听套接字与监听端口的端口套接字的对应关系。
120.在一种可选的实施方式中,升级数据包括:升级版本的二进制文件,和/或升级版本的配置文件;
121.相应地,初始化模块402,进一步被配置为:
122.查找当前版本的第一网关进程的安装目录;
123.根据安装目录,将当前版本的二进制文件替换为升级版本的二进制文件,和/或将当前版本的配置文件替换为升级版本的配置文件;
124.创建基于安装目录下的文件实现运行的进程,获得升级版本的第二网关进程。
125.在一种可选的实施方式中,在解除第一网关进程与监听端口的绑定之前,方法还包括:
126.确定第二网关进程是否创建成功,或者,第二网关进程与监听端口的绑定是否成功;
127.若未成功,则调用第一网关进程处理第一服务请求,其中,第一服务请求为通过第一网关进程与监听端口的绑定接收的服务请求。
128.在一种可选的实施方式中,所述过渡模块404,还被配置为:
129.调用第二网关进程处理第二服务请求,其中,第二服务请求为通过第二网关进程与监听端口的绑定接收的服务请求。
130.在一种可选的实施方式中,预设处理条件,包括:未处理完成的目标服务请求的个数达到个数阈值,或者,对目标服务请求的处理时长达到预设时长阈值。
131.在一种可选的额实施方式中,升级模块406,进一步被配置为:
132.基于第二网关进程,更新初始化进程的配置文件,确定完成升级。
133.上述为本实施例的一种网关升级装置的示意性方案。需要说明的是,该网关升级装置的技术方案与上述的网关升级方法的技术方案属于同一构思,网关升级装置的技术方案未详细描述的细节内容,均可以参见上述网关升级方法的技术方案的描述。
134.图5示出了根据本技术一实施例提供的一种计算设备的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
135.计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(pstn,public switched telephone network)、局域网(lan,local area network)、广域网(wan,wide area network)、个域网(pan,personal area network)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic,network interface controller))中的一个或多个,诸如ieee802.11无线局域网(wlan,wireless local area networks)无线接口、全球微波互联接入(wi-max,worldwide interoperability for microwave access)接口、以太网接口、通用串行总线(usb,universal serial bus)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc,near field communication)接口,等等。
136.在本技术的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
137.计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计
算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
138.其中,处理器520执行所述计算机指令时实现所述的网关升级方法的步骤。
139.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的网关升级方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述网关升级方法的技术方案的描述。
140.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述网关升级方法的步骤。
141.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的网关升级方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述网关升级方法的技术方案的描述。
142.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
143.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。
144.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
145.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
146.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

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

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

相关文献