CN110069337A - 一种容灾降级的方法和装置 - Google Patents

一种容灾降级的方法和装置 Download PDF

Info

Publication number
CN110069337A
CN110069337A CN201810067212.XA CN201810067212A CN110069337A CN 110069337 A CN110069337 A CN 110069337A CN 201810067212 A CN201810067212 A CN 201810067212A CN 110069337 A CN110069337 A CN 110069337A
Authority
CN
China
Prior art keywords
time
thread
service
disaster tolerance
thread pool
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
Application number
CN201810067212.XA
Other languages
English (en)
Other versions
CN110069337B (zh
Inventor
杜广东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810067212.XA priority Critical patent/CN110069337B/zh
Publication of CN110069337A publication Critical patent/CN110069337A/zh
Application granted granted Critical
Publication of CN110069337B publication Critical patent/CN110069337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种容灾降级的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池;获取当前预定时间段内对线程池内线程的调用信息,当调用信息符合预定降级条件时,基于预定的降级方式对依赖服务执行容灾降级。该实施方式依赖线程池隔离机制,提高了***的容灾能力,避免了因为单个依赖服务不可用,所导致整个***不可用甚至宕机的情况,另外,基于对依赖服务的自动降级及弹性恢复的容灾机制,保证了***的自动化处理,提高了***的快速反应能力,同时减少人为干预。

Description

一种容灾降级的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种容灾降级的方法和装置。
背景技术
随着互联网的高速发展,越来越多的***采用分布式架构。在分布式架构中,依赖有两种:***对一些常用组件(例如mysql、ES、Redis、MQ等)的依赖、***与***之间的依赖,这些依赖的稳定性对***运行的影响较大。当组件或服务出现不可用的情况,例如网络连接缓慢、资源繁忙,可能导致***不可用的情况。因此,如何避免依赖组件或服务不可用导致对***的影响,尤其是高并发场景下,提高***的容灾能力,就显得格外重要。
现有技术中,所采用的容灾降级方案主要包括有:
(1)人为调控:当发现***所依赖的组件或服务不可用时,人工打开容灾开关,返回默认值来实现依赖降级;当人工发现依赖服务可用时,仍依赖人工关闭容灾开关;
(2)消灭异常:当调用外部服务返回值时出现异常的情况,***通常会自动消灭掉该异常,并返回默认值实现服务降级;
(3)设置超时时间、服务可用率、单位时间内并发数来实现***自动降级。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
(1)对于人为调控方式,容灾处理主要依赖于人力,效率较低;另外,在高并发的情况下,可能导致处于等待状态的线程数瞬间剧增,***服务压力过大,甚至***不可用的情况;
(2)对于调用外部服务异常的方式,存在捕获到外部服务异常但仍对其进行调用的情况,可能导致***调用该服务超时并占用大量线程资源,进而影响整个***的并发量以及响应速度,严重时可能导致***宕机情况;
(3)对于设置超时时间、服务可用率、单位时间内并发数的方式,并未实现***资源的隔离,因而当其中一个服务存在高并发访问时,可能瞬间占满***资源,进而影响其他服务的正常运行,严重时可能因资源竞争导致***不可用甚至宕机情况;
(4)以上所有方式,均无法实现容灾降级的自动检测以及自动恢复,因而需要企业投入较高的人力成本或维护成本,不利于企业资源规划。
发明内容
有鉴于此,本发明实施例提供一种容灾降级的方法和装置,至少能够解决现有技术中依赖服务的资源不独立,导致***容灾能力小,且无法实现自动降级和自动恢复的现象。
为实现上述目的,根据本发明实施例的一个方面,提供了一种容灾降级的方法,包括:接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
可选的,所述获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级包括:获取所述当前预定时间段内对所述线程池内线程的调用量,当所述调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对所述依赖服务执行容灾降级。
可选的,所述获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级包括:获取所述当前预定时间段内对所述线程池内线程的调用可用率,当所述调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对所述依赖服务执行容灾降级。
可选的,所述统计当前预定时间段内对所述线程池内线程的调用信息包括:构建时间窗格,统计所述时间窗格内对所述线程池内线程的调用信息,确定所述当前预定时间段内所述时间窗格的数量,获取所述当前预定时间段内对所述线程池内线程的调用信息。
可选的,在基于预定的降级方式对所述依赖服务执行容灾降级之后,还包括:当检测到降级时间达到预定降级时间阈值时,结束所述容灾降级,调用所述依赖服务。
为实现上述目的,根据本发明实施例的另一方面,提供了一种容灾降级的装置,包括:请求接收模块,用于接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;降级执行模块,用于获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
可选的,所述降级执行模块,用于:获取所述当前预定时间段内对所述线程池内线程的调用量,当所述调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对所述依赖服务执行容灾降级。
可选的,所述降级执行模块,用于:获取所述当前预定时间段内对所述线程池线程的调用可用率,当所述调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对所述依赖服务执行容灾降级。
可选的,所述降级执行模块,用于:构建时间窗格,统计所述时间窗格内对所述线程池内线程的调用信息,确定所述当前预定时间段内所述时间窗格的数量,获取所述当前预定时间段内对所述线程池内线程的调用信息。
可选的,还包括服务调用模块,用于:当检测到降级时间达到预定降级时间阈值时,结束所述容灾降级,调用所述依赖服务。
为实现上述目的,根据本发明实施例的再一方面,提供了一种容灾降级的电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的容灾降级的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的容灾降级的方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:依赖线程池隔离机制,提高了***的容灾能力,避免了因为单个依赖服务不可用,所导致整个***不可用甚至宕机的情况,另外,基于对依赖服务的自动降级及弹性恢复的容灾机制,保证了***的自动化处理,提高了***的快速反应能力,同时减少人为干预。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种容灾降级的方法的主要流程示意图;
图2是一具体的调用依赖服务的流程示意图;
图3是根据本发明实施例的一种可选的容灾降级的方法的流程示意图;
图4是根据本发明实施例的另一种可选的容灾降级的方法的流程示意图;
图5是根据本发明实施例的又一种可选的容灾降级的方法的流程示意图;
图6是根据本发明实施例的再一种可选的容灾降级的方法的流程示意图;
图7是以时间窗格为单位、随时间推移的时间窗口的设定示意图;
图8是根据本发明实施例的再一种可选的容灾降级的方法的流程示意图;
图9是根据本发明实施例的一具体地的容灾降级的方法的流程示意图;
图10是根据本发明实施例的一种容灾降级的装置的主要模块示意图;
图11是本发明实施例可以应用于其中的示例性***架构图;
图12是适于用来实现本发明实施例的移动设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,本发明实施例可适用于分布式架构,还可以适用于其他***之间或者服务组件之间存在软件层面依赖关系的情况。为便于统一描述,对于所依赖的服务,例如存在调用依赖关系的被调用***、被调用组件等,本发明均以依赖服务进行描述。
另外,所提供的容灾,对于计算机领域而言,是指在相隔较远的异地,建立两套或多套功能相同的IT(Information Technology,信息技术)***,互相之间可以进行健康状态监视和功能切换,当一处***因意外(如火灾、地震等)停止工作时,整个***应用可以切换到另一处,使得该***功能可以继续正常工作。
参见图1,示出的是本发明实施例提供的一种容灾降级的方法的主要流程图,包括如下步骤:
S101:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S102:获取当前预定时间段内对线程池内线程的调用信息,当调用信息符合预定降级条件时,基于预定的降级方式对依赖服务执行容灾降级。
上述实施方式中,对于步骤S101,为减少不同依赖对于***的影响,避免因某个依赖异常导致整个***不可用,可以对于每个依赖分配相应的线程池(存储线程的位置,其中线程thread为操作***能够进行运算调度的最小单位),以使得对于不同依赖所分配的线程池从资源上进行隔离,即实现线程池资源隔离。另外,该线程池的大小可以是固定的,也可以是根据依赖服务的运行压力进行相应配置。
对于线程池,可以配置其参数以初始化构建线程池,该参数包括但不限于是线程池的线程数、线程池对应队列大小、线程池Key、线程池分组。具体地,可以通过上游(例如,配置***)进行配置,以初始化配置参数对象。
进一步的,可以将线程池以key-value的形式存放到Concurrent Hash Map(存储数据结构)中,以通过Map键值对(key-value)的形式对所有线程池进行管理,其中键值为线程池key,也是线程池的唯一标识信息,用来区分不同依赖所对应的线程池。
由于每个依赖服务均有各自对应的线程池,因此,当接收到对依赖服务的业务调用请求时,会从Map对象中根据线程池的唯一标识信息,获取与依赖服务相应的线程池。
另外,依赖服务与线程池的对应关系,可以是一对一,即一个依赖服务分配一个线程池,例如依赖服务A——线程池1;也可以多对一,即多个依赖服务分配一个线程池,例如依赖服务B、依赖服务C——线程池2,还可以是多对一,即一个依赖服务分配有多个线程池,但依赖服务一次只能使用一个线程池,例如,依赖服务D——线程池3、线程池4,只有线程池3完全不可用时,才能使用线程池4。
对于步骤S102,在确定线程池之后,当线程池有可用线程时,可以由线程池分配线程以执行对依赖服务的调用;但当对于该依赖服务的调用信息符合预定降级条件,导致线程池无可分配线程时,为降低调用该服务超时影响***响应速度的情况,此时可以对该依赖服务执行容灾降级策略,实现服务降级。
其中,调用信息包括但不限于是调用量、调用可用率,还可以是调用异常信息等;相应的降级方式包括但不限于是降低调用量、将部分服务功能关闭,还可以基于调用异常率、拒绝服务请求等数据指标进行扩展。
另外,对依赖服务的调用方式可以采用同步或异步调用,具体可以由***进行设定,也可以根据用户使用习惯等进行配置。其中,同步是指两个或两个以上随时间变化的调用在变化过程中保持一定的相对关系,例如服务A只有在接收到服务B的运行结果后才可以运行;异步是指当一个异步过程调用发出后,调用***不能立刻得到结果,例如,服务A可以在运行过程中接收服务B的运行结果,并将服务B的运行结果加入运行参数中以继续进行运行。实际处理这个依赖服务的部件在处理完成后,可以通过状态、通知和回调来通知依赖服务。在调用的同时,基于线程池的资源隔离,可以将业务逻辑与调用主线程分开。
以下进行具体说明,参见图2所示:
(1)同步调用Redis服务:在依赖代码部分实现对Redis服务的调用封装,采用线程池实现资源隔离,实现主线程与访问Redis服务线程隔离。
(2)异步调用用户中心服务:依赖用户服务调用逻辑代码,采用线程池实现资源隔离,实现主线程与访问用户中心服务的线程隔离。
(3)同步调用订单服务:***服务依赖订单服务,当订单服务不可用时,可以利用超时时间配置、可用率配置、调用总数配置等,快速返回调用失败信息至用户终端。
上述实施例所提供的方法,提供了一种资源隔离的思路,通过对不同的依赖分配不同的线程池以实现依赖服务的隔离。由于针对每个依赖服务分配相应的线程池,因而即使在高并发场景下线程池无可用线程时,基于所设定的资源隔离方案,也不会抢占其他服务的线程资源,实现了依赖服务的互不影响,提高了***的容灾能力。
参见图3,示出了根据本发明实施例的一种可选的容灾降级的方法流程示意图,包括如下步骤:
S301:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S302:获取当前预定时间段内对线程池内线程的调用量,当调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对依赖服务执行容灾降级。
上述实施方式中,步骤是S301可参见图1所示步骤S101的描述,在此不再赘述。
上述实施方式中,对于步骤S302,每个线程池的线程数量固定,即表示对于该依赖服务的调用具有一定的并发数限制;其中,并发数表示同一时间对于依赖服务的访问数量或者调用数量。
当该依赖服务未处于异常状态时,可以执行调用操作。针对每次调用,其结果有调用失败以及调用成功的情况,为便于后续查询,这些调用结果情况均有保存,便于后续容灾降级处理。
对于当前所接收到的调用请求,为得知依赖服务是否可用,可以基于当前的调用情况进行判断,具体地,总的调用量,其中,调用量=调用成功量+调用失败量。如果调用量小于预定的调用量(即并发量)阈值,则允许继续对该依赖服务的调用;否则,调用默认的并发量降级方法,返回默认值,例如,返回网络故障信息。
例如,调用依赖A的服务,且A所支持的最高并发量为100,因此,当调用量超过100的时候,可能导致A所在的***出现问题,此时需要设置并发量降级,以当服务A的调用达到该最大并发量时,就不允许接收新的调用请求,或接收到新的调用请求后不做处理,以对本次调用请求执行降级方法。
上述实施例所提供的方法,提供了一种对依赖服务执行容灾降级的具体思路,通过获取当前调用量,依据并发量降级方式对依赖服务执行容灾降级,实现容灾降级策略可配置功能。
参见图4,示出了根据本发明实施例的另一种可选的容灾降级的方法流程示意图,包括如下步骤:
S401:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S402:获取当前预定时间段内对线程池内线程的调用可用率,当调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对依赖服务执行容灾降级。
上述实施方式中,步骤是S401可参见图1所示步骤S101的描述,在此不再赘述。
上述实施方式中,对于步骤S402,对于依赖服务的调用存有失败的情况,当调用失败时,相应的线程处于空闲可用的状态,并接收处理下一个调用请求。由此,除上述并发量降级方式外,还可以获取当前预定时间段内对线程池线程的调用可用率,对依赖服务执行容灾降级,其中,调用可用率=(调用成功次数/调用量)*100%。
具体地,对于所获取的调用可用率,如果大于或等于所配置的可用率阈值,则表示线程池中有可用的线程;否则,则表示线程池中有部分线程处于不可工作的状态,为避免后续调用失败造成***拥堵的状况,此时可以执行可用率降级的方式,例如,当服务B的可用率达到80%时,就不再接受新的调用请求,以降低***服务压力,避免***崩溃,或者对线程进行相应调整、修改,以使其可用率达到预定可用率阈值,满足后续调用需求。
例如,调用依赖B的服务,可预设B所可用的最高可用率为95%,即100个线程里有95个调用成功,剩余的5个调用失败。因此,若当前调用率只有80%,即表示与B相应的线程池中有20个线程处于不可工作的状态,为避免***瘫痪,此时可以对这20个不可用线程进行修正操作。
上述实施例所提供的方法,提供了另一种对依赖服务执行容灾降级的具体思路,通过统计调用量获取调用可用率,依据可用率降级方式对依赖服务执行容灾降级,实现容灾降级策略可配置功能。
参见图5,示出了根据本发明实施例的又一种可选的容灾降级的方法流程示意图,包括如下步骤:
S501:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S502:统计当前预定时间段内对线程池内线程的调用信息;其中,调用信息至少包括调用量以及调用可用率。
S503:当调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对依赖服务执行容灾降级。
S503’:当调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对依赖服务执行容灾降级。
上述实施方式中,步骤是S501可参见图1所示步骤S101的描述,步骤S502可参见图3所示步骤S302以及图4所示步骤S402的描述,步骤S503可参见图3所示步骤S302的描述,步骤S503’可参见图4所示步骤S402的描述,在此不再赘述。
上述并发量降级方式和可用率降级方式,可以同时使用,也可以预先设定使用优先级,按照优先级顺序使用,例如,并发量降级方式>可用率降级方式,因此,仅需获取调用量即可,依靠并发量降级方式对依赖服务执容灾降级,但所并发量降级方式不可用时,此时所依据的容灾降级方式为可用率降级。
上述实施例所提供的方法,提供了一种对依赖服务执行容灾降级的具体思路,通过统计调用量获取调用可用率,依据并发量降级方式、可用率降级方式的结合或者优先使用顺序,对依赖服务执行容灾降级,实现容灾降级策略可配置功能。
参见图6,示出了根据本发明实施例的再一种可选的容灾降级的方法流程示意图,包括如下步骤:
S601:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S602:构建时间窗格,统计时间窗格内对线程池内线程的调用信息,确定当前预定时间段内时间窗格的数量,获取当前预定时间段内对线程池内线程的调用信息;其中,调用信息至少包括调用量以及调用可用率。
S603:当调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对依赖服务执行容灾降级。
S603’:当调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对依赖服务执行容灾降级。
上述实施方式中,对于步骤S601可参见图1所示步骤S101的描述,步骤S603可参见图3所示步骤S302的描述,步骤S603’可参见图4所示步骤S402的描述,在此不再赘述。
上述实施方式中,对于步骤S602,对于预定时间段内(例如,30s)对所述依赖服务调用信息的获取方式,可以基于预定的时间窗口或时间窗格进行获取。时间窗口可按照时间轴进行游动,每个时间窗口由固定数量的时间窗格组成,每个时间窗格包含两个指标:调用成功信息以及调用失败信息。
另外,时间窗格的大小及单位可配置,例如参见图7所示,时间窗口包括6个时间窗格,时间窗格为1s,若时间窗口为6s。以下以图7为例进行具体描述:
(1)当依赖服务启动时(默认此刻为第1秒),***会以时间窗格为单位,创建大小为6的时间窗口1,如图中t1~t6所示。每个时间窗格代表时间为1s,以时间窗格为单位,统计这1s时间内对依赖服务的调用成功次数以及调用失败次数,以统计调用量,确定调用可用率;
(2)随着时间的推移,当进行到6s时,该时间窗口1内的所有时间窗格被填满,此时可以计算该时间窗口1(此处为6s)内对于该依赖服务的调用成功次数、调用失败次数以及相应的调用量、调用可用率;
(3)随着时间的继续推移,当进行到7s时,时间窗口会抛弃图中所示t1时间窗格,并创建时间窗格t7,以重新统计时间窗口2内对于依赖服务的调用成功次数、调用失败次数以及相应的可用率,之后以此类推。
需要说明的是,所统计的调用量,是该依赖服务没有发生超时及其它异常的调用量。对于调用量的统计方式,可以通过配置的方式进行自定义,即可以以单个时间窗格为单位,确定时间窗格的数量,统计相应数量时间窗格的调用量;也可以是以多个时间窗格为单位进行统计,其时间标准可以按照设定需求进行自定义。
上述实施例所提供的方法,提供了一种对于依赖服务调用情况统计的方法,具体以时间窗格为单位,统计预定时间段内调用成功次数、失败次数以及可用率,便于***对其进行统计、计算和管理。
参见图8,示出了根据本发明实施例的再一种可选的容灾降级的方法流程示意图,包括如下步骤:
S801:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S802:获取当前预定时间段内对线程池内线程的调用信息,当调用信息符合预定降级条件时,基于预定的降级方式对依赖服务执行容灾降级。
S803:当检测到降级时间达到预定降级时间阈值时,结束容灾降级,调用依赖服务。
上述实施方式中,对于步骤S801可参见图1所示步骤S101的描述,步骤S802可参见图1所示步骤S102、图3~图6所示描述,在此不再赘述。
上述实施方式中,对于步骤S803,若对依赖服务配置有相应的容灾降级策略,当满足降级条件(例如,图3~图6所示并发量降级、可用率降级)时,执行相应的降级方法,且执行时间可配置。
但依赖服务需要向所关联的***或组件提供服务,因而不会一直处于降级状态,可以设置降级时间阈值(例如,降级休眠时间),以设定容灾降级时间有限。
例如,使用该***时,会配置降级后多长时间可以尝试调用该依赖服务:在该降级时间内,***会一直调用降级方法,不会尝试调用该依赖服务;当达到降级休眠时间,***会再次尝试调用依赖服务,如果调用成功,则放开所有的请求调用依赖服务,否则继续对该依赖服务执行降级方法。另外,但当不再满足降级条件时,***自动恢复对该依赖服务的调用。
上述实施例所提供的方法,提供了一种容灾降级后自动恢复调用的思路,当降级时间达到降级时间阈值时,自动执行对该依赖服务的调用,解决了依赖服务长期不可用导致***宕机的问题,实现了***的自动化处理,减少了人为干预以及人力投入。
参见图9,示出了根据本发明实施例的一具体地容灾降级的方法流程示意图,包括如下步骤:
S901:接收对依赖服务的调用请求,获取与依赖服务相应的线程池的标识信息,以确定线程池。
S902:构建时间窗格,统计时间窗格内对线程池内线程的调用信息,确定当前预定时间段内时间窗格的数量,获取当前预定时间段内对线程池内线程的调用信息;其中,调用信息至少包括调用量以及调用可用率。
S903:当调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对依赖服务执行容灾降。
S903’:当调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对依赖服务执行容灾降级。
S904:当检测到降级时间达到预定降级时间阈值时,结束容灾降级,调用依赖服务。
上述实施方式中,对于步骤S901可参见图1所示步骤S101的描述,步骤S902可参见图1所示步骤S102、图3~图6所示描述,步骤S903可参见图3所示步骤S302的描述,步骤S903’可参见图4所示步骤S402的描述,步骤S904可参见图8所示步骤S803的描述,在此不再赘述。
具体描述如下所示:
(1)当用户发出对依赖服务的调用请求后,会触发第三方调用逻辑,判断该依赖服务当前是否为已降级状态,若已降级,则自动执行降级方法,不对该调用请求做处理;否则,执行下一步骤;
(2)判断该线程池是否有可分配线程,如果有可分配线程,则对该调用服务执行具体服务调用;否则,则对该依赖服务执行容灾降级方法;
(3)当对该依赖服务执行具体调用失败时,统计当前时间段内每个时间窗格下对于该依赖服务的调用量,确定相应的调用可用率;
(4)当调用量大于或等于预定调用量阈值时,对该依赖服务执行相应的并发量降级方式;和/或
当可用率小于预定可用率阈值时,对该依赖服务执行相应的可用率降级方式;
(5)当降级时间达到用户配置时间(预定降级时间阈值)时,***会尝试访问依赖服务,如果失败则继续执行降级方法,否则恢复依赖服务的调用,并将所有指标清零重新进行统计。
需要说明的是,对于本发明所涉及的线程池标识信息、并发量阈值、可用率阈值、预定降级时间阈值等需要配置的信息,可以根据预定的配置方式进行配置。配置方式包括但不限于是接口形式配置、AOP(Aspect Oriented Programming,面向切面编程)配置,其中,通过AOP配置的形式,在实际调用依赖服务时添加一些统计逻辑,以对业务逻辑的各个部分进行隔离,使得业务逻辑各部分之间的耦合度降低,提高程序的可用性,同时提高开发效率;通过接口的形式,可视为是AOP的一种代码实现,是自定义降级策略中的一种。
对于所采用的容灾降级策略,除上述调用量、可用率之外,还可以基于调用异常率、拒绝服务请求等数据指标进行扩展。用户可以自定义容灾降级策略的优先级,也可以由***根据所提供的指标自定义一个降级策略。
此外,针对线程池,还可以设置相关联的等待队列,用以缓存所接收的调用请求。且该等待队列的大小可以由用户自行配置,也可以***默认。例如,等待队列的大小为10,即当线程池为可分配线程时,可再接收10个调用请求,以缓存并等待调用依赖服务。
本实施例所提供的方法,依赖线程池隔离机制,提高了***的容灾能力,避免了因为单个依赖服务不可用,所导致整个***不可用甚至宕机的情况,另外,基于对依赖服务的自动降级及弹性恢复的容灾机制,保证了***的自动化处理,提高了***的快速反应能力,同时减少人为干预。
参见图10,示出了本发明实施例提供的一种容灾降级的装置1000的主要模块示意图,包括:
请求接收模块1001,用于接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;
降级执行模块1002,用于获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
本发明实施装置中,所述降级执行模块1002,用于:获取所述当前预定时间段内对所述线程池内线程的调用量,当所述调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对所述依赖服务执行容灾降级。
本发明实施装置中,所述降级执行模块1002,用于:获取所述当前预定时间段内对所述线程池内线程的调用可用率,当所述调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对所述依赖服务执行容灾降级。
本发明实施装置中,所述降级执行模块1002,用于:构建时间窗格,统计所述时间窗格内对所述线程池内线程的调用信息,确定所述当前预定时间段内所述时间窗格的数量,获取所述当前预定时间段内对所述线程池内线程的调用信息。
本发明实施装置还包括服务调用模块1003,用于:当检测到降级时间达到预定降级时间阈值时,结束所述容灾降级,调用所述依赖服务。
本发明实施例所提供的装置,依赖线程池隔离机制,提高了***的容灾能力,避免了因为单个依赖服务不可用,所导致整个***不可用甚至宕机的情况,另外,基于对依赖服务的自动降级及弹性恢复的容灾机制,保证了***的自动化处理,提高了***的快速反应能力,同时减少人为干预。
另外,在本发明实施例中所述的容灾降级装置的具体实施内容,在上面所述容灾降级方法中已经详细说明了,故在此重复内容不再说明。
参见图11示出了可以应用本发明实施例的容灾降级方法或容灾降级装置的示例性***架构1100。
如图11所示,***架构1100可以包括终端设备1101、1102、1103,网络1104和服务器1105。网络1104用以在终端设备1101、1102、1103和服务器1105之间提供通信链路的介质。网络1104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1101、1102、1103通过网络1104与服务器1105交互,以接收或发送消息等。终端设备1101、1102、1103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交***软件等(仅为示例)。
终端设备1101、1102、1103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1105可以是提供各种服务的服务器,例如对用户利用终端设备1101、1102、1103所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的在列表中排列对象方法一般由服务器1105执行,相应地,在列表中排列对象装置一般设置于服务器1105中。
应该理解,图11中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
参见图12,其示出了适于用来实现本发明实施例的终端设备的计算机***1200的结构示意图。图12示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,计算机***1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。在RAM 1203中,还存储有***1200操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。录入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的录入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括请求接收模块、降级执行模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,降级执行模块还可以被描述为“容灾降级执行模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;
获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
根据本发明实施例的技术方案,依赖线程池隔离机制,提高了***的容灾能力,避免了因为单个依赖服务不可用,所导致整个***不可用甚至宕机的情况,另外,基于对依赖服务的自动降级及弹性恢复的容灾机制,保证了***的自动化处理,提高了***的快速反应能力,同时减少人为干预。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种容灾降级方法,其特征在于,包括:
接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;
获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
2.根据权利要求1所述的方法,其特征在于,所述获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级包括:
获取所述当前预定时间段内对所述线程池内线程的调用量,当所述调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对所述依赖服务执行容灾降级。
3.根据权利要求1所述的方法,其特征在于,所述获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级包括:
获取所述当前预定时间段内对所述线程池内线程的调用可用率,当所述调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对所述依赖服务执行容灾降级。
4.根据权利要求1所述的方法,其特征在于,所述统计当前预定时间段内对所述线程池内线程的调用信息包括:
构建时间窗格,统计所述时间窗格内对所述线程池内线程的调用信息,确定所述当前预定时间段内所述时间窗格的数量,获取所述当前预定时间段内对所述线程池内线程的调用信息。
5.根据权利要求1-4中任一项所述的方法,其特征在于,在基于预定的降级方式对所述依赖服务执行容灾降级之后,还包括:
当检测到降级时间达到预定降级时间阈值时,结束所述容灾降级,调用所述依赖服务。
6.一种容灾降级装置,其特征在于,包括:
请求接收模块,用于接收对依赖服务的调用请求,获取与所述依赖服务相应的线程池的标识信息,以确定所述线程池;
降级执行模块,用于获取当前预定时间段内对所述线程池内线程的调用信息,当所述调用信息符合预定降级条件时,基于预定的降级方式对所述依赖服务执行容灾降级。
7.根据权利要求6所述的装置,其特征在于,所述降级执行模块,用于:
获取所述当前预定时间段内对所述线程池内线程的调用量,当所述调用量大于或等于预定调用量阈值时,基于预定的并发量降级方式对所述依赖服务执行容灾降级。
8.根据权利要求7所述的装置,其特征在于,所述降级执行模块,用于:
获取所述当前预定时间段内对所述线程池内线程的调用可用率,当所述调用可用率小于预定可用率阈值时,基于预定的可用率降级方式对所述依赖服务执行容灾降级。
9.根据权利要求7所述的装置,其特征在于,所述降级执行模块,用于:
构建时间窗格,统计所述时间窗格内对所述线程池内线程的调用信息,确定所述当前预定时间段内所述时间窗格的数量,获取所述当前预定时间段内对所述线程池内线程的调用信息。
10.根据权利要求6-9中任一项所述的装置,其特征在于,还包括服务调用模块,用于:
当检测到降级时间达到预定降级时间阈值时,结束所述容灾降级,调用所述依赖服务。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201810067212.XA 2018-01-24 2018-01-24 一种容灾降级的方法和装置 Active CN110069337B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810067212.XA CN110069337B (zh) 2018-01-24 2018-01-24 一种容灾降级的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810067212.XA CN110069337B (zh) 2018-01-24 2018-01-24 一种容灾降级的方法和装置

Publications (2)

Publication Number Publication Date
CN110069337A true CN110069337A (zh) 2019-07-30
CN110069337B CN110069337B (zh) 2024-07-16

Family

ID=67365478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810067212.XA Active CN110069337B (zh) 2018-01-24 2018-01-24 一种容灾降级的方法和装置

Country Status (1)

Country Link
CN (1) CN110069337B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971680A (zh) * 2019-11-22 2020-04-07 拉扎斯网络科技(上海)有限公司 通信方法、装置、***、电子设备及可读存储介质
CN112887109A (zh) * 2019-11-29 2021-06-01 北京百度网讯科技有限公司 基础设施区域的容灾处理方法、装置、设备及可读介质
CN113556370A (zh) * 2020-04-24 2021-10-26 北京沃东天骏信息技术有限公司 一种服务调用方法和装置
CN114338816A (zh) * 2021-12-22 2022-04-12 阿里巴巴(中国)有限公司 无服务器架构下的并发控制方法、装置、设备及存储介质
CN114595283A (zh) * 2021-12-17 2022-06-07 平安养老保险股份有限公司 基于医疗服务端的单点容错降级方法、装置、设备及介质
WO2022135158A1 (zh) * 2020-12-22 2022-06-30 网联清算有限公司 交易请求的处理方法、装置及交易转接***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101272280A (zh) * 2008-04-02 2008-09-24 北京邮电大学 一种Web服务管理的方法及***
US20100114928A1 (en) * 2008-11-06 2010-05-06 Yahoo! Inc. Diverse query recommendations using weighted set cover methodology
CN102595518A (zh) * 2011-01-14 2012-07-18 中兴通讯股份有限公司 一种保证家庭基站用户服务质量的方法和***
CN103023938A (zh) * 2011-09-26 2013-04-03 阿里巴巴集团控股有限公司 一种服务器集群的服务能力控制方法和***
CN105656962A (zh) * 2014-11-11 2016-06-08 阿里巴巴集团控股有限公司 一种服务调用方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101272280A (zh) * 2008-04-02 2008-09-24 北京邮电大学 一种Web服务管理的方法及***
US20100114928A1 (en) * 2008-11-06 2010-05-06 Yahoo! Inc. Diverse query recommendations using weighted set cover methodology
CN102595518A (zh) * 2011-01-14 2012-07-18 中兴通讯股份有限公司 一种保证家庭基站用户服务质量的方法和***
CN103023938A (zh) * 2011-09-26 2013-04-03 阿里巴巴集团控股有限公司 一种服务器集群的服务能力控制方法和***
CN105656962A (zh) * 2014-11-11 2016-06-08 阿里巴巴集团控股有限公司 一种服务调用方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971680A (zh) * 2019-11-22 2020-04-07 拉扎斯网络科技(上海)有限公司 通信方法、装置、***、电子设备及可读存储介质
CN110971680B (zh) * 2019-11-22 2022-01-28 拉扎斯网络科技(上海)有限公司 通信方法、装置、***、电子设备及可读存储介质
CN112887109A (zh) * 2019-11-29 2021-06-01 北京百度网讯科技有限公司 基础设施区域的容灾处理方法、装置、设备及可读介质
US11362885B2 (en) 2019-11-29 2022-06-14 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus, device and readable medium for disaster recovery processing for infrastructure areas
CN112887109B (zh) * 2019-11-29 2023-01-06 北京百度网讯科技有限公司 基础设施区域的容灾处理方法、装置、设备及可读介质
CN113556370A (zh) * 2020-04-24 2021-10-26 北京沃东天骏信息技术有限公司 一种服务调用方法和装置
WO2022135158A1 (zh) * 2020-12-22 2022-06-30 网联清算有限公司 交易请求的处理方法、装置及交易转接***
CN114595283A (zh) * 2021-12-17 2022-06-07 平安养老保险股份有限公司 基于医疗服务端的单点容错降级方法、装置、设备及介质
CN114338816A (zh) * 2021-12-22 2022-04-12 阿里巴巴(中国)有限公司 无服务器架构下的并发控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110069337B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
CN110069337A (zh) 一种容灾降级的方法和装置
CN109684358B (zh) 数据查询的方法和装置
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
EP2426871B1 (en) Method and device for scheduling data communication input ports
CN109879126B (zh) 一种电梯预约的方法和***
CN113422842B (zh) 一种考虑网络负载的分布式电力用电信息数据采集***
CN111813573B (zh) 管理平台与机器人软件的通信方法及其相关设备
CN108897854A (zh) 一种超时任务的监控方法和装置
CN109309736A (zh) 全局唯一id的生成方法和生成装置
CN110351366A (zh) 一种互联网应用的服务调度方法、***及计算机可读存储介质
CN110321252B (zh) 一种技能服务资源调度的方法和装置
CN109413125A (zh) 动态调节分布式***资源的方法和装置
CN112100034A (zh) 一种业务监控方法和装置
CN109597810A (zh) 一种任务切分方法、装置、介质及电子设备
CN109388655A (zh) 一种动态控制数据访问的方法和装置
CN116414534A (zh) 任务调度方法、装置、集成电路、网络设备及存储介质
CN116089049B (zh) 基于异步并行i/o请求的进程同步调度方法、装置以及设备
CN110071952A (zh) 服务调用量的控制方法和装置
CN113760982A (zh) 一种数据处理方法和装置
CN113760522A (zh) 一种任务处理方法和装置
CN109284177B (zh) 一种数据更新方法和装置
CN116521639A (zh) 一种日志数据的处理方法、电子设备和计算机可读介质
US20240118933A1 (en) Transaction Method and Apparatus with Fixed Execution Order
US11494239B2 (en) Method for allocating computing resources, electronic device, and computer program product

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