CN114595069A - 服务下线方法、装置、电子设备及存储介质 - Google Patents
服务下线方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114595069A CN114595069A CN202210462236.1A CN202210462236A CN114595069A CN 114595069 A CN114595069 A CN 114595069A CN 202210462236 A CN202210462236 A CN 202210462236A CN 114595069 A CN114595069 A CN 114595069A
- Authority
- CN
- China
- Prior art keywords
- service
- offline
- service instance
- list
- interface
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供一种服务下线方法、装置、电子设备及存储介质,其中,所述方法包括:根据本公开的一方面,提供了一种服务下线方法,包括:根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;获取所述目标接口的在线服务实例列表和待下线服务实例列表;对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。本方案可以保证服务下线不会对业务流量造成损伤和影响,实现了服务的优雅下线。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种服务下线方法、装置、电子设备及存储介质。
背景技术
CPU、内存、GPU等计算资源一直是业务接口调用管理平台(Platform as aService,PaaS)中十分重要的软硬件计算资源,尤其是服务于企业级的亿万次调用时,业务在高峰期间对资源的使用量通常是平时的好几倍,但是高峰期相对来说比较短暂,为了保证***服务在各种业务高峰、极限情况下的可用性,还要投入大量的机器资源按照高峰期的要求进行部署,这样在低峰期就产生了大量的资源浪费,因此服务伸缩技术应运而生。
目前,相关技术中,利用服务伸缩技术进行扩容时基本都能做到不损伤业务流量,但是在进行缩容时对流量的损伤比较大,很难做到优雅的缩容服务。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种服务下线方法、装置、电子设备及存储介质。
根据本公开的一方面,提供了一种服务下线方法,包括:
根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;
获取所述目标接口的在线服务实例列表和待下线服务实例列表;
对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;
从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
根据本公开的另一方面,提供了一种服务下线装置,包括:
第一确定模块,用于根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;
获取模块,用于获取所述目标接口的在线服务实例列表和待下线服务实例列表;
第二确定模块,用于对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;
转发模块,用于从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
根据本公开的另一方面,提供了一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据前述一方面所述的服务下线方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据前述一方面所述的服务下线方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现前述一方面所述的服务下线方法。
本申请实施例中提供的一个或多个技术方案,通过屏蔽待下线的服务实例,将请求转发到除待下线服务实例外的可用服务实例上进行处理,可以防止后续请求负载到要下线的服务实例上,使得要下线服务实例上的请求处理完成后不会有新的请求进来,从而保证服务下线不会对业务流量造成损伤和影响,实现了服务的优雅下线。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示出了根据本公开一示例性实施例的服务下线方法的流程图;
图2示出了本公开实施例中服务接口与服务实例的关联关系示意图;
图3示出了本公开实施例中对在线服务实例列表和待下线服务实例列表进行差集运算的结果示意图;
图4示出了根据本公开一示例性实施例的待下线服务实例列表的生成过程的流程图;
图5示出了根据本公开示例性实施例的服务下线装置的示意性框图;
图6示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
以下参照附图描述本公开提供的服务下线方法、装置、电子设备及存储介质。
目前,利用现有的服务伸缩技术进行扩容时,基本都能做到不损伤业务流量,但是在进行缩容时,通常是直接强行终止服务,不会判断已有的业务流量是否已完成工作,这对流量的损伤比较大,很难做到优雅的缩容服务。
相关技术中,在Kubernetes的原生场景下,***的最小对象是Pod(微服务单元组)。基于Kubernetes的Pod水平动态伸缩(Horizontal Pod Autoscaler,HPA)技术的做法是:业务服务Pod上需要自己实现metrics接口,Kubernetes通过这个metrics接口可以定时收集监控数据进行计算,然后根据用户在HPA上配置的指标类型和目标阈值与实时数据聚合汇总做比较,符合条件则调用deployment的scale接口调整对应副本数来达到动态伸缩的目的。
然而,上述HPA技术中,Pod的创建与销毁(或称上线与下线)均由Kubernetes自行判断,采用这种技术缩容时,不会判断已有的业务流量是否已完成工作,直接强行终止服务,在业务流量并发量很大的情况下,对业务流量损伤很大。
针对上述问题,本公开提供了一种服务下线方法,通过根据接收到的服务调用请求,确定服务调用请求对应的目标接口,获取目标接口的在线服务实例列表和待下线服务实例列表,再对在线服务实例列表和待下线服务实例列表进行差集运算,确定目标接口的可用服务实例列表,进而从可用服务实例列表中确定目标服务实例,并将服务调用请求转发到目标服务实例,由此,通过屏蔽待下线的服务实例,将请求转发到除待下线服务实例外的可用服务实例上进行处理,可以防止后续请求负载到要下线的服务实例上,使得要下线服务实例上的请求处理完成后不会有新的请求进来,从而保证服务下线不会对业务流量造成损伤和影响,实现了服务的优雅下线。采用本公开的方案,可以做到服务缩容时不损伤业务流量,即使在上百个服务实例缩容的场景下,也不会有任何流量损失,以及能够支持多种服务伸缩方案,例如基于监控指标的动态伸缩、服务的定时伸缩等,并且,本公开的方案无需对服务内部的业务逻辑做修改,对于业务服务本身没有侵入性,集成方便。
图1示出了根据本公开一示例性实施例的服务下线方法的流程图,该方法可以由服务下线装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中,所述电子设备中可以部署PaaS平台,所述PaaS平台包括服务注册中心、网关和监控服务monitorService等多个组成部分,本公开的服务下线方法具体可以应用于Paas平台的网关中,通过各组成部分相互配合实现本公开的方案。
如图1所示,该服务下线方法可以包括以下步骤:
步骤101,根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口。
其中,服务调用请求可以是统一资源定位符(Uniform Resource Locator,URL),URL到来时携带需要调用的服务对应的服务接口地址,根据该服务接口地址可以确定对应的目标接口。
实际应用中,客户对业务接口调用管理平台PaaS发起的服务调用请求都会统一经过平台的网关,由网关根据提前配置好的服务接口与服务实例的路由映射关系,将服务调用请求转发到后端的服务实例上,完成业务流量的分配。
本公开实施例中,当客户向PaaS平台发起服务调用请求,服务调用请求经过PaaS平台的网关时,网关根据接收到的服务调用请求,确定与服务调用请求到来时携带的服务接口地址对应的目标接口。
步骤102,获取所述目标接口的在线服务实例列表和待下线服务实例列表。
本公开实施例中,确定了服务调用请求对应的目标接口之后,可以进一步获取目标接口的在线服务实例列表和待下线服务实例列表。
其中,目标接口的在线服务实例列表中记录的是与目标接口关联的所有在线服务实例,其中包括业务高峰期扩容出来的扩容服务实例,也包括非扩容服务实例;待下线服务实例列表中记录的是即将下线的扩容服务实例,待下线服务实例由PaaS平台的监控服务生成并更新在缓存中间件中,由网关主动获取并缓存到本地缓存中。
本公开实施例中,可以预先建立服务接口与服务实例之间的关联关系,并将建立的关联关系存储到PaaS平台,服务实例可以以IP地址作为服务实例的身份标识(ID)注册到PaaS平台的服务注册中心。能够理解的是,一个服务接口可以对应关联至少一个服务实例。示例性地,图2示出了本公开实施例中服务接口与服务实例的关联关系示意图,如图2所示,服务接口1关联有两个服务实例,分别为服务实例1-1(IP:192.0.0.1)和服务实例1-2(IP:192.0.0.2),服务接口2也关联有两个服务实例,分别为服务实例2-1(IP:192.0.0.3)和服务实例2-2(IP:192.0.0.4)。其中,服务实例1-1和服务实例2-1为非扩容的服务实例,服务实例1-2和服务实例2-2为扩容服务实例,在业务高峰期,通过配置伸缩策略在业务高峰时刻到来时,扩容服务实例被启用。
本公开实施例中,确定了服务调用请求对应的目标接口之后,网关可以从PaaS平台的服务注册中心获取目标接口的在线服务实例列表,在线服务实例列表中记录的服务实例是部分或全部的与目标接口关联的服务实例。网关可以从本地缓存中获取目标接口的待下线服务实例列表。
步骤103,对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表。
本公开实施例中,获取了目标接口的在线服务实例列表和待下线服务实例列表之后,可以对获取的在线服务实例列表和待下线服务实例列表进行差集运算,确定目标接口的可用服务实例列表。
能够理解的是,可用服务实例列表中记录的是目标接口的非扩容服务实例和暂时不需要下线的扩容服务实例。
示例性地,图3示出了本公开实施例中对在线服务实例列表和待下线服务实例列表进行差集运算的结果示意图,如图3所示,目标接口的在线服务实例列表中记录的服务实例有服务实例1(IP:192.0.0.5)、服务实例2(IP:192.0.0.6)、服务实例3(IP:192.0.0.7)和服务实例4(IP:192.0.0.8),目标接口的待下线服务实例列表中记录的待下线服务实例为服务实例4(IP:192.0.0.8),则对二者进行差集运算,可以得到目标接口的可用服务实例列表,如图3所示,目标接口的可用服务实例列表中包括三个可用的服务实例,分别为服务实例1(IP:192.0.0.5)、服务实例2(IP:192.0.0.6)和服务实例3(IP:192.0.0.7)。
步骤104,从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
本公开实施例中,网关确定了目标接口的可用服务实例列表之后,可以从可用服务实例列表中确定出目标服务实例,将接收的服务调用请求转发至目标服务实例,由目标服务实例对服务调用请求进行处理。
示例性地,网关从可用服务实例列表中确定目标服务实例时,可以根据轮询策略从可用服务实例列表中确定出一个服务实例作为目标服务实例。通过轮询策略确定目标服务实例来处理本次接收的服务调用请求,有利于保证各服务实例之间的负载均衡。
示例性地,网关从可用服务实例列表中确定目标服务实例时,可以通过随机选择的方式,可用服务实例列表中选择出一个服务实例作为目标服务实例。
能够理解的是,本公开实施例中,通过在网关处屏蔽要下线的服务实例,将接收到的服务调用请求转发至可用的服务实例上,防止了将后续请求负载到要下线的服务实例上,由此,在经过一段时间(等待待下线服务实例上的请求处理完)后,保证待下线服务实例上正在处理的请求完成工作,没有新的请求进来,就可以让扩容的待下线服务实例正常下线了,由此,不会对业务流量造成损伤,实现了服务实例的优雅下线。
本公开实施例的服务下线方法,通过根据接收到的服务调用请求,确定服务调用请求对应的目标接口,获取目标接口的在线服务实例列表和待下线服务实例列表,再对在线服务实例列表和待下线服务实例列表进行差集运算,确定目标接口的可用服务实例列表,进而从可用服务实例列表中确定目标服务实例,并将服务调用请求转发到目标服务实例,由此,通过屏蔽待下线的服务实例,将请求转发到除待下线服务实例外的可用服务实例上进行处理,可以防止后续请求负载到要下线的服务实例上,使得要下线服务实例上的请求处理完成后不会有新的请求进来,从而保证服务下线不会对业务流量造成损伤和影响,实现了服务的优雅下线。
在本公开的一种可选实施方式中,可以按照一定的频率定时更新待下线服务实例列表,以便及时筛选出即将下线的扩容服务实例,避免筛选不及时导致扩容服务实例下线造成的业务流量损失。本公开实施例中,每个接口对应的待下线服务实例列表可以由PaaS平台的监控服务按照预设周期从各接口的服务实例下线任务表中筛选出满足条件的待下线服务实例生成,并将生成的待下线服务实例列表更新在缓存中间件中。如图4所示,本公开实施例中,PaaS平台的监控服务生成待下线服务实例列表的过程可以包括以下步骤:
步骤201,按照预设周期查询每个接口的服务实例下线任务表,所述服务实例下线任务表中包括对应接口的扩容服务实例以及每个所述扩容服务实例的缩容下线时间。
其中,查询各接口的服务实例下线任务表的周期可以预先设定,比如可以设置为1分钟、30秒等。
实际应用中,可以由PaaS平台的监控服务来查询各接口的服务实例下线任务表,比如,可以设置定时任务来按照预设周期查询每个接口的服务实例下线任务表。
步骤202,计算当前***时间与所述服务实例下线任务表中每个所述扩容服务实例的缩容下线时间的时间差。
步骤203,根据所述时间差小于预设下线时间阈值的目标扩容服务实例,生成每个接口对应的待下线服务实例列表并更新至缓存中间件中。
其中,预设下线时间阈值可以根据实际需求预先设定,比如设置预设下线时间阈值为10秒。
本公开实施例中,PaaS平台的监控服务查询任一接口的服务实例下线任务表时,可以实时获取PaaS平台的当前***时间,并计算当前***时间与服务实例下线任务表中各扩容服务实例的缩容下线时间的时间差,并将所得的各个时间差分别与预设下线时间阈值进行比较,从服务实例下线任务表中的各个扩容服务实例中,筛选出时间差小于预设下线时间阈值的目标扩容服务实例,进而根据目标扩容服务实例生成对应接口的待下线服务实例列表。
举例而言,假设接口1的服务实例下线任务表中包括扩容服务实例1、扩容服务实例2、扩容服务实例3共三个扩容服务实例,计算当前***时间分别与这三个扩容服务实例的缩容下线时间之间的时间差,通过将得到的三个时间差与预设下线时间阈值进行比较,确定时间差小于预设下线时间阈值的目标扩容服务实例为扩容服务实例1,则根据扩容服务实例1生成接口1的待下线服务实例列表,接口1的待下线服务实例列表中记录有扩容服务实例1的相关信息。
接着,将新生成的各接口的待下线服务实例列表更新至缓存中间件中,以由PaaS平台的网关主动从缓存中间件中获取待下线服务实例列表并缓存的本地缓存中。能够理解的是,将新生成的待下线服务实例列表更新至缓存中间件中时,新的待下线服务实例列表会覆盖缓存中间件中原本存储的相同接口的待下线服务实例列表,也就是说,缓存中间件中对于同一接口仅保存最新的待下线服务列表,由此既能节省缓存中间件的存储空间,也能避免网关从多个版本的待下线服务列表中筛选出最新的待下线服务列表的处理消耗。
本公开实施例的服务下线方法,通过由PaaS平台的监控服务按照预设周期查询每个接口的服务实例下线任务表,服务实例下线任务表中包括对应接口的扩容服务实例以及每个扩容服务实例的缩容下线时间,并计算当前***时间与服务实例下线任务表中每个扩容服务实例的缩容下线时间的时间差,进而根据时间差小于预设下线时间阈值的目标扩容服务实例,生成每个接口对应的待下线服务实例列表并更新至缓存中间件中,由此,能够定时更新待下线服务实例列表,筛选出新的待下线服务实例进行业务引流,保证待下线服务实例都能优雅下线,能够及时筛选出即将下线的扩容服务实例,避免筛选不及时导致扩容服务实例下线造成的业务流量损失。
进一步地,在本公开的一种可选实施方式中,本地缓存中缓存每个接口对应的待下线服务实例列表,为了保证PaaS平台的网关能够获取到最新的待下线服务实例列表,本公开实施例中,当所述缓存中间件中任一接口对应的待下线服务实例列表发生更新时,所述本地缓存中的所述任一接口的待下线服务实例列表被删除。
举例而言,监控服务当前生成了接口1的待下线服务实例列表并将其更新至缓存中间件中,则监控服务可以调用网关的接口来删除本地缓存中接口1的待下线服务实例列表。
在本公开的一种可选实施方式中,监控服务调用网关的接口删除本地缓存中某个接口的待下线服务实例列表时,可以同时将调用网关接口成功或失败的事件信息记录到MySQL数据库的事件记录表中,如果调用网关的接口失败,则启动预设的定时任务定时轮询事件记录表,将事件记录表中记录的失败事件进行重试执行,以保证调用网关接口删除本地缓存中某个接口的待下线服务实例列表的操作最终成功。
在本公开实施例中,通过在缓存中间件中任一接口对应的待下线服务实例列表发生更新时,删除本地缓存中该任一接口的待下线服务实例列表,能够促使网关再次接收到请求时从缓存中间件中获取最新的待下线服务实例列表,保证网关使用的待下线服务实例列表的准确性和时效性。
在本公开的一种可选实施方式中,可以为每个接口设置对应的失效列表开关,当服务调用请求经过网关时,基于网关的负载均衡策略,先判断当前接口的失效列表开关是否开启,当开启时,当前接口的待下线服务实例列表才生效。从而,本公开实施例中,所述获取所述目标接口的待下线服务实例列表,可以包括:获取所述目标接口对应的失效列表开关的状态;若所述失效列表开关的状态为开启状态,则从本地缓存中获取所述目标接口的待下线服务实例列表。
示例性地,各个接口的失效列表开关的状态可以由监控服务生成接口的待下线服务实例列表时设置。当监控服务在当前的缩容任务中首次生成某个接口的待下线服务实例列表时,也将该接口对应的失效列表开关设置为开启状态(以True表示),并将该接口失效列表开关的状态缓存在缓存中间件中,并在后续更新该接口的待下线服务实例列表时,保持该接口的失效列表开关为开启状态。当该接口的扩容服务实例均下线完成后,监控服务更新缓存中间件中该接口的失效列表开关的状态为关闭状态(以False表示),以及清除网关的本地缓存中该接口的待下线服务实例列表。
示例性地,监控服务生成各接口的待下线服务实例列表时,可以同时生成各接口的失效列表开关的状态,并将各接口的待下线服务实例列表及失效列表开关的状态更新至缓存中间件中。从而,上述实施例中,当缓存中间件中某个接口的待下线服务实例列表发生更新时,调用网关接口删除本地缓存中该接口的待下线服务实例列表的同时,还可以一并删除该接口的失效列表开关的状态。
本公开实施例中,确定了服务调用请求对应的目标接口之后,可以先获取目标接口对应的失效列表开关的状态。
示例性地,网关可以主动从缓存中间件中获取各接口的失效列表开关并缓存在本地缓存中,并可以预先设置失效列表开关的状态在本地缓存中的缓存时间,比如设置失效列表开关的缓存时间为半小时,当某个接口的失效列表开关的状态在本地缓存中的缓存时间达到预设的缓存时间时,清除本地缓存中该接口的失效列表开关。本公开实施例中,当获取目标接口对应的失效列表开关的状态时,可以先从本地缓存中获取,如果未能从本地缓存中获取到失效列表开关的状态,即表明目标接口的失效列表开关的状态在本地缓存中失效,则可以从缓存中间件中获取目标接口最新的失效列表开关的状态,并缓存在本地缓存中。
本公开实施例中,如果获取的目标接口的失效列表开关的状态为开启状态,则目标接口的待下线服务实例列表生效,继续从本地缓存中获取目标接口的待下线服务实例列表,用于与获取的在线服务实例列表进行差集运算得到目标接口的可用服务实例列表;如果获取的目标接口的失效列表开关的状态为关闭状态,则目标接口的待下线服务实例列表不会生效,将从服务注册中心获取的在线服务实例列表作为目标接口的可用服务实例列表进行路由选择,向后转发服务调用请求。
在本公开实施例中,通过获取目标接口对应的失效列表开关的状态,在失效列表开关的状态为开启状态时,才从本地缓存中获取目标接口的待下线服务实例列表,由此,有利于降低网关的路由性能损耗。
进一步地,在本公开的一种可选实施方式中,如果从本地缓存中未获取到目标接口的待下线服务实例列表,则从缓存中间件中获取目标接口对应的待下线服务实例列表并缓存至本地缓存中。
由于监控服务周期性生成的各接口的待下线服务实例列表更新在缓存中间件中,缓存中间件中存储的是各接口最新的待下线服务实例列表,因此本公开实施例中,当未能从本地缓存中获取到目标接口的待下线服务实例列表时,则从缓存中间件中获取目标接口的待下线服务实例列表,由此,保证了目标接口的待下线服务实例列表始终能够获取到,为屏蔽待下线的服务实例提供了数据支撑。
在本公开的一种可选实施方式中,可以为本地缓存中存储的各接口的待下线服务实例列表设置一定的缓存时长,当某个接口的待下线服务实例列表在本地缓存中存储的时间达到该缓存时长时,则自动清除本地缓存中该接口的待下线服务实例列表。因此本公开实施例中,当目标接口对应的待下线服务实例列表在本地缓存中缓存的时长达到预设时长时,将目标接口对应的待下线服务实例列表从本地缓存中删除。
其中,预设时长可以预先设定,比如设置预设时长为30秒。
本公开实施例中,各接口的待下线服务实例列表在网关的本地缓存中缓存预设时长,当获取到目标接口的失效列表开关的状态为开启状态时,首先从本地缓存中获取目标接口的待下线服务实例列表,如果本地缓存中没有目标接口的待下线服务实例列表,则继续从缓存中间件中获取目标接口最新的待下线服务实例列表。
在本公开实施例中,通过在目标接口对应的待下线服务实例列表在本地缓存中缓存的时长达到预设时长时,将目标接口对应的待下线服务实例列表从本地缓存中删除,有利于使网关能够及时从缓存中间件中获取目标接口最新的待下线服务实例列表,从而有利于保证生成的可用服务实例列表的准确性。
在本公开实施例中,将监控服务周期性生成的待下线服务实例列表以及各接口的失效列表开关的状态存储在缓存中间件中,网关作为流量路由的核心基础组件,除了对缓存中间件有缓存查询依赖之外,不对其他任何中间件有依赖。
在本公开的一种可选实施方式中,在待下线服务实例列表中的任一待下线服务实例下线完成后,可以将任一待下线服务实例从目标接口的在线服务实例列表以及服务实例下线任务表中删除,其中,在任一待下线服务实例上的历史请求处理完成后,任一待下线服务实例被下线。
其中,历史请求是网关在待下线服务实例列表中的待下线服务实例被屏蔽之前,分配至待下线服务实例上的服务调用请求,也即待下线服务实例被写入待下线服务实例列表之前被分配的服务调用请求。
本公开实施例中,对于待下线服务实例列表中的待下线服务实例,可以调用监控服务的接口依次触发服务实例的优雅下线。具体地,在待下线服务实例列表中的任一待下线服务实例上的历史请求处理完成后,则将历史请求已全部处理完成的该待下线服务实例下线,并将已下线完成的该待下线服务实例从目标接口的在线服务实例列表以及服务实例下线任务表中删除。
能够理解的是,PaaS平台的服务注册中心能够感知已经成功下线的服务实例。因此本公开实施例中,可以由服务注册中心根据感知到的已下线服务实例,实时更新目标接口的在线服务实例列表。而对于服务实例下线任务表的更新,网关可以启动一个预设的定时任务,由定时任务触发对目标接口的服务实例下线任务表的校验,定时任务可以查询服务注册中心的在线服务实例列表和Pod列表业务实例与服务实例下线任务表进行比对,如果服务实例下线任务表中的某个扩容服务实例,在在线服务实例列表和Pod列表中均不存在,则可以确定该扩容服务实例已经真正下线,则删除服务实例下线任务表中的该扩容服务实例。另外,在目标接口的待下线服务实例列表中的各个待下线服务实例均成功下线后,可以更新缓存中间件中的信息,将缓存中间件中目标接口的失效列表开关的状态更新为关闭状态,以及删除网关的本地缓存以及缓存中间件中目标接口的待下线服务实例列表。
在本公开实施例中,通过在任一待下线服务实例下线完成后,将任一待下线服务实例从目标接口的在线服务实例列表以及服务实例下线任务表中删除,保证了服务实例的真正下线,能够避免已下线的服务实例仍存在于在线服务实例列表中导致业务请求被转发至已下线服务实例的现象。
本公开示例性实施例还提供了一种服务下线装置。图5示出了根据本公开示例性实施例的服务下线装置的示意性框图,如图5所示,该服务下线装置50包括:第一确定模块501、获取模块502、第二确定模块503和转发模块504。
其中,第一确定模块501,用于根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;
获取模块502,用于获取所述目标接口的在线服务实例列表和待下线服务实例列表;
第二确定模块503,用于对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;
转发模块504,用于从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
可选地,每个接口对应的所述待下线服务实例列表由监控服务按照预设周期查询每个接口的服务实例下线任务表,所述服务实例下线任务表中包括对应接口的扩容服务实例以及每个所述扩容服务实例的缩容下线时间,并计算当前***时间与所述服务实例下线任务表中每个所述扩容服务实例的缩容下线时间的时间差,根据所述时间差小于预设下线时间阈值的目标扩容服务实例生成,并更新至缓存中间件中。
可选地,本地缓存中缓存所述每个接口对应的待下线服务实例列表,并且,当所述缓存中间件中任一接口对应的待下线服务实例列表发生更新时,所述本地缓存中所述任一接口的待下线服务实例列表被删除。
可选地,所述获取模块502还用于:
获取所述目标接口对应的失效列表开关的状态;
若所述失效列表开关的状态为开启状态,则从本地缓存中获取所述目标接口的待下线服务实例列表。
可选地,所述获取模块502还用于:
若从所述本地缓存中未获取到所述目标接口的待下线服务实例列表,则从缓存中间件中获取所述目标接口对应的待下线服务实例列表并缓存至所述本地缓存中。
可选地,所述服务下线装置还包括:
第一删除模块,用于当所述目标接口对应的待下线服务实例列表在所述本地缓存中缓存的时长达到预设时长时,将所述目标接口对应的待下线服务实例列表从所述本地缓存中删除。
可选地,所述服务下线装置还包括:
第二删除模块,用于在所述待下线服务实例列表中的任一待下线服务实例下线完成后,将所述任一待下线服务实例从所述目标接口的在线服务实例列表以及所述服务实例下线任务表中删除,其中,在所述任一待下线服务实例上的历史请求处理完成后,所述任一待下线服务实例被下线。
本公开实施例所提供的服务下线装置,可执行本公开实施例所提供的任意可应用于电子设备的服务下线方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序包括指令,所述指令在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例所述的服务下线方法。
本公开示例性实施例还提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例所述的服务下线方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例所述的服务下线方法。
参考图6,现将描述可以作为本公开的服务器或客户端的电子设备1100的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图6所示,电子设备1100包括计算单元1101,其可以根据存储在只读存储器(ROM)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(RAM)1103中的计算机程序,来执行各种适当的动作和处理。在RAM 1103中,还可存储设备1100操作所需的各种程序和数据。计算单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
电子设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106、输出单元1107、存储单元1108以及通信单元1109。输入单元1106可以是能向电子设备1100输入信息的任何类型的设备,输入单元1106可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1107可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1108可以包括但不限于磁盘、光盘。通信单元1109允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理。例如,在一些实施例中,服务下线方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1102和/或通信单元1109而被载入和/或安装到电子设备1100上。在一些实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行服务下线方法。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种服务下线方法,其中,所述方法包括:
根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;
获取所述目标接口的在线服务实例列表和待下线服务实例列表;
对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;
从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
2.如权利要求1所述的服务下线方法,其中,每个接口对应的所述待下线服务实例列表由监控服务按照预设周期查询每个接口的服务实例下线任务表,所述服务实例下线任务表中包括对应接口的扩容服务实例以及每个所述扩容服务实例的缩容下线时间,并计算当前***时间与所述服务实例下线任务表中每个所述扩容服务实例的缩容下线时间的时间差,根据所述时间差小于预设下线时间阈值的目标扩容服务实例生成,并更新至缓存中间件中。
3.如权利要求2所述的服务下线方法,其中,本地缓存中缓存所述每个接口对应的待下线服务实例列表,并且,当所述缓存中间件中任一接口对应的待下线服务实例列表发生更新时,所述本地缓存中的所述任一接口的待下线服务实例列表被删除。
4.如权利要求1所述的服务下线方法,其中,所述获取所述目标接口的待下线服务实例列表,包括:
获取所述目标接口对应的失效列表开关的状态;
若所述失效列表开关的状态为开启状态,则从本地缓存中获取所述目标接口的待下线服务实例列表。
5.如权利要求4所述的服务下线方法,其中,所述方法还包括:
若从所述本地缓存中未获取到所述目标接口的待下线服务实例列表,则从缓存中间件中获取所述目标接口对应的待下线服务实例列表并缓存至所述本地缓存中。
6.如权利要求5所述的服务下线方法,其中,所述方法还包括:
当所述目标接口对应的待下线服务实例列表在所述本地缓存中缓存的时长达到预设时长时,将所述目标接口对应的待下线服务实例列表从所述本地缓存中删除。
7.如权利要求2-或3所述的服务下线方法,其中,所述方法还包括:
在所述待下线服务实例列表中的任一待下线服务实例下线完成后,将所述任一待下线服务实例从所述目标接口的在线服务实例列表以及所述服务实例下线任务表中删除,其中,在所述任一待下线服务实例上的历史请求处理完成后,所述任一待下线服务实例被下线。
8.一种服务下线装置,其中,所述装置包括:
第一确定模块,用于根据接收到的服务调用请求,确定所述服务调用请求对应的目标接口;
获取模块,用于获取所述目标接口的在线服务实例列表和待下线服务实例列表;
第二确定模块,用于对所述在线服务实例列表和所述待下线服务实例列表进行差集运算,确定所述目标接口的可用服务实例列表;
转发模块,用于从所述可用服务实例列表中确定目标服务实例,并将所述服务调用请求转发到所述目标服务实例。
9.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-7中任一项所述的服务下线方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的服务下线方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462236.1A CN114595069B (zh) | 2022-04-29 | 2022-04-29 | 服务下线方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462236.1A CN114595069B (zh) | 2022-04-29 | 2022-04-29 | 服务下线方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114595069A true CN114595069A (zh) | 2022-06-07 |
CN114595069B CN114595069B (zh) | 2022-08-05 |
Family
ID=81811494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210462236.1A Active CN114595069B (zh) | 2022-04-29 | 2022-04-29 | 服务下线方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595069B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115866029A (zh) * | 2022-11-23 | 2023-03-28 | 中国工商银行股份有限公司 | 微服务下线处理方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104253703A (zh) * | 2013-06-28 | 2014-12-31 | 华为终端有限公司 | 一种通信的方法及设备 |
US20200036790A1 (en) * | 2018-07-26 | 2020-01-30 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for service hosting of distributed storage system |
CN111800458A (zh) * | 2020-05-22 | 2020-10-20 | 浙商银行股份有限公司 | 一种Kubernetes容器云平台的动态负载均衡方法及*** |
CN112068934A (zh) * | 2020-09-08 | 2020-12-11 | 广州汇智通信技术有限公司 | 一种容器云服务实例收缩的控制***和方法 |
CN112799786A (zh) * | 2021-02-02 | 2021-05-14 | 微民保险代理有限公司 | 微服务实例的退出方法、装置、设备及存储介质 |
CN112948098A (zh) * | 2021-05-12 | 2021-06-11 | 北京世纪好未来教育科技有限公司 | 基于微服务单元架构的服务单元下线方法及相关装置 |
-
2022
- 2022-04-29 CN CN202210462236.1A patent/CN114595069B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104253703A (zh) * | 2013-06-28 | 2014-12-31 | 华为终端有限公司 | 一种通信的方法及设备 |
US20200036790A1 (en) * | 2018-07-26 | 2020-01-30 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for service hosting of distributed storage system |
CN111800458A (zh) * | 2020-05-22 | 2020-10-20 | 浙商银行股份有限公司 | 一种Kubernetes容器云平台的动态负载均衡方法及*** |
CN112068934A (zh) * | 2020-09-08 | 2020-12-11 | 广州汇智通信技术有限公司 | 一种容器云服务实例收缩的控制***和方法 |
CN112799786A (zh) * | 2021-02-02 | 2021-05-14 | 微民保险代理有限公司 | 微服务实例的退出方法、装置、设备及存储介质 |
CN112948098A (zh) * | 2021-05-12 | 2021-06-11 | 北京世纪好未来教育科技有限公司 | 基于微服务单元架构的服务单元下线方法及相关装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115866029A (zh) * | 2022-11-23 | 2023-03-28 | 中国工商银行股份有限公司 | 微服务下线处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114595069B (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108696581B (zh) | 分布式信息的缓存方法、装置、计算机设备以及存储介质 | |
CN110598138A (zh) | 基于缓存的处理方法和装置 | |
CN105095313B (zh) | 一种数据访问方法和设备 | |
CN110196722A (zh) | 云主机批量管理方法、***、设备及存储介质 | |
CN108664521B (zh) | 一种提供序列号的方法、装置、电子设备和可读存储介质 | |
CN110837409A (zh) | 一种定时执行任务的方法和*** | |
CN111181765A (zh) | 一种任务处理方法和装置 | |
CN114595069B (zh) | 服务下线方法、装置、电子设备及存储介质 | |
CN112948498A (zh) | 一种分布式***全局标识的生成方法和装置 | |
CN113312234B (zh) | 一种健康检测的优化方法及终端 | |
CN110071952B (zh) | 服务调用量的控制方法和装置 | |
CN104104701A (zh) | 在线服务的配置更新的方法和*** | |
CN110347659B (zh) | 数据处理方法和装置、交易数据处理方法和装置 | |
CN113360689B (zh) | 图像检索***、方法、相关装置及计算机程序产品 | |
CN108196962B (zh) | 一种实现不同版本接口调用的方法及装置 | |
CN107273047B (zh) | 一种缓存管理方法、缓存管理器及存储管理软件 | |
CN114070889B (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 | |
CN115271861A (zh) | 一种请求过滤方法、装置、设备及存储介质 | |
CN111176679B (zh) | 一种应用程序更新方法和装置 | |
CN113138943B (zh) | 一种处理请求的方法和装置 | |
CN113297516A (zh) | 客户交互界面生成方法、装置和电子设备 | |
CN109101253B (zh) | 云计算***中主机的管理方法和装置 | |
CN109104321B (zh) | 提升Hadoop双机集群下Web_HDFS可用性的方法 | |
CN109120692B (zh) | 用于处理请求的方法和装置 | |
CN110650033B (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 |