CN115016824B - 一种服务安全更新方法及相关设备 - Google Patents
一种服务安全更新方法及相关设备 Download PDFInfo
- Publication number
- CN115016824B CN115016824B CN202210950814.6A CN202210950814A CN115016824B CN 115016824 B CN115016824 B CN 115016824B CN 202210950814 A CN202210950814 A CN 202210950814A CN 115016824 B CN115016824 B CN 115016824B
- Authority
- CN
- China
- Prior art keywords
- service
- information
- version
- port information
- instance
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0876—Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供的一种服务安全更新方法及相关设备,通过第一服务信息列表和第二服务信息列表,对服务组件中已更新版本和未更新版本的服务实例的IP端口信息进行区分存储,再结合测试用户的识别检测,可以支持测试用户对已更新版本的服务实例进行线上验收,同时不影响非测试用户对服务组件的正常调用,实现了服务组件的安全更新。
Description
技术领域
本公开涉及微服务技术领域,尤其涉及一种服务安全更新方法及相关设备。
背景技术
随着计算机技术的发展,越来越多的企业选择向微服务进行转型。微服务是一种开发软件的架构和组织方法,其中,软件由通过明确定义的API 进行通信的小型独立服务组成。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新服务功能的上市时间。
当前,在服务对应的服务组件上线一个新版本时,现有的流程是在测试环境中对新版本的服务组件进行测试验收,在验收合格后再将线上环境的服务组件全量更新到新版本。然而,测试环境与线上环境之间存在差异,可能会导致在线上环境的服务组件全量更新到新版本之后,出现在测试环境中未发现的故障和异常,从而影响用户对微服务的正常使用。
因此,如何对微服务进行安全更新,成为本领域技术人员急需解决的技术问题。
发明内容
鉴于上述问题,本公开提供一种克服上述问题或者至少部分地解决上述问题的一种服务安全更新方法及相关设备。技术方案如下:
一种服务安全更新方法,包括:
获得用户端发送的微服务请求,其中,所述微服务请求携带有与所述用户端对应的用户身份标识,所述微服务请求用于请求调用服务组件,所述服务组件包括多个服务实例;
检测所述服务组件的服务状态;
在所述服务状态为灰度发布的情况下,检测所述用户身份标识是否为预设测试用户标识,如果是,则在与所述服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用所述第一IP端口信息获取服务,如果不是,则在与所述服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用所述第二IP端口信息获取服务,其中,所述第一IP端口信息为所述服务组件中已更新版本的第一服务实例对应的IP端口信息,所述第二IP端口信息为所述服务组件中未更新版本的第二服务实例对应的IP端口信息;
在所述利用所述第一IP端口信息获取服务之后,获得所述用户端发送的线上验收信息;
在所述线上验收信息为验收失败的情况下,将所述第一服务实例回滚至与所述第二服务实例相同的版本;
在所述线上验收信息为验收成功的情况下,将所述第二服务实例更新至与所述第一服务实例相同的版本。
可选的,在所述获得用户端发送的微服务请求之前,所述方法还包括:
获得所述服务组件的服务变更通知;
基于所述服务变更通知,向微服务注册中心发送与所述服务组件对应的服务信息获取请求,以使所述微服务注册中信息响应于所述服务信息获取请求,反馈与所述服务组件对应的服务信息,其中,所述服务信息包括所述服务组件中各个服务实例对应的版本信息;
获得所述服务信息;
检测所述服务信息中各个服务实例对应的版本信息是否一致,如果不一致,则将所述服务状态标记为灰度发布,将已更新版本的所述第一服务实例对应的所述第一IP端口信息存储至所述第一服务信息列表中,将未更新版本的所述第二服务实例对应的所述第二IP端口信息存储至所述第二服务信息列表中。
可选的,所述方法还包括:
在检测到所述服务信息中各个服务实例对应的版本信息一致的情况下,将所述服务状态标记为正常发布,将所述服务信息中的各个IP端口信息存储在所述第二服务信息列表中。
可选的,在所述检测所述服务组件的服务状态之后,所述方法还包括:
在所述服务状态为正常发布的情况下,在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务。
可选的,所述在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务,包括:
利用预设负载均衡算法在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,调用与该IP端口信息对应的IP和端口获取服务。
可选的,所述预设负载均衡算法包括:轮询算法、加权轮询算法、最少连接算法、加权最少连接算法、随机算法以及源地址哈希算法。
可选的,所述第一服务实例的版本号大于所述第二服务实例的版本号。
一种服务安全更新装置,包括:微服务请求获得单元、服务状态检测单元、身份标识检测单元、第一服务获取单元、第二服务获取单元、线上验收信息获得单元、版本回滚单元以及版本更新单元,
所述微服务请求获得单元,用于获得用户端发送的微服务请求,其中,所述微服务请求携带有与所述用户端对应的用户身份标识,所述微服务请求用于请求调用服务组件,所述服务组件包括多个服务实例;
所述服务状态检测单元,用于检测所述服务组件的服务状态;
所述身份标识检测单元,用于在所述服务状态为灰度发布的情况下,检测所述用户身份标识是否为预设测试用户标识,如果是,则触发所述第一服务获取单元,如果不是,则触发所述第二服务获取单元;
所述第一服务获取单元,用于在与所述服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用所述第一IP端口信息获取服务;
所述第二服务获取单元,用于在与所述服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用所述第二IP端口信息获取服务,其中,所述第一IP端口信息为所述服务组件中已更新版本的第一服务实例对应的IP端口信息,所述第二IP端口信息为所述服务组件中未更新版本的第二服务实例对应的IP端口信息;
所述线上验收信息获得单元,用于在所述第一服务获取单元利用所述第一IP端口信息获取服务之后,获得所述用户端发送的线上验收信息;
所述版本回滚单元,用于在所述线上验收信息为验收失败的情况下,将所述第一服务实例回滚至与所述第二服务实例相同的版本;
所述版本更新单元,用于在所述线上验收信息为验收成功的情况下,将所述第二服务实例更新至与所述第一服务实例相同的版本。
一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的服务安全更新方法。
一种电子设备,所述电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任一项所述的服务安全更新方法。
借由上述技术方案,本公开提供的一种服务安全更新方法及相关设备,可以获得用户端发送的微服务请求,其中,微服务请求携带有与用户端对应的用户身份标识,微服务请求用于请求调用服务组件,服务组件包括多个服务实例;检测服务组件的服务状态;在服务状态为灰度发布的情况下,检测用户身份标识是否为预设测试用户标识,如果是,则在与服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用第一IP端口信息获取服务,如果不是,则在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用第二IP端口信息获取服务,其中,第一IP端口信息为服务组件中已更新版本的第一服务实例对应的IP端口信息,第二IP端口信息为服务组件中未更新版本的第二服务实例对应的IP端口信息;在利用第一IP端口信息获取服务之后,获得用户端发送的线上验收信息;在线上验收信息为验收失败的情况下,将第一服务实例回滚至与第二服务实例相同的版本;在线上验收信息为验收成功的情况下,将第二服务实例更新至与第一服务实例相同的版本。本公开通过第一服务信息列表和第二服务信息列表,对服务组件中已更新版本和未更新版本的服务实例的IP端口信息进行区分存储,再结合测试用户的识别检测,可以支持测试用户对已更新版本的服务实例进行线上验收,同时不影响非测试用户对服务组件的正常调用,实现了服务组件的安全更新。
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本公开实施例提供的服务安全更新方法的一种实施方式的流程示意图;
图2示出了本公开实施例提供的服务安全更新方法的另一种实施方式的流程示意图;
图3示出了本公开实施例提供的服务安全更新装置的一种结构示意图;
图4示出了本公开实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
现有技术中没有线上验收环节,在测试环境完成验收后的新版本就直接全量更新线上服务,存在一定安全风险,同时,在线上服务更新后又发现问题,再全量回滚,对普通用户的正常使用服务组件也会造成不良影响。针对上述问题,本公开实施例提供了一种服务安全更新方法,可以可以支持测试人员在线上环境验收新版本的服务实例,验收过程中不影响普通用户对服务组件的正常使用,即在线上环境中,测试人员访问的service服务是新版本的服务,普通用户访问的service服务是旧版本的服务。
如图1所示,本公开实施例提供的服务安全更新方法的一种实施方式的流程示意图,该服务安全更新方法可以包括:
S01、获得用户端发送的微服务请求,其中,微服务请求携带有与用户端对应的用户身份标识,微服务请求用于请求调用服务组件,服务组件包括多个服务实例。
其中,微服务是一种开发软件的架构和组织方法,可选的,本公开实施例提供的服务安全更新方法可以应用于SPRING CLOUD体系。
其中,用户端可以是为用户提供微服务功能的电子设备。用户可以通过用户端上的浏览器或与微服务功能提供方提供的应用程序客户端上进行登录,从而生成并发送微服务请求。
可以理解的是,在用户登录后生成的微服务请求可以携带有该用户的用户身份标识。可选的,该用户身份标识可以为用户身份证明(User Identification,UID)。
其中,服务组件为服务提供方在微服务注册中心上注册过的微服务提供组件。服务组件用于响应用户端发送的微服务请求,提供相应的业务服务。服务组件与底层存储服务进行交互,封装有相应的具体业务服务逻辑。
微服务注册中心包括三种角色,分别为服务提供方、服务消费方以及注册中心。服务提供方在启动时向注册中心注册自身服务的服务组件;服务消费方在启动时向注册中心订阅服务;注册中心用于保存服务提供方的注册信息,并在服务提供方节点变更时通知服务消费方。本公开实施例提提供的微服务注册中心可以为SPRING CLOUD EUREKA。SPRINGCLOUD EUREKA是SPRING CLOUD NETFLIX微服务套件中的一部分,它基于NETFLIX EUREKA做了二次封装,主要服务完成微服务架构中的服务治理功能,SPRING CLOUD通过为EUREKA增加了SPRING BOOT风格的自动化配置,我们只需要简单的引入依赖和注解配置就能让SPRING BOOT构建微服务应用轻松地与EUREKA服务治理体系进行整合。
注册中心可以为服务消费方提供WEB服务。通过WEB服务,用户可以通过浏览器访问的服务,直接与用户端进行交互,负责响应用户请求,展示页面。
注册中心可以为服务提供方提供SERVICE服务。通过SERVICE服务可以响应WEB服务的请求,与底层存储服务进行交互,封装具体的业务逻辑。
可以理解的是,通过浏览器发送的微服务请求携带的用户身份标识可以存储在cookie中。通过应用程序客户端发送的微服务请求携带的用户身份标识可以存储在header中。本公开实施例可以针对浏览器和应用程序客户端发送的微服务请求,分别使用相应的解密流程获得该用户身份标识。
可选的,基于图1所示方法,如图2所示,本公开实施例提供的服务安全更新方法的另一种实施方式的流程示意图,在步骤S01之前,该服务安全更新方法还可以包括:
A01、获得服务组件的服务变更通知。
本公开实施例可以通过微服务注册中心订阅服务组件,在该服务组件发生变更之后,获得服务组件的服务变更通知。可以理解的是,由于已经订阅服务组件,因此在服务组件中任一个服务实例的版本改变后,本公开实施例可以通过过微服务注册中心,获得服务组件的服务变更通知。
A02、基于服务变更通知,向微服务注册中心发送与服务组件对应的服务信息获取请求,以使微服务注册中信息响应于服务信息获取请求,反馈与服务组件对应的服务信息,其中,服务信息包括服务组件中各个服务实例对应的版本信息。
A03、获得服务信息。
可以理解的是,服务提供方可以将服务组件的服务信息注册至微服务注册中心。其中,服务信息可以包括IP端口信息和版本信息。其中,IP信息可以包括IP地址和端口信息,版本信息可以包括版本号。版本号随着版本更新呈自然数递增。同一服务组件在微服务注册中心可以同时存在两个不同版本号的版本信息。
本公开实施例通过向微服务注册中心发送服务组件对应的服务信息获取请求,可以获得服务提供方在微服务注册中心注册的该服务组件的服务信息。
A04、检测服务信息中各个服务实例对应的版本信息是否一致,如果不一致,则执行步骤A05,如果一致,则执行步骤A06。
具体的,本公开实施例可以检测服务信息中是否存在服务实例对应的版本信息的版本号不一致的情况,如果存在,则确定服务信息中各个服务实例对应的版本信息不一致,执行步骤A05,如果不存在,则确定服务信息中各个服务实例对应的版本信息一致,执行步骤A06。
A05、将服务状态标记为灰度发布,将已更新版本的第一服务实例对应的第一IP端口信息存储至第一服务信息列表中,将未更新版本的第二服务实例对应的第二IP端口信息存储至第二服务信息列表中。
其中,服务状态用于区分服务组件是否正在进行线上验收操作。可选的,服务状态可以包括灰度发布和正常发布。在服务状态标记为灰度发布的情况下,确定服务组件当前正在进行线上验收操作。在服务状态标记为正常发布的情况下,确定服务组件当前未进行线上验收操作。
可以理解的是,本公开实施例在底层逻辑上可以设置服务状态的指标字段,并分别设置灰度发布和正常发布对应的字段值。本公开实施例可以通过修改服务状态的指标字段对应的字段值,实现灰度发布或正常发布的标记。
可选的,第一服务实例的版本号大于第二服务实例的版本号。可以理解的是,在两个版本号的比较中,版本号大的为新版本,版本号小的为旧版本。在本公开实施例中,第一服务实例为新版本的服务实例,第二服务实例为旧版本的服务实例。
本公开实施例可以预先创建第一服务信息列表和第二服务信息列表。将新版本的服务实例对应的第一IP端口信息存储至第一服务信息列表中,将旧版本的服务实例对应的第二IP端口信息存储至第二服务信息列表中。
可以理解的是,第一服务信息列表中存储的第一IP端口信息主要用于测试用户对新版本的服务实例的线上验收。第二服务信息列表中存储的第二IP端口信息主要用于非测试用户对服务组件的正常调用。
本公开实施例通过第一服务信息列表和第二服务信息列表对新版本和旧版本的服务实例对应的IP端口信息进行区分存储,可以方便测试用户使用新版本的服务实例对应的IP端口信息,对新版本的服务实例进行线上验收操作,并在新版本的服务实例线上验收的同时,不影响非测试用户使用旧版本的服务实例对应的IP端口信息对服务组件进行正常调用,避免对新版本的服务实例的线上验收造成微服务中断,保证服务组件可使用的持续性,提高客户对服务组件提供的微服务的满意度。
可选的,已更新版本的第一服务实例可以是经过测试环境下验收通过的服务实例。
A06、将服务状态标记为正常发布,将服务信息中的各个IP端口信息存储在第二服务信息列表中。
可以理解的是,本公开实施例可以在检测到服务信息中的服务实例对应的版本信息的版本号一致的情况下,确定该服务组件中的各服务实例不存在新旧版本的区别,同时确定服务组件当前未进行线上验收操作,此时可以将服务信息中的各个IP端口信息存储在第二服务信息列表中。
本公开实施例在服务信息中的服务实例对应的版本信息的版本号一致的情况下,通过将服务信息中的各个IP端口信息存储在第二服务信息列表中,使得测试用户或非测试用户都可以使用到第二服务信息列表中的IP端口信息获取服务。
本公开实施例通过设置服务组件的服务状态,可以对服务组件当前是否正在进行线上验收操作进行区分,在服务组件当前正在进行线上验收操作的情况下,使用第一服务信息列表和第二服务信息列表对新版本和旧版本的服务实例对应的IP端口信息进行区分存储,即保证了新版本的服务实例的线上验收,又不影响服务组件的正常功能。
S02、检测服务组件的服务状态。
本公开实施例可以通过检测服务组件的服务状态,确定服务组件是否正在进行线上验收操作,从而确认是否需要确认检测测试用户标识。
可选的,本公开实施例可以在服务状态为正常发布的情况下,在与服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务。
可以理解的是,本公开实施例可以在服务状态为正常发布的情况下,确定服务组件当前未进行线上验收操作,由于服务组件中的各个服务实例对应的IP端口信息均存储在第二服务信息列表中,因此可以从第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务。
可选的,本公开实施例可以利用预设负载均衡算法在与服务组件对应的第二服务信息列表中选择一个IP端口信息,调用与该IP端口信息对应的IP和端口获取服务。本公开实施例利用负载均衡算法,可以调用负载合适的IP和端口获取服务,提高服务获取的速度和质量,提升用户对微服务的满意度。
可选的,预设负载均衡算法包括:轮询(Round Robin)算法、加权轮询(WeightedRound Robbin)算法、最少连接(Least Connections)算法、加权最少连接(Weighted LeastConnection)算法、随机(Random)算法以及源地址哈希算法(IP Hash)。
S03、在服务状态为灰度发布的情况下,检测用户身份标识是否为预设测试用户标识,如果是,则执行步骤S04,如果不是,则执行步骤S05。
其中,本公开实施例可以预先将各测试用户的用户身份标识标记为测试用户标识。本公开实施例可以将用户身份标识在各预设测试用户标识中进行比对,确定是否存在与该用户身份标识相同的预设测试用户标识,如果存在,则确定该用户身份标识为预设测试用户标识,如果不存在,则确定该用户身份标识为非测试用户标识。
可选的,预设测试用户标识可以是在金丝雀(Canary)测试下的线上功能验收期间,用于验收并访问新版本服务的测试用户的金丝雀标识。
S04、在与服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用第一IP端口信息获取服务,其中,第一IP端口信息为服务组件中已更新版本的第一服务实例对应的IP端口信息。
在确定用户身份标识为预设测试用户标识的情况下,可以确认用户端的操作者是测试用户,该测试用户正在对已更新版本的第一服务实例进行线上功能测试。由于第一服务实例对应的第一IP端口信息存储在第一服务信息列表中,因此,本公开实施例可以从第一服务信息列表中选择一个第一IP端口信息,并利用该第一IP端口信息获取服务,以帮助测试用户对已更新版本的第一服务实例进行线上功能测试。
可选的,本公开实施例可以利用预设负载均衡算法在第一服务信息列表中选择一个第一IP端口信息,调用与该第一IP端口信息对应的IP和端口获取服务。本公开实施例利用预设负载均衡算法,可以调用负载合适的IP和端口获取服务,提高服务实例线上功能测试的速度和效率,缩短整体线上功能测试的时间。
S05、在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用第二IP端口信息获取服务,其中,第二IP端口信息为服务组件中未更新版本的第二服务实例对应的IP端口信息。
在确定用户身份标识不为预设测试用户标识的情况下,可以确认用户端的操作者为非测试用户,即请求使用相应的微服务功能的普通用户。该非测试用户正在请求使用相应的微服务功能。由于第一服务信息列表中存储的是未经线上验收的第一服务实例对应的第一IP端口信息,因此需要避免非测试用户调用与该第一IP端口信息对应的IP和端口获取服务,防止对非测试用户正常使用微服务功能造成不良影响。由于未更新版本的第二服务实例经过线上验收,且第二服务实例存储在第二服务信息列表中,因此,本公开实施例可以从第二服务信息列表中选择一个第二IP端口信息,并利用该第二IP端口信息获取服务,
可选的,本公开实施例可以利用预设负载均衡算法在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,调用与该第二IP端口信息对应的IP和端口获取服务。本公开实施例利用负载均衡算法,可以调用负载合适的IP和端口获取服务,提高服务获取的速度和质量,提升用户对微服务的满意度。
本公开实施例可以在步骤S04之后,执行步骤S06。可以理解的是,通过第一IP端口信息对应的IP和端口获取服务,可以在实际的线上环境对已更新版本的第一服务实例进行线上功能测试。测试用户可以根据这个服务获取过程和结果,确定测试结果是合格或不合格,并在用户端输入与测试结果对应的线上验收信息。在测试结果为合格的情况下,线上验收信息为验收成功,在测试结果为失败的情况下,线上验收信息为验收失败。
S06、获得用户端发送的线上验收信息。
S07、在线上验收信息为验收失败的情况下,将第一服务实例回滚至与第二服务实例相同的版本。
可以理解的是,在线上验收信息为验收失败的情况下,可以确定第一服务实例在线上环境的功能测试中出现故障或错误,无法提供有效或正确的服务,因此,需要对第一服务实例在线上环境中测试出现的问题进行修复。本公开实施例可以将第一服务实例从新版本回滚至旧版本,待问题修复后再重新执行上述服务安全更新方法的步骤。
本公开实施例通过对第一服务实例从新版本回滚至旧版本,可以将第一服务实例恢复至可提供有效或正确的服务的状态,保障服务组件的正常工作。
S08、在线上验收信息为验收成功的情况下,将第二服务实例更新至与第一服务实例相同的版本。
可以理解的是,在线上验收信息为验收成功的情况下,可以确定第一服务实例在线上环境的功能测试中未出现故障或错误,可以提供有效且正确的服务。本公开实施例可以将未更新版本的第二服务实例也更新到第一服务实例的新版本,完成对服务组件的全量更新。
可以理解的是,在未更新版本的第二服务实例也更新到第一服务实例的新版本的情况下,本公开实施例通过微服务订阅中心会收到服务变更通知,此时服务组件对应的服务信息中各个服务实例对应的版本号均为新版本的版本号,不存在版本信息不一致的情况,此时可以将该服务组件对应的服务状态标记为正常发布,完成服务组件的安全更新。
可选的,本公开实施例提供的服务安全更新方法可以应用于预先构建的服务状态检测器中,由服务状态检测器完成上述任一项服务安全更新方法中的步骤。
本公开提供的一种服务安全更新方法,可以获得用户端发送的微服务请求,其中,微服务请求携带有与用户端对应的用户身份标识,微服务请求用于请求调用服务组件,服务组件包括多个服务实例;检测服务组件的服务状态;在服务状态为灰度发布的情况下,检测用户身份标识是否为预设测试用户标识,如果是,则在与服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用第一IP端口信息获取服务,如果不是,则在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用第二IP端口信息获取服务,其中,第一IP端口信息为服务组件中已更新版本的第一服务实例对应的IP端口信息,第二IP端口信息为服务组件中未更新版本的第二服务实例对应的IP端口信息;在利用第一IP端口信息获取服务之后,获得用户端发送的线上验收信息;在线上验收信息为验收失败的情况下,将第一服务实例回滚至与第二服务实例相同的版本;在线上验收信息为验收成功的情况下,将第二服务实例更新至与第一服务实例相同的版本。本公开通过第一服务信息列表和第二服务信息列表,对服务组件中已更新版本和未更新版本的服务实例的IP端口信息进行区分存储,再结合测试用户的识别检测,可以支持测试用户对已更新版本的服务实例进行线上验收,同时不影响非测试用户对服务组件的正常调用,实现了服务组件的安全更新。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
与上述方法实施例相对应,本公开实施例还提供一种服务安全更新装置,其结构如图3所示,可以包括:微服务请求获得单元100、服务状态检测单元200、身份标识检测单元300、第一服务获取单元400、第二服务获取单元500、线上验收信息获得单元600、版本回滚单元700以及版本更新单元800。
微服务请求获得单元100,用于获得用户端发送的微服务请求,其中,微服务请求携带有与用户端对应的用户身份标识,微服务请求用于请求调用服务组件,服务组件包括多个服务实例。
服务状态检测单元200,用于检测服务组件的服务状态。
身份标识检测单元300,用于在服务状态为灰度发布的情况下,检测用户身份标识是否为预设测试用户标识,如果是,则触发第一服务获取单元400,如果不是,则触发第二服务获取单元500。
第一服务获取单元400,用于在与服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用第一IP端口信息获取服务其中,第一IP端口信息为服务组件中已更新版本的第一服务实例对应的IP端口信息。
第二服务获取单元500,用于在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用第二IP端口信息获取服务,其中,第二IP端口信息为服务组件中未更新版本的第二服务实例对应的IP端口信息。
线上验收信息获得单元600,用于在第一服务获取单元400利用第一IP端口信息获取服务之后,获得用户端发送的线上验收信息。
版本回滚单元700,用于在线上验收信息为验收失败的情况下,将第一服务实例回滚至与第二服务实例相同的版本。
版本更新单元800,用于在线上验收信息为验收成功的情况下,将第二服务实例更新至与第一服务实例相同的版本。
可选的,该服务安全更新装置还可以包括:服务变更通知获得单元、服务信息获取请求发送单元、服务信息获得单元、版本信息检测单元、第一存储单元和第二存储单元。
服务变更通知获得单元,用于获得服务组件的服务变更通知。
服务信息获取请求发送单元,用于基于服务变更通知,向微服务注册中心发送与服务组件对应的服务信息获取请求,以使微服务注册中信息响应于服务信息获取请求,反馈与服务组件对应的服务信息,其中,服务信息包括服务组件中各个服务实例对应的版本信息。
服务信息获得单元,用于获得服务信息。
版本信息检测单元,用于检测服务信息中各个服务实例对应的版本信息是否一致,如果不一致,则触发第一存储单元,如果一致,则触发第二存储单元。
第一存储单元,用于将服务状态标记为灰度发布,将已更新版本的第一服务实例对应的第一IP端口信息存储至第一服务信息列表中,将未更新版本的第二服务实例对应的第二IP端口信息存储至第二服务信息列表中。
第二存储单元,用于将服务状态标记为正常发布,将服务信息中的各个IP端口信息存储在第二服务信息列表中。
可选的,该服务安全更新装置还可以包括:第三服务获取单元。
第三服务获取单元,用于在服务状态检测单元200检测服务组件的服务状态之后,在服务状态为正常发布的情况下,在与服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务。
可选的,该第三服务获取单元,可以具体用于利用预设负载均衡算法在与服务组件对应的第二服务信息列表中选择一个IP端口信息,调用与该IP端口信息对应的IP和端口获取服务。
可选的,预设负载均衡算法包括:轮询算法、加权轮询算法、最少连接算法、加权最少连接算法、随机算法以及源地址哈希算法。
可选的,第一服务实例的版本号大于第二服务实例的版本号。
本公开提供的一种服务安全更新装置,可以获得用户端发送的微服务请求,其中,微服务请求携带有与用户端对应的用户身份标识,微服务请求用于请求调用服务组件,服务组件包括多个服务实例;检测服务组件的服务状态;在服务状态为灰度发布的情况下,检测用户身份标识是否为预设测试用户标识,如果是,则在与服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用第一IP端口信息获取服务,如果不是,则在与服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用第二IP端口信息获取服务,其中,第一IP端口信息为服务组件中已更新版本的第一服务实例对应的IP端口信息,第二IP端口信息为服务组件中未更新版本的第二服务实例对应的IP端口信息;在利用第一IP端口信息获取服务之后,获得用户端发送的线上验收信息;在线上验收信息为验收失败的情况下,将第一服务实例回滚至与第二服务实例相同的版本;在线上验收信息为验收成功的情况下,将第二服务实例更新至与第一服务实例相同的版本。本公开通过第一服务信息列表和第二服务信息列表,对服务组件中已更新版本和未更新版本的服务实例的IP端口信息进行区分存储,再结合测试用户的识别检测,可以支持测试用户对已更新版本的服务实例进行线上验收,同时不影响非测试用户对服务组件的正常调用,实现了服务组件的安全更新。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
所述服务安全更新装置包括处理器和存储器,上述微服务请求获得单元100、服务状态检测单元200、身份标识检测单元300、第一服务获取单元400、第二服务获取单元500、线上验收信息获得单元600、版本回滚单元700以及版本更新单元800等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来通过第一服务信息列表和第二服务信息列表,对服务组件中已更新版本和未更新版本的服务实例的IP端口信息进行区分存储,再结合测试用户的识别检测,可以支持测试用户对已更新版本的服务实例进行线上验收,同时不影响非测试用户对服务组件的正常调用,实现了服务组件的安全更新。
本公开实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述服务安全更新方法。
本公开实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述服务安全更新方法。
如图4所示,本公开实施例提供了一种电子设备1000,电子设备1000包括至少一个处理器1001、以及与处理器1001连接的至少一个存储器1002、总线1003;其中,处理器1001、存储器1002通过总线1003完成相互间的通信;处理器1001用于调用存储器1002中的程序指令,以执行上述的服务安全更新方法。本文中的电子设备可以是服务器、PC、PAD、手机等。
本公开还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有服务安全更新方法步骤的程序。
本公开是参照根据本公开实施例的方法、装置、电子设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、存储器和总线。电子设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在本公开的描述中,需要理解的是,如若涉及术语“上”、“下”、“前”、“后”、“左”和“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的位置或元件必须具有特定方位、以特定的方位构成和操作,因此不能理解为本公开的限制。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本公开的实施例可提供为方法、***或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。
Claims (10)
1.一种服务安全更新方法,其特征在于,包括:
获得用户端发送的微服务请求,其中,所述微服务请求携带有与所述用户端对应的用户身份标识,所述微服务请求用于请求调用服务组件,所述服务组件包括多个服务实例;
检测所述服务组件的服务状态;
在所述服务状态为灰度发布的情况下,检测所述用户身份标识是否为预设测试用户标识,如果是,则在与所述服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用所述第一IP端口信息获取服务,如果不是,则在与所述服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用所述第二IP端口信息获取服务,其中,所述第一IP端口信息为所述服务组件中已更新版本的第一服务实例对应的IP端口信息,所述第二IP端口信息为所述服务组件中未更新版本的第二服务实例对应的IP端口信息;
在所述利用所述第一IP端口信息获取服务之后,获得所述用户端发送的线上验收信息;
在所述线上验收信息为验收失败的情况下,将所述第一服务实例回滚至与所述第二服务实例相同的版本;
在所述线上验收信息为验收成功的情况下,将所述第二服务实例更新至与所述第一服务实例相同的版本。
2.根据权利要求1所述的方法,其特征在于,在所述获得用户端发送的微服务请求之前,所述方法还包括:
获得所述服务组件的服务变更通知;
基于所述服务变更通知,向微服务注册中心发送与所述服务组件对应的服务信息获取请求,以使所述微服务注册中信息响应于所述服务信息获取请求,反馈与所述服务组件对应的服务信息,其中,所述服务信息包括所述服务组件中各个服务实例对应的版本信息;
获得所述服务信息;
检测所述服务信息中各个服务实例对应的版本信息是否一致,如果不一致,则将所述服务状态标记为灰度发布,将已更新版本的所述第一服务实例对应的所述第一IP端口信息存储至所述第一服务信息列表中,将未更新版本的所述第二服务实例对应的所述第二IP端口信息存储至所述第二服务信息列表中。
3.根据权利要求2所述的方法,其特征在于,还包括:
在检测到所述服务信息中各个服务实例对应的版本信息一致的情况下,将所述服务状态标记为正常发布,将所述服务信息中的各个IP端口信息存储在所述第二服务信息列表中。
4.根据权利要求3所述的方法,其特征在于,在所述检测所述服务组件的服务状态之后,所述方法还包括:
在所述服务状态为正常发布的情况下,在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务。
5.根据权利要求4所述的方法,其特征在于,所述在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,利用该IP端口信息获取服务,包括:
利用预设负载均衡算法在与所述服务组件对应的第二服务信息列表中选择一个IP端口信息,调用与该IP端口信息对应的IP和端口获取服务。
6.根据权利要求5所述的方法,其特征在于,所述预设负载均衡算法包括:轮询算法、加权轮询算法、最少连接算法、加权最少连接算法、随机算法以及源地址哈希算法。
7.根据权利要求1所述的方法,其特征在于,所述第一服务实例的版本号大于所述第二服务实例的版本号。
8.一种服务安全更新装置,其特征在于,包括:微服务请求获得单元、服务状态检测单元、身份标识检测单元、第一服务获取单元、第二服务获取单元、线上验收信息获得单元、版本回滚单元以及版本更新单元,
所述微服务请求获得单元,用于获得用户端发送的微服务请求,其中,所述微服务请求携带有与所述用户端对应的用户身份标识,所述微服务请求用于请求调用服务组件,所述服务组件包括多个服务实例;
所述服务状态检测单元,用于检测所述服务组件的服务状态;
所述身份标识检测单元,用于在所述服务状态为灰度发布的情况下,检测所述用户身份标识是否为预设测试用户标识,如果是,则触发所述第一服务获取单元,如果不是,则触发所述第二服务获取单元;
所述第一服务获取单元,用于在与所述服务组件对应的第一服务信息列表中选择一个第一IP端口信息,利用所述第一IP端口信息获取服务;
所述第二服务获取单元,用于在与所述服务组件对应的第二服务信息列表中选择一个第二IP端口信息,利用所述第二IP端口信息获取服务,其中,所述第一IP端口信息为所述服务组件中已更新版本的第一服务实例对应的IP端口信息,所述第二IP端口信息为所述服务组件中未更新版本的第二服务实例对应的IP端口信息;
所述线上验收信息获得单元,用于在所述第一服务获取单元利用所述第一IP端口信息获取服务之后,获得所述用户端发送的线上验收信息;
所述版本回滚单元,用于在所述线上验收信息为验收失败的情况下,将所述第一服务实例回滚至与所述第二服务实例相同的版本;
所述版本更新单元,用于在所述线上验收信息为验收成功的情况下,将所述第二服务实例更新至与所述第一服务实例相同的版本。
9.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的服务安全更新方法。
10.一种电子设备,所述电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至7中任一项所述的服务安全更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210950814.6A CN115016824B (zh) | 2022-08-09 | 2022-08-09 | 一种服务安全更新方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210950814.6A CN115016824B (zh) | 2022-08-09 | 2022-08-09 | 一种服务安全更新方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115016824A CN115016824A (zh) | 2022-09-06 |
CN115016824B true CN115016824B (zh) | 2022-12-13 |
Family
ID=83066354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210950814.6A Active CN115016824B (zh) | 2022-08-09 | 2022-08-09 | 一种服务安全更新方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115016824B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115529346A (zh) * | 2022-09-13 | 2022-12-27 | 北京百度网讯科技有限公司 | 服务变更方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和*** |
CN108319468A (zh) * | 2017-01-16 | 2018-07-24 | 北京京东尚科信息技术有限公司 | 灰度发布方法、装置、***及电子设备 |
CN111443941A (zh) * | 2020-03-27 | 2020-07-24 | 中国平安财产保险股份有限公司 | 灰度发布的方法及装置 |
CN112256296A (zh) * | 2020-09-22 | 2021-01-22 | 上海东普信息科技有限公司 | 基于Weex的快递服务APP更新方法、装置、设备及存储介质 |
CN112596761A (zh) * | 2020-12-15 | 2021-04-02 | 泰康保险集团股份有限公司 | 服务的更新发布方法、装置及相关设备 |
CN113326148A (zh) * | 2021-05-23 | 2021-08-31 | 城家酒店管理有限公司 | 一种基于微服务的数据交互*** |
-
2022
- 2022-08-09 CN CN202210950814.6A patent/CN115016824B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和*** |
CN108319468A (zh) * | 2017-01-16 | 2018-07-24 | 北京京东尚科信息技术有限公司 | 灰度发布方法、装置、***及电子设备 |
CN111443941A (zh) * | 2020-03-27 | 2020-07-24 | 中国平安财产保险股份有限公司 | 灰度发布的方法及装置 |
CN112256296A (zh) * | 2020-09-22 | 2021-01-22 | 上海东普信息科技有限公司 | 基于Weex的快递服务APP更新方法、装置、设备及存储介质 |
CN112596761A (zh) * | 2020-12-15 | 2021-04-02 | 泰康保险集团股份有限公司 | 服务的更新发布方法、装置及相关设备 |
CN113326148A (zh) * | 2021-05-23 | 2021-08-31 | 城家酒店管理有限公司 | 一种基于微服务的数据交互*** |
Also Published As
Publication number | Publication date |
---|---|
CN115016824A (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110874315B (zh) | 测试方法、装置、电子设备和存储介质 | |
CN111177003A (zh) | 一种测试方法、装置、***、电子设备及存储介质 | |
CN108804399B (zh) | 表单的校验方法及装置 | |
CN110992188B (zh) | 交易处理方法、装置及设备 | |
CN109299015A (zh) | 一种软件测试方法、装置及*** | |
CN109783341A (zh) | 回归测试方法和装置 | |
CN115016824B (zh) | 一种服务安全更新方法及相关设备 | |
CN110825399A (zh) | 一种应用程序的部署方法及装置 | |
CN108038039A (zh) | 记录日志的方法及微服务*** | |
CN111026636A (zh) | 一种软件项目的测试方法、装置、设备及存储介质 | |
CN114064475A (zh) | 云原生应用测试方法、装置、设备及存储介质 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN112416725A (zh) | 一种压力测试方法及装置 | |
CN112215593A (zh) | 一种支付方法、装置、服务器及存储介质 | |
CN116756037A (zh) | 异常代码定位***、方法、设备及计算机可读存储介质 | |
CN113869989B (zh) | 一种信息处理方法及装置 | |
CN113342660B (zh) | 文件测试方法、装置、***、电子设备及可读存储介质 | |
US11544166B1 (en) | Data recovery validation test | |
CN115203050A (zh) | 一种服务的依赖关系的确定方法及装置 | |
CN111815401B (zh) | 一种订单流程控制的方法及设备 | |
CN114238352A (zh) | 一种微服务业务处理方法及相关装置 | |
CN111367796B (zh) | 应用程序调试方法及装置 | |
CN111475400A (zh) | 一种业务平台的验证方法及相关设备 | |
CN110874238A (zh) | 一种线上业务更新方法及其装置 | |
CN111258873A (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 |