CN112506553B - 服务网格的数据面容器的升级方法、装置及电子设备 - Google Patents
服务网格的数据面容器的升级方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112506553B CN112506553B CN202011377129.6A CN202011377129A CN112506553B CN 112506553 B CN112506553 B CN 112506553B CN 202011377129 A CN202011377129 A CN 202011377129A CN 112506553 B CN112506553 B CN 112506553B
- Authority
- CN
- China
- Prior art keywords
- container
- service
- target
- container group
- parameter
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 183
- 230000008569 process Effects 0.000 claims abstract description 107
- 238000012217 deletion Methods 0.000 claims description 11
- 230000037430 deletion Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000002411 adverse Effects 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 5
- 230000002829 reductive effect Effects 0.000 abstract description 4
- 238000007726 management method Methods 0.000 description 44
- 239000003795 chemical substances by application Substances 0.000 description 31
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000005096 rolling process Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例提供了一种服务网格的数据面容器的升级方法、装置及电子设备。方法包括:确定本次需要升级的目标容器组;通过目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,目标代理组件为与管理进程属于同一个数据面容器的代理组件,目标容器组中的数据面容器是目标容器组中用来代理业务容器的请求的容器;管理进程通过热启动方式启动升级数据包。因此,本公开的实施例,不需要重启业务实例和数据面容器,并且可以在业务实例不停服务的情况下进行数据面容器的热升级,从而降低了数据面容器的升级过程对业务正常运行的不良影响。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种服务网格的数据面容器的升级方法、装置及电子设备。
背景技术
服务网格(Service Mesh)带来的核心价值是业务与基础设施层的解耦,使得基础组件可以独立的维护和升级,但如果没有快速升级、滚动革新的能力,网格带来的红利将得不到实现。因此,需要搭建数据面的发布平台,并升级数据面组件。
当前升级数据面版本的方式可以是更新webhook注入的数据面镜像版本,同时将所有服务重新部署,即重新通过webhook注入数据面镜像版本。其中,webhook是一个应用程序编程接口(API)概念,是微服务API的使用范式之一,也被成为反向API,即:前端不主动发送请求,完全由后端推送。但是,webhook的注入只会对新启动的容器组(pod)生效,存量的服务实例不会更新,因此需要重新部署。其中,重启服务将会影响业务的正常运行,重启时间长,并需要提前切走流量来避免下游请求出错。同时webhook注入是全局统一的,无法控制粒度。
此外,K8s支持补丁(patch)的方式更新pod内容器的镜像,则当需要更新数据面边车(sidecar)时,可以为每个pod打patch来更新,从而避免重启pod。但是,该方案虽能避免不重启业务实例,但是patch镜像时需要重新启动数据面容器,需要直接销毁(kill)原数据面容器,再新启动新版本,则无法做到平滑重启的控制。并且,由于数据面是转发请求的,如果重启数据面镜像将导致启动时间内该实例不能对外提供服务,从而导致请求出错。
综上所述,现有技术在对数据面容器升级时,需要重启业务实例或者重启数据面容器,从而影响业务的正常运行。
发明内容
为了解决背景技术中记载的技术问题,本公开实施例提供了一种服务网格的数据面容器的升级方法、装置及电子设备,本公开的技术方案如下:
根据本公开实施例的第一方面,提供了一种服务网格的数据面容器的升级方法,所述方法包括:
确定本次需要升级的目标容器组;
通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器;
所述管理进程通过热启动方式启动所述升级数据包。
可选的,所述确定本次需要升级的目标容器组,包括:
在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
可选的,获取到针对数据面容器的更新配置指示之后,所述方法还包括:
在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
可选的,所述更新配置指示包括预设条件、升级比例和最大并行升级数量,所述最大并行升级数量表示并行升级的容器组的最大数量;
所述根据所述更新配置指示,确定本次需要升级的目标容器组,包括:
获取服务网格中符合所述预设条件的第一容器组;
计算所述第一容器组的数量与所述升级比例的乘积,以作为第一参数;
根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量;
根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
可选的,所述根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,包括:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组,作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,还包括:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
可选的,所述按照所述目标顺序,对所述第一容器组涉及的服务进行轮询之前,所述方法还包括:
将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
可选的,所述更新配置指示中包括数据面版本信息和地址信息;
所述根据所述更新配置指示,确定本次需要升级的目标容器组之后,所述方法还包括:
所述通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,包括:
所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
可选的,所述根据所述更新配置指示,确定本次需要升级的目标容器组之后,所述方法还包括:
将所述目标容器组的标识信息写入所述服务网格的数据库;
所述服务网格的第一控制平面获取所述目标容器组的标识信息,包括:
所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
可选的,所述管理进程通过热启动方式启动所述升级数据包之后,所述方法还包括:
将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
根据本公开实施例的第三方面,提供一种服务网格的数据面容器的升级装置,所述装置包括:
容器组确定模块,被配置为确定本次需要升级的目标容器组;
数据包获取模块,被配置为通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器;
升级模块,被配置为所述管理进程通过热启动方式启动所述升级数据包。
可选的,所述容器组确定模块包括:
容器组确定子模块,被配置为在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
可选的,所述装置还包括:
返回模块,被配置为在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,触发所述容器组获取模块返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
可选的,所述更新配置指示包括预设条件、升级比例和最大并行升级数量,所述最大并行升级数量表示并行升级的容器组的最大数量;
所述容器组确定子模块包括:
第一获取单元,被配置为获取服务网格中符合所述预设条件的第一容器组;
计算单元,被配置为计算所述第一容器组的数量与所述升级比例的乘积,以作为第一参数;
数量确定单元,被配置为根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量;
选择单元,被配置为根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
可选的,所述数量确定单元具体被配置为:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
可选的,所述选择单元具体被配置为:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
可选的,所述选择子模块具体被配置为:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
可选的,所述选择单元还被配置为:
所述选择子模块还被配置为:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
可选的,所述装置还包括:
服务剔除模块,被配置为将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
可选的,所述更新配置指示中包括数据面版本信息和地址信息;
所述数据包获取模块具体被配置为:
控制所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
控制所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
可选的,所述装置还包括:
第一写入模块,被配置为将所述目标容器组的标识信息写入所述服务网格的数据库;
所述数据包获取模块控制所述服务网格的第一控制平面获取所述目标容器组的标识信息时,具体被配置为:
控制所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
可选的,所述装置还包括:
第二写入模块,被配置为将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
根据本公开实施例的第三方面,提供一种电子设备,该电子设备包括:
处理器;
用于存储该处理器可执行指令的存储器;
其中,该处理器被配置为执行所述指令,以实现本公开提供的服务网格的数据面容器的升级方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备实现本公开提供的服务网格的数据面容器的升级方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由电子设备的处理器执行时,使得电子设备能够执行如本公开提供的服务网格的数据面容器的升级方法。
本公开实施例提供的技术方案,确定本次需要升级的目标容器组,然后通过目标容器组中的数据面容器的管理进程,来获取与该管理进程属于同一个数据面容器的代理组件的升级数据包,从而由该管理进程通过热启动方式启动该升级数据包。
由此可见,本公开实施例提供的技术方案,在对数据面容器的升级过程中,业务实例没有重启即业务实例没有停服,同时数据面容器也没有重启,并且本公开实施例提供的技术方案,通过数据面容器的管理进程获取升级数据包,从而不会影响业务实例对外提供服务,并且数据面容器的代理组件自身支持热升级,即升级过程中代理组件不会拒绝响应外部请求。因此,本公开实施例提供的技术方案,不需要重启业务实例和数据面容器,并且可以在业务实例不停服务的情况下进行数据面容器的热升级,从而降低了数据面容器的升级过程对业务正常运行的不良影响。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1是根据一示例性实施例示出的一种服务网格的数据面容器的升级方法的流程图;
图2是根据一示例性实施例示出的另一种服务网格的数据面容器的升级方法的流程图;
图3是根据一示例性实施例示出的一种服务网格的数据面容器的升级装置的框图;
图4是根据一示例性实施例示出的一种电子设备的框图;
图5是根据一示例性实施例示出的另一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
为了解决现有技术在对数据面容器升级时,需要重启业务实例或者重启数据面容器,从而影响业务的正常运行的问题,本公开实施例提供了一种服务网格的数据面容器的升级方法、装置及电子设备。
为了便于理解本公开实施例提供的服务网格的数据面容器的升级方法,首先简要介绍一下服务网格的架构。
其中,服务网格中包括多个服务,每个服务包括多个业务实例(也可称为容器组(pod)),每个pod包括多个容器,同一个pod中的多个容器按照不同的功能进行划分,可以分为数据面容器、业务容器等。即一个pod中有的容器属于数据面容器,有的容器属于业务容器。具体的,数据面容器是用来代理业务容器的请求的容器。
另外,每个数据面容器中设置有管理(agent)进程和代理(envoy)组件。
图1是根据一示例性实施例示出的一种服务网格的数据面容器的升级方法的流程图,如图1所示,方法可以包括以下步骤:
步骤101:确定本次需要升级的目标容器组。
可选的,所述确定本次需要升级的目标容器组,包括:
在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
其中,可以在接收到用户输入的情况下,根据用户输入生成上述更新配置指示,或者每隔预设时间间隔生成一个上述更新配置指示。由此可知,本公开的实施例中,可以根据用户的需求,对服务网格中的数据面容器进行升级,也可以每隔一定时间对服务网格中的数据面容器进行升级。
另外,步骤101的过程,只是确定本次需要升级哪些容器组,并不会不会影响业务实例对外提供服务。
步骤102:通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包。
其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器。
另外,数据面容器中设置有代理(agent)进程,外部请求会首先发送到agent进程,然后由agent进程将外部请求转发给与其属于同一个数据面容器的代理(envoy)组件。而本公开的实施例中,通过数据面容器内部设置的agent进程获取与其属于同一个数据面容器的envoy组件的升级数据包,即agent进程来管理envoy组件的生命周期,从而避免上述步骤102影响业务实例对外提供服务。
步骤103:所述管理进程通过热启动方式启动所述升级数据包。
其中,数据面容器中的envoy组件支持热升级,即升级过程中envoy组件不会拒绝响应外部请求,因此,在步骤103的过程中,不会拒绝响应外部请求。
由上述步骤102和103可知,本公开的实施例中,对数据面容器的升级,即为对数据面容器中的envoy组件的升级。
可选的,获取到针对数据面容器的更新配置指示之后,所述方法还包括:
在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
其中,容器组件的新建、删除、升级,这些事件的发生,都会改变服务网格中各个服务中的容器组件的状态,从而使得这些事件发生后根据更新配置指示确定的本次需要升级的目标容器组的数量及其所处的服务不同,因此,在检测到上述事件中的任意一个事件发生时,都需要返回至上述步骤101中根据更新配置指示,确定需要进行升级的目标容器组的步骤,即重新确定哪些容器组需要进行数据面容器的升级。
另外,容器组的新建、删除、升级,这些时间是实时检测的,因此,本公开的实施例中,对服务网格中的数据面容器的升级过程也是实时变化的,即本公开的实施例中,对服务网格中的数据面容器的升级过程是滚动升级。
由上述可知,本公开的实施例,确定本次需要升级的目标容器组,然后通过目标容器组中的数据面容器的管理进程,来获取与该管理进程属于同一个数据面容器的代理组件的升级数据包,从而由该管理进程通过热启动方式启动该升级数据包。
由此可见,本公开的实施例,在对数据面容器的升级过程中,业务实例没有重启即业务实例没有停服,同时数据面容器也没有重启,并且本公开的实施例中,通过数据面容器的管理进程获取升级数据包,从而不会影响业务实例对外提供服务,并且数据面容器的代理组件自身支持热升级,即升级过程中代理组件不会拒绝响应外部请求。因此,本公开的实施例,不需要重启业务实例和数据面容器,并且可以在业务实例不停服务的情况下进行数据面容器的热升级,从而降低了数据面容器的升级过程对业务正常运行的不良影响。
根据本公开实施例的第二方面,提供了一种服务网格的数据面容器的升级方法,如图2所示,该方法可以包括以下步骤:
步骤201:在获取到针对数据面容器的更新配置指示的情况下,获取所述服务网格中符合预设条件的第一容器组。
其中,可以在接收到用户输入的情况下,根据用户输入生成上述更新配置指示,或者每隔预设时间间隔生成一个上述更新配置指示。由此可知,本公开的实施例中,可以根据用户的需求,对服务网格中的数据面容器进行升级,也可以每隔一定时间对服务网格中的数据面容器进行升级。
另外,上述更新配置指示包括预设条件、升级比例和最大并行升级数量。该升级比例即为符合预设条件的数据面容器组中需要进行数据面容器升级的数据面容器组的占比,最大并行升级数量表示并行升级的容器组的最大数量。
即本公开的实施例中,可以在更新配置指示中通过上述预设条件限定数据面容器的升级范围,通过升级比例限定数据面容器组的升级数量,通过最大并行升级数量限定数据面容器组并行升级的最大数量。
具体的,上述预设条件可以包括服务的标识信息和/或容器组的版本信息,即可以在更新配置指示中指示哪些服务的容器组件需要进行数据面容器的升级,也可以在更新配置指示中指示哪些版本的容器组件需要进行数据面容器的升级。
步骤202:计算所述第一容器组的数量与升级比例的乘积,以作为第一参数。
通过步骤201获取到符合预设条件的第一容器组之后,可以计算第一容器组的数量与更新配置指示中包括的升级比例的乘积。
步骤203:根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量。
可选的,所述根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,包括:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
其中,在获取到更新配置指示时,步骤201中确定出的符合预设条件的第一容器组中某些容器组已经升级或者正在升级,则可以根据第一容器组当前的版本信息、更新的阶段、以及更新配置指示中的预设条件,确定第一容器组中己升级的容器组的第一数量和正在升级的容器组的第二数量。
另外,若上述第一参数小于或等于第一数量与第二数量之和,则表示当前已经满足了更新配置指示的更新要求,则可以结束流程;若第一参数大于第一数量与第二数量之和,则表示还有需要进行数据面升级的容器组,即当前还未满足更新配置指示的要求。
此外,上述更新配置指示中还包括最大并行数量,因此,服务网格中并行进行数据面容器的升级的容器组的最大数量不能超过更新配置指示中所包括的最大并行数量。因此,在第一参数大于第一数量与第二数量之和时,还需要进一步判断上述第二数量(即第一容组中当前正在升级的容器组的数量)与最大并行数量的大小。
具体的,若第二数量大于或等于最大并行数量,则表示当前已经满足了更新配置指示的更新要求,则可以结束流程;若第二数量小于最大并行数量,则表示并行进行数据面容器的升级的容器组还有余量,即当前还未满足更新配置指示的要求。
由上述可知,本公开的实施例,在确定本次需要升级的目标容器组的目标数量时,除了考虑上述第一参数,以及更新配置指示中的最大并行数量,还可结合上述第一容器组中已升级的容器组的第一数量以及正在升级的容器组的第二数量,从而使得本次需要升级的目标容器组的目标数量,既符合更新配置指示的要求,又符合服务网格中容器组的实际状态。
步骤204:根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
另外,步骤201~204的过程,只是确定本次需要升级哪些容器组,并不会不会影响业务实例对外提供服务。
步骤205:通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包。
其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器。
另外,数据面容器中设置有代理(agent)进程,外部请求会首先发送到agent进程,然后由agent进程将外部请求转发给与其属于同一个数据面容器的代理(envoy)组件。而本公开的实施例中,通过数据面容器内部设置的agent进程获取与其属于同一个数据面容器的envoy组件的升级数据包,即agent进程来管理envoy组件的生命周期,从而避免上述步骤204影响业务实例对外提供服务。
步骤206:所述管理进程通过热启动方式启动所述升级数据包。
其中,数据面容器中的envoy组件支持热升级,即升级过程中envoy组件不会拒绝响应外部请求,因此,在步骤205的过程中,不会拒绝响应外部请求。
由上述可知,本公开的实施例,能够在获取到针对数据面容器的更新配置指示的情况下,能够根据获取服务网格中符合该更新配置指示中包括的预设条件的第一容器组,并计算第一容器组的数量与更新配置指示中包括的升级比例的乘积,以作为第一参数,从而根据第一参数以及更新配置指示中包括的最大并行升级数量,确定本次需要升级的容器组的最大数量,以作为目标数量,然后根据目标数量,从第一容器组中选择本次需要升级的目标容器组,进而通过目标容器组中的数据面容器的管理进程,来获取与该管理进程属于同一个数据面容器的代理组件的升级数据包,从而由该管理进程通过热启动方式启动该升级数据包。
由此可见,本公开的实施例,在对数据面容器的升级过程中,业务实例没有重启即业务实例没有停服,同时数据面容器也没有重启,并且本公开的实施例中,通过数据面容器的管理进程获取升级数据包,从而不会影响业务实例对外提供服务,并且数据面容器的代理组件自身支持热升级,即升级过程中代理组件不会拒绝响应外部请求。因此,本公开的实施例,不需要重启业务实例和数据面容器,并且可以在业务实例不停服务的情况下进行数据面容器的热升级,从而降低了数据面容器的升级过程对业务正常运行的不良影响。
其中根据所述目标数量,从第一容器组中选择本次需要升级的目标容器组的具体方式可以采用如下所述的方式一、方式二和方式三中的其中一种。
方式一:可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
由此可见,本公开的实施例,可以采用随机选取的方式,从第一容器组中未进行数据面容器升级的容器组中,选出目标数量的容器组,以作为本次需要升级的目标容器组。
方式二:可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组,作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
其中,目标数量与第一容器组涉及的服务的数量的比值小于或等于预设值,表示本次需要升级的容器组的最大数量较少,对第一容器组涉及的服务轮询一次,并为每个服务分配固定预设数量的容器组升级名额,即可确定出本次哪些容器组需要升级。
例如上述预设值为1,预设数量为1,则目标数量与第一容器组涉及的服务的数量的比值小于或等于1,表示目标数量较少,对第一容器组涉及的服务轮询一次,并从每次遇到的服务中未升级的容器组中选择一个容器组作为目标容器组即可最终确定出本次需要升级哪些容器组。
例如更新配置指示中包括的升级比例为z,上述预设数量为1,上述目标数量为3,上述第一容器组涉及服务A、服务B和服务C三个服务,且这三个服务中包括的容器组的数量分别为y1、y2、y3,则对这三个服务随机进行排序,例如排序为服务A、服务B和服务C,则依次对这三个服务进行轮询。
其中,在遇到服务A时,获取服务A中当前已升级的容器组的数量a1、正在升级的容器组的数量a2,然后计算(a1+a2+1)/y1,并判断(a1+a2+1)/y1是否小于z,若是,则从服务A中未升级的容器组中选出1个容器组,以作为本次需要升级的目标容器组。
接着,遇到服务B时,获取服务B中当前已升级的容器组的数量b1、正在升级的容器组的数量b2,然后计算(b1+b2+1)/y2,并判断(b1+b2+1)/y2是否小于z,若否,则跳过从服务B中选择容器组的步骤,即不从服务B中选择本次需要升级的目标容器组。
最后,遇到服务C时,获取服务C中当前已升级的容器组的数量c1、正在升级的容器组的数量c2,然后计算(c1+c2+1)/y3,并判断(c1+c2+1)/y3是否小于z,若是,则从服务C中未升级的容器组中选出1个容器组,以作为本次需要升级的目标容器组。
至此,完成从服务A、服务B和服务C中选出本次需要升级的目标容器组的过程。此时,还剩余1个容器组的升级名额,则在选出的这2个容器组并行升级完毕后,返回至前述步骤201中,即重新执行本公开实施例提供的服务网格的数据面容器的升级方法,以使得后续可以使用剩余的1个容器组的升级名额。
由上述可知,在本次需要升级的容器组的最大数量较少时,可以采用对服务逐个轮询,为轮询遇到的每个服务分配固定数量的容器组升级名额,并计算每个服务中的升级比例(即每个服务中已经升级的容器组的数量、正在升级的容器组的数量和为其分配的容器组升级名额之和与该服务中容器组的总数量的比值)是否超过更新配置指示中包括的升级比例,从而使得本次需要升级的目标容器组既可以分布于多个服务中,又可以满足更新配置指示中的升级比例要求。
方式三:可选的,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,还包括:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
其中,目标数量与第一容器组涉及的服务的数量的比值大于预设值,表示本次需要升级的容器组的最大数量较多,若为每个服务分配固定预设数量的容器组升级名额,则需要对第一容器组涉及的服务轮询多次,从而会耗费较多时间。而本公开的实施例,在此种情况下,根据第一容器组涉及的服务中各个服务中的容器组的占比,将目标数量的容器组升级名额,分配给各个服务,从而可以只对第一容器组涉及的服务轮询一次,即可确定出本次需要升级哪些容器组。
例如更新配置指示中包括的升级比例为z,上述目标数量为d,上述第一容器组涉及服务A、服务B和服务C三个服务,且这三个服务中包括的容器组的数量分别为y1、y2、y3,则对这三个服务随机进行排序,例如排序为服务A、服务B和服务C,则依次对这三个服务进行轮询。
其中,在遇到服务A时,为其分配[d*y1/(y1+y2+y3)]=s1个容器组升级名额,然后,获取服务A中当前已升级的容器组的数量a1、正在升级的容器组的数量a2,并计算(a1+a2+s1)/y1,并判断(a1+a2+s1)/y1是否小于z,若是,则从服务A中未升级的容器组中选出s1个容器组,以作为本次需要升级的目标容器组,其中,“[]”表示取整运算。
接着,在遇到服务B时,为其分配[d*y2/(y1+y2+y3)]=s2个容器组升级名额,然后,获取服务B中当前已升级的容器组的数量b1、正在升级的容器组的数量b2,并计算(b1+b2+s2)/y2,并判断(b1+b2+s2)/y2是否小于z,若否,则跳过从服务B中选择容器组的步骤,即不从服务B中选择本次需要升级的目标容器组。
最后,在遇到服务C时,为其分配[d*y3/(y1+y2+y3)]=s3个容器组升级名额,然后,获取服务C中当前已升级的容器组的数量c1、正在升级的容器组的数量c2,并计算(c1+c2+s3)/y3,并判断(c1+c2+s3)/y3是否小于z,若是,则从服务C中未升级的容器组中选出s3个容器组,以作为本次需要升级的目标容器组。
至此,完成从服务A、服务B和服务C中选出本次需要升级的目标容器组的过程。此时,还剩余d-s1-s3个容器组的升级名额,则在选出的这s1+s3个容器组并行升级完毕后,返回至前述步骤201中,即重新执行本公开实施例提供的服务网格的数据面容器的升级方法,以使得后续可以使用剩余的d-s1-s3个容器组的升级名额。
由上述可知,在本次需要升级的容器组的最大数量较多时,可以采用对服务逐个轮询,根据第一容器组涉及的服务中各个服务中的容器组的占比,为每个服务分配相应的容器组升级名额,并计算每个服务中的升级比例是否超过更新配置指示中包括的升级比例,从而使得本次需要升级的目标容器组既可以分布于多个容器组中,又可以满足更新配置指示中的升级比例要求。
可选的,所述按照所述目标顺序,对所述第一容器组涉及的服务进行轮询之前,所述方法还包括:
将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
本公开的实施例中,在从第一容器组涉及的服务中选择本次需要升级的目标容器组之前,将上一次已选择过需要升级的容器组的服务剔除,即在上一次选择过需要升级的容器组的服务之外的服务中,选择本次需要升级的容器组,从而使得需要升级的容器组分布于更多的服务中,即使得服务网格中容器组中的数据面容器的升级更加分散。
可选的,所述更新配置指示中包括数据面版本信息和地址信息;
所述通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,包括:
所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
其中,服务网格中可以包括多个控制平面,且每个控制平面可以连接多个容器组,而每个控制平面都可以获取到上述目标容器组的标识信息,从而可以确定出自身所连接的容器组中哪些容器组需要升级,进而可以将数据面版本信息和地址信息发送给这些容器组中的数据面容器,使得这些容器组中数据面容器的管理进程,可以根据该数据面版本信息和地址信息拉取与管理组件属于同一个数据面容器的代理组件的升级包。
可选的,所述根据所述更新配置指示,确定本次需要升级的目标容器组之后,所述方法还包括:
将所述目标容器组的标识信息写入所述服务网格的数据库;
所述服务网格的第一控制平面获取所述目标容器组的标识信息,包括:
所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
其中,确定出本次需要升级的目标容器组之后,可以将这些目标容器组的标识信息写入数据库,从而使得服务网格中的控制平面可以通过读取数据库监听到哪些容器组需要升级,从而可以通知这些目标容器组。
另外,控制平面与数据面容器通过远程过程调用(grpc)长连接通信。
可选的,所述管理进程通过热启动方式启动所述升级数据包之后,所述方法还包括:
将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
其中,将上述目标容器组中的数据面容器升级完之后,将其版本信息写入服务网格的数据库,从而使得服务网格的控制平面可以感知数据面容器的更新状态。
可选的,获取到针对数据面容器的更新配置指示之后,所述方法还包括:
在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,返回获取服务网格中符合所述预设条件的第一容器组的步骤。
其中,容器组件的新建、删除、升级,这些事件的发生,都会改变服务网格中各个服务中的容器组件的状态,从而使得这些事件发生后根据更新配置指示确定的本次需要升级的目标容器组的数量及其所处的服务不同,因此,在检测到上述事件中的任意一个事件发生时,都需要返回至上述步骤201中获取服务网格中符合所述预设条件的第一容器组的步骤,即重新确定哪些容器组需要进行数据面容器的升级。
另外,容器组的新建、删除、升级,这些时间是实时检测的,因此,本公开的实施例中,对服务网格中的数据面容器的升级过程也是实时变化的,即本公开的实施例中,对服务网格中的数据面容器的升级过程是滚动升级。
综上所述,本公开实施例的服务网格的数据面的升级方法的具体实施方式可以如下所述。
首先,预先将热更新的配置定义为k8s的一个crd:envoyUpdate(即更新配置指示),envoyUpdate中包括数据面的版本和地址信息、预设条件、升级比例和最大并行升级数量,其中,预设条件用于指升级的范围。
其次,通过一个热升级的k8s controller,来监听envoyUpdate的配置变更,同时监听集群内pod新建、删除、升级完成的事件,即监听到envoyUpdate的配置变更、pod新建、删除、升级完成,这些事件中的任意一个事件发生时,则执行如下过程:
第一步,从应用程序编程接口服务(apiserver)组件,选择符合envoyUpdate中定义的预设条件的pod,并根据envoyUpdate中定义的升级比例计算需要升级的pod总数updateTotalCount,再根据pod当前的版本信息、更新的阶段、envoyUpdate中的版本信息计算出己更新完成的数量updatedCount和更新中的数量updatingCount。
第二步,在updateTotalCount小于等于updatedCount与updatingCount之和时,表示都已触发更新,则流程结束;否则判断updatingCount是否大于等于envoyUpdate定义的最大并行升级数量,若是则表示已处于最大粒度的更新,本流程结束;否则通过updateTotalCount-updatedCount-updatingCount计算出待升级的pod数量,通过envoyUpdate-updatingCount定义的最大并行升级数量计算本次最多能触发升级的数量,取二者的较小值作为本次需要触发升级的数量。
第三步,在前面选出的符合预设条件的pod中,按预先设置的策略选择本次触发升级的pod,其中,具体选择方式可以参见前述的方式一、方式二和方式三,此处不再赘述。
第四步,确定出本次触发升级的pod后,将这些pod的标识信息写入数据库,则服务网格的控制平面会监听该此变化,并通知这些pod中的数据面容器。
第五步,数据面容器与控制平面通过grpc长连接通信,则当控制平面发现数据库中写入了需要升级的pod的标识信息后,会根据这些标识信息识别自身所连接的pod中哪些pod需要在本次进行升级,从而将envoyUpdate中的数据面版本信息和地址信息,发送给自身所连接的pod中需要在本次进行升级的pod的数据面容器。
第六步,数据面容器内部通过一个agent进程来启动和管理envoy组件的生命周期,则当数据面容器收到控制面平下发的数据面版本信息和地址信息时,agent会根据数据面版本信息和地址信息,拉取新版本的envoy组件,并通过envoy组件的热启动模式启动envoy组件。
第七步,数据面容器更新后,其版本信息也会写入数据库,这样controller会感知更新状态的变化,并开始下一轮滚动更新。
由此可知,上述实施方式中,首先通过集群独立的controller计算出要升级的pod,同时通过控制平面将数据面版本信息和地址信息动态下发给数据面的agent进程,该过程不会影响业务对外提供服务;其次,agent进程和envoy组件在同一个容器内,agent进程根据升级配置拉取最新的envoy组件版本,并通过热启动来启动新版本的envoy组件,该过程中业务实例的容器没有重启即业务实例没有停服,同时数据面的容器也没有重启,并且envoy自身支持热升级,即升级过程中envoy不会拒绝响应外部请求。因此,上述实施方式可以做到在业务实例不停服务的情况下进行数据面的热升级,同时控制升级的范围和比例。
综上所述,本公开实施例提供的服务网格中的数据面的升级方法,可以在业务实例不停服务的情况下进行数据面的热升级,同时实现升级的滚动,并控制升级的比例和升级范围。
此外,需要说明的是,对于服务网格中的数据面容器的升级方法,并不局限于前述描述,例如还可以在pod内新启动一个新版本的数据面sidecar容器,启动后再将老的数据面sidecar去掉,但是,该实现需要修改k8s的源码实现,成本高,不通用。
根据本公开实施例的第三方面,提供了一种服务网格的数据面容器的升级装置,如图3所示,该服务网格的数据面容器的升级装置30包括:
容器组确定模块301,被配置为确定本次需要升级的目标容器组;
数据包获取模块302,被配置为通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器;
升级模块303,被配置为所述管理进程通过热启动方式启动所述升级数据包。
可选的,所述容器组确定模块301包括:
容器组确定子模块3011,被配置为在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
可选的,所述装置还包括:
返回模块304,被配置为在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,触发所述容器组获取模块返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
可选的,所述更新配置指示包括预设条件、升级比例和最大并行升级数量,所述最大并行升级数量表示并行升级的容器组的最大数量;
所述容器组确定子模块3011包括:
第一获取单元30111,被配置为获取服务网格中符合所述预设条件的第一容器组;
计算单元30112,被配置为计算所述第一容器组的数量与所述升级比例的乘积,以作为第一参数;
数量确定单元30113,被配置为根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量;
选择单元30114,被配置为根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
可选的,所述数量确定单元30113具体被配置为:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
可选的,所述选择单元30114具体被配置为:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
可选的,所述选择单元30114具体被配置为:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
可选的,所述选择单元30114还被配置为:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
可选的,所述装置还包括:
服务剔除模块305,被配置为将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
可选的,所述更新配置指示中包括数据面版本信息和地址信息;
所述数据包获取模块302具体被配置为:
控制所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
控制所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
可选的,所述装置还包括:
第一写入模块306,被配置为将所述目标容器组的标识信息写入所述服务网格的数据库;
所述数据包获取模块302控制所述服务网格的第一控制平面获取所述目标容器组的标识信息时,具体被配置为:
控制所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
可选的,所述装置还包括:
第二写入模块307,被配置为将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
由上述可知,本公开的实施例,确定本次需要升级的目标容器组,然后通过目标容器组中的数据面容器的管理进程,来获取与该管理进程属于同一个数据面容器的代理组件的升级数据包,从而由该管理进程通过热启动方式启动该升级数据包。
由此可见,本公开的实施例,在对数据面容器的升级过程中,业务实例没有重启即业务实例没有停服,同时数据面容器也没有重启,并且本公开的实施例中,通过数据面容器的管理进程获取升级数据包,从而不会影响业务实例对外提供服务,并且数据面容器的代理组件自身支持热升级,即升级过程中代理组件不会拒绝响应外部请求。因此,本公开的实施例,不需要重启业务实例和数据面容器,并且可以在业务实例不停服务的情况下进行数据面容器的热升级,从而降低了数据面容器的升级过程对业务正常运行的不良影响。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本公开实施例的第四方面,提供了一种电子设备。参照图4,该电子设备包括:
处理器410;
用于存储所述处理器410可执行指令的存储器420;
其中,所述处理器410被配置为执行所述指令,以实现上述所述的服务网格的数据面容器的升级方法。
根据本公开实施例的第五方面,还提供了一种电子设备。如图5所示,该电子设备500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,电子设备500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在电子设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为电子设备500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述电子设备500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到电子设备500的打开/关闭状态,组件的相对定位,例如所述组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、8G或5G),或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述所述的服务网格的数据面容器的升级方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述方法。可选地,例如,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在本公开实施的又一方面,本公开实施例还提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述所述的服务网格的数据面容器的升级方法。
根据本公开实施例的又一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机实现上述所述的服务网格的数据面容器的升级方法。
在此提供的服务网格的数据面容器的升级方案不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本公开实施例的信息提取方案中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (26)
1.一种服务网格的数据面容器的升级方法,其特征在于,所述方法包括:
确定本次需要升级的目标容器组;
通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器;
所述管理进程通过热启动方式启动所述升级数据包。
2.根据权利要求1所述的服务网格的数据面容器的升级方法,其特征在于,所述确定本次需要升级的目标容器组,包括:
在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
3.根据权利要求2所述的服务网格的数据面容器的升级方法,其特征在于,获取到针对数据面容器的更新配置指示之后,所述方法还包括:
在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
4.根据权利要求2所述的服务网格的数据面容器的升级方法,其特征在于,所述更新配置指示包括预设条件、升级比例和最大并行升级数量,所述最大并行升级数量表示并行升级的容器组的最大数量;
所述根据所述更新配置指示,确定本次需要升级的目标容器组,包括:
获取服务网格中符合所述预设条件的第一容器组;
计算所述第一容器组的数量与所述升级比例的乘积,以作为第一参数;
根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量;
根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
5.根据权利要求4所述的服务网格的数据面容器的升级方法,其特征在于,所述根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,包括:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
6.根据权利要求4所述的服务网格的数据面容器的升级方法,其特征在于,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
7.根据权利要求4所述的服务网格的数据面容器的升级方法,其特征在于,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,包括:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组,作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
8.根据权利要求7所述的服务网格的数据面容器的升级方法,其特征在于,所述根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组,还包括:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
9.根据权利要求7或8所述的服务网格的数据面容器的升级方法,其特征在于,所述按照所述目标顺序,对所述第一容器组涉及的服务进行轮询之前,所述方法还包括:
将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
10.根据权利要求2所述的服务网格的数据面容器的升级方法,其特征在于,所述更新配置指示中包括数据面版本信息和地址信息;所述通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,包括:
所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
11.根据权利要求10所述的服务网格的数据面容器的升级方法,其特征在于,所述根据所述更新配置指示,确定本次需要升级的目标容器组之后,所述方法还包括:
将所述目标容器组的标识信息写入所述服务网格的数据库;
所述服务网格的第一控制平面获取所述目标容器组的标识信息,包括:
所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
12.根据权利要求1所述的服务网格的数据面容器的升级方法,其特征在于,所述管理进程通过热启动方式启动所述升级数据包之后,所述方法还包括:
将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
13.一种服务网格的数据面容器的升级装置,其特征在于,所述装置包括:
容器组确定模块,被配置为确定本次需要升级的目标容器组;
数据包获取模块,被配置为通过所述目标容器组中的数据面容器中的管理进程,获取目标代理组件的升级数据包,其中,所述目标代理组件为与所述管理进程属于同一个数据面容器的代理组件,所述目标容器组中的数据面容器是所述目标容器组中用来代理业务容器的请求的容器;
升级模块,被配置为所述管理进程通过热启动方式启动所述升级数据包。
14.根据权利要求13所述的服务网格的数据面容器的升级装置,其特征在于,所述容器组确定模块包括:
容器组确定子模块,被配置为在获取到针对数据面容器的更新配置指示的情况下,根据所述更新配置指示,确定本次需要升级的目标容器组。
15.根据权利要求14所述的服务网格的数据面容器的升级装置,其特征在于,所述装置还包括:
返回模块,被配置为在检测到容器组的新建、删除、升级完成中的其中一个事件发生时,触发所述容器组获取模块返回根据所述更新配置指示,确定本次需要升级的目标容器组的步骤。
16.根据权利要求14所述的服务网格的数据面容器的升级装置,其特征在于,所述更新配置指示包括预设条件、升级比例和最大并行升级数量,所述最大并行升级数量表示并行升级的容器组的最大数量;
所述容器组确定子模块包括:
第一获取单元,被配置为获取服务网格中符合所述预设条件的第一容器组;
计算单元,被配置为计算所述第一容器组的数量与所述升级比例的乘积,以作为第一参数;
数量确定单元,被配置为根据所述第一参数和所述最大并行升级数量,确定本次需要升级的目标容器组的最大数量,以作为目标数量;
选择单元,被配置为根据所述目标数量,从所述第一容器组中选择本次需要升级的目标容器组。
17.根据权利要求16所述的服务网格的数据面容器的升级装置,其特征在于,所述数量确定单元具体被配置为:
获取所述第一容器组中当前已升级的容器组的第一数量以及正在升级的容器组的第二数量;
计算所述第一数量与所述第二数量之和,以作为第二参数;
在所述第一参数小于或等于所述第二参数的情况下,或者,在所述第一参数大于所述第二参数,且所述第二数量大于或等于所述最大并行升级数量的情况下,结束流程;
在所述第一参数大于所述第二参数,且所述第二数量小于所述最大并行升级数量的情况下,计算所述最大并行数量与所述第二数量之差,以作为第三参数,并计算所述第一参数与所述第二参数之差,以作为第四参数;
将所述第三参数和所述第四参数中的较小的一者,作为本次需要升级的容器组的最大数量。
18.根据权利要求16所述的服务网格的数据面容器的升级装置,其特征在于,所述选择单元具体被配置为:
从所述第一容器组中未升级的容器组中随机选出所述目标数量的容器组,以作为本次需要升级的目标容器组。
19.根据权利要求16所述的服务网格的数据面容器的升级装置,其特征在于,所述选择单元具体被配置为:
对所述第一容器组涉及的服务随机进行排序,得到目标顺序;
在所述目标数量与所述第一容器组涉及的服务的数量的比值小于或等于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及预设数量之和,以作为第五参数,其中,所述第一服务为所述第一容器组涉及的服务中的任意一个服务;
在所述第五参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述预设数量的容器组作为本次需要升级的目标容器组;
在所述第五参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止,或者直到选出的本次需要升级的目标容器组的数量达到所述目标数量为止。
20.根据权利要求19所述的服务网格的数据面容器的升级装置,其特征在于,所述选择单元还被配置为:
在所述目标数量与所述第一容器组涉及的服务的数量的比值大于预设值的情况下,按照所述目标顺序,对所述第一容器组涉及的服务进行轮询,在遇到每一个服务时,执行如下过程:
计算所述第一服务中的容器组的总数量与所述第一容器组涉及的服务中的容器组的总数量的比值,以作为第六参数;
计算所述第六参数与所述目标数量的乘积,并对所述乘积取整,以作为第七参数;
计算所述第一服务中当前已升级的容器组的数量、正在升级的容器组的数量以及所述第七参数之和,以作为第八参数;
在所述第八参数与所述第一服务中的容器组的总数量的比值小于或等于所述升级比例的情况下,从所述第一服务中未升级的容器组中选出所述第七参数表示的数量的容器组,作为本次需要升级的目标容器组;
在所述第八参数与所述第一服务中的容器组的总数量的比值大于所述升级比例的情况下,轮询下一个服务;
直到所述第一容器组涉及的服务轮询完毕为止。
21.根据权利要求19或20所述的服务网格的数据面容器的升级装置,其特征在于,所述装置还包括:
服务剔除模块,被配置为将所述第一容器组涉及的服务中,上一次已选择过需要升级的容器组的服务剔除。
22.根据权利要求14所述的服务网格的数据面容器的升级装置,其特征在于,所述更新配置指示中包括数据面版本信息和地址信息;
所述数据包获取模块具体被配置为:
控制所述服务网格的第一控制平面获取所述目标容器组的标识信息,其中,所述第一控制平面为所述服务网格中的任意一个控制平面;
控制所述第一控制平面根据所述标识信息,确定所述目标容器组中与所述第一控制平面连接的第二容器组;
所述第一控制平面向所述第二容器组中的数据面容器发送所述数据面版本信息和所述地址信息;
通过所述第二容器组中的数据面容器的管理进程,根据所述数据面版本信息和所述地址信息,获取所述第二容器组中的数据面容器的代理组件的升级数据包。
23.根据权利要求22所述的服务网格的数据面容器的升级装置,其特征在于,所述装置还包括:
第一写入模块,被配置为将所述目标容器组的标识信息写入所述服务网格的数据库;
所述数据包获取模块控制所述服务网格的第一控制平面获取所述目标容器组的标识信息时,具体被配置为:
控制所述第一控制平面读取所述数据库中的所述目标容器组的标识信息。
24.根据权利要求13所述的服务网格的数据面容器的升级装置,其特征在于,所述装置还包括:
第二写入模块,被配置为将所述目标容器组中的数据面容器的版本信息,写入所述服务网格的数据库。
25.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至12中任一项所述的服务网格的数据面容器的升级方法。
26.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够实现如权利要求1至12中任一项所述的服务网格的数据面容器的升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011377129.6A CN112506553B (zh) | 2020-11-30 | 2020-11-30 | 服务网格的数据面容器的升级方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011377129.6A CN112506553B (zh) | 2020-11-30 | 2020-11-30 | 服务网格的数据面容器的升级方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506553A CN112506553A (zh) | 2021-03-16 |
CN112506553B true CN112506553B (zh) | 2024-03-19 |
Family
ID=74968279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011377129.6A Active CN112506553B (zh) | 2020-11-30 | 2020-11-30 | 服务网格的数据面容器的升级方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506553B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134231B (zh) * | 2021-03-17 | 2024-03-08 | 北京搜狗科技发展有限公司 | 一种通信方法、装置和用于通信的装置 |
CN113422700B (zh) * | 2021-06-22 | 2022-04-26 | 汇付天下有限公司 | 无感升级方法及无感升级装置 |
CN114866790B (zh) * | 2022-03-25 | 2024-02-27 | 上海哔哩哔哩科技有限公司 | 直播流调度方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007193429A (ja) * | 2006-01-17 | 2007-08-02 | Ricoh Co Ltd | ネットワークコンピューティングシステム、通信方法、画像投影装置、画像入出力装置および画面データ取得方法 |
CN101621449A (zh) * | 2008-06-30 | 2010-01-06 | 华为技术有限公司 | mesh网络中终端接入和代理更新的方法、装置 |
WO2017171987A1 (en) * | 2016-03-30 | 2017-10-05 | Mcafee, Inc. | System, apparatus and method for performing secure memory training and management in a trusted environment |
CN111552489A (zh) * | 2020-03-31 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 用户态文件系统热升级方法、装置、服务器及介质 |
-
2020
- 2020-11-30 CN CN202011377129.6A patent/CN112506553B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007193429A (ja) * | 2006-01-17 | 2007-08-02 | Ricoh Co Ltd | ネットワークコンピューティングシステム、通信方法、画像投影装置、画像入出力装置および画面データ取得方法 |
CN101621449A (zh) * | 2008-06-30 | 2010-01-06 | 华为技术有限公司 | mesh网络中终端接入和代理更新的方法、装置 |
WO2017171987A1 (en) * | 2016-03-30 | 2017-10-05 | Mcafee, Inc. | System, apparatus and method for performing secure memory training and management in a trusted environment |
CN111552489A (zh) * | 2020-03-31 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 用户态文件系统热升级方法、装置、服务器及介质 |
Non-Patent Citations (2)
Title |
---|
Kubernetes容器云平台多租户方案研究与设计;黄丹池;何震苇;严丽云;林园致;杨新章;;电信科学;20200721(09);全文 * |
基于运营商视角的服务网格技术评测与集成方案;严丽云;杨新章;何震苇;林园致;侯韶新;;电信科学;20200604(06);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112506553A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112506553B (zh) | 服务网格的数据面容器的升级方法、装置及电子设备 | |
CN114484775A (zh) | 空调机的控制方法、数据处理方法、装置及存储介质 | |
CN106708967B (zh) | 页面显示方法及装置 | |
CN108153540B (zh) | 系统升级的方法、装置、终端及存储介质 | |
CN109586951B (zh) | 实施故障转移的方法、装置、电子设备及可读存储介质 | |
CN107463419B (zh) | 应用重启方法、装置及计算机可读存储介质 | |
CN113778687B (zh) | 内存分配信息处理方法、装置、电子设备及存储介质 | |
CN112506700B (zh) | 冲突处理方法、装置、电子设备及存储介质 | |
CN113467854B (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN112883314B (zh) | 一种请求处理方法及装置 | |
CN110209910B (zh) | 索引切换调度方法及调度装置 | |
CN112632184A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113407316A (zh) | 服务调度方法、装置、电子设备及存储介质 | |
CN112631695A (zh) | 一种数据校验方法、装置、电子设备及存储介质 | |
CN112182027B (zh) | 信息查询方法、装置、电子设备及存储介质 | |
CN111625251B (zh) | 一种处理应用实例的方法及装置 | |
CN110990073B (zh) | 一种验证应用程序的定制需求的方法及装置 | |
CN113191792B (zh) | 任务的处理方法、装置、电子设备、存储介质和程序产品 | |
CN111159148B (zh) | 一种配置信息状态管理方法、装置、电子设备及存储介质 | |
CN112506628B (zh) | 代理程序的管理方法、装置、计算机设备及存储介质 | |
CN110995767B (zh) | 一种请求处理方法及装置 | |
CN110311968B (zh) | 流式加载文件的方法、装置及智能设备 | |
CN107463414B (zh) | 应用安装方法及装置 | |
CN107682517B (zh) | 一种通讯录处理方法及装置、存储介质 | |
CN107423164B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |