CN110377434A - 一种服务熔断方法、装置及消息中间件 - Google Patents

一种服务熔断方法、装置及消息中间件 Download PDF

Info

Publication number
CN110377434A
CN110377434A CN201910599006.8A CN201910599006A CN110377434A CN 110377434 A CN110377434 A CN 110377434A CN 201910599006 A CN201910599006 A CN 201910599006A CN 110377434 A CN110377434 A CN 110377434A
Authority
CN
China
Prior art keywords
message
queue
message queue
consumption
information
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.)
Pending
Application number
CN201910599006.8A
Other languages
English (en)
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910599006.8A priority Critical patent/CN110377434A/zh
Publication of CN110377434A publication Critical patent/CN110377434A/zh
Priority to PCT/CN2020/094418 priority patent/WO2021000693A1/zh
Pending legal-status Critical Current

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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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

一种服务熔断方法、装置及消息中间件
技术领域
本发明涉及金融(Fintech)科技的计算机技术领域,尤其涉及一种服务熔断方法、装置及消息中间件。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融行业正在逐步向金融科技(Fintech)转变,消息传输技术也不例外,但由于金融行业、支付行业的安全性、实时性要求,也对消息传输技术提出了更高的要求。
消息中间件是一种利用消息队列进行消息传输的中间件技术,消息中间件的消息队列中的消息的消费者往往是多个,以此来增加消息的消费能力和消费可靠性,但与此同时也带来了另外的问题,比如多个消费者中往往会出现个例,由于例如机器故障、网络抖动、程序故障等原因而导致消息消费不正常或者堵塞缓慢,但是由于消息的发送者无法感知到异常的消费者,这会导致消息生产者持续发送的消息堆积在消息队列中,从而可能产生业务故障,导致服务的稳定性和***的可靠性较差。
发明内容
本申请实施例提供一种服务熔断方法、装置及消息中间件,用于提高消息中间件的可靠性。
第一方面,提供一种服务熔断方法,所述方法包括:
获得消息队列组中的各个消息队列的消息消费状态信息;
根据各个消息对列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列;
确定针对所述目标消息队列的熔断隔离信息,其中,所述熔断隔离信息用于指示对所述目标信息队列进行熔断隔离;
将所述熔断隔离信息发送给消息生产者,以熔断所述目标消息队列对所述消息生产者的消息服务。
在一种可能的实现方式中,根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列,包括:
确定每个消息队列对于消费该消息队列的各个消息消费者组的消费组队列深度;其中,一个消息队列对于一个消息消费者组的消费组队列深度表明该消息队列中还未被该消息消费者组消费的消息的数量;
根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度;
若一个消息队列的队列级深度在第一预定时长内持续大于预定队列级深度阈值,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
在一种可能的实现方式中,根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度,包括:
若一个消息队列仅被一个消息消费者组消费,则将该消息队列对于该消息消费者组的消费组队列深度确定为该消息队列的队列级深度;
若一个消息队列被多个消息消费者组消费,则根据该消息队列分别对于所述多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度。
在一种可能的实现方式中,按照以下方式确定各个消息队列对于各个消息消费者组的消费组队列深度:
实时检测一个消息队列对于各个消息消费者组的消费进度更新和消息总量更新;并根据实时更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度;
或者,
按照预设频率扫描本地维护的队列状态记录文件;并从所述队列状态记录文件中记录的各个消息队列更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。
在一种可能的实现方式中,根据一个消息队列分别对于多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度,包括:
将一个消息队列对应的多个消费组队列深度中满足预定选择规则的消费组队列深度确定为该消息队列的队列级深度;或者,
采用预定计算方式对一个消息队列对应的多个消费组队列深度进行计算处理,并将计算结果确定为该消息队列的队列级深度。
在一种可能的实现方式中,根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列,包括:
确定各个消息队列在第二预定时长内的多个相邻周期的多个消息消费速率;
若一个消息队列的多个消息消费速率均小于预定消息消费速率,则确定该消息队列为满足所述预设隔离条件的目标消息队列;或者,
若一个消息队列的多个消息消费速率呈逐渐减小的变化趋势,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
在一种可能的实现方式中,所述熔断隔离信息还用于指示对于所述目标消息队列进行熔断隔离的隔离时长。
在一种可能的实现方式中,在将所述熔断隔离信息发送给消息生产者之后,所述方法还包括:
在所述目标消息队列不再满足所述预设隔离条件时,向所述消息生产者集群发送熔断撤销信息,其中,所述熔断撤销信息用于指示结束对所述目标消息队列的熔断隔离。
第二方面,本提供一种消息中间件,包括:
获得模块,用于获得消息队列组中的各个消息队列的消息消费状态信息;
第一确定模块,用于根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列;
第二确定模块,用于确定针对所述目标消息队列的熔断隔离信息,其中,所述熔断隔离信息用于指示对所述目标消息队列进行熔断隔离;
发送模块,用于将所述熔断隔离信息发送给消息生产者,以熔断所述目标消息队列对所述消息生产者的消息服务。
在一种可能的实现方式中,所述第一确定模块用于:
确定每个消息队列对于消费该消息队列的各个消息消费者组的消费组队列深度;其中,一个消息队列对于一个消息消费者组的消费组队列深度表明该消息队列中还未被该消息消费者组消费的消息的数量;
根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度;
若一个消息队列的队列级深度在第一预定时长内持续大于预定队列级深度阈值,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
在一种可能的实现方式中,所述第一确定模块用于:
若一个消息队列仅被一个消息消费者组消费,则将该消息队列对于该消息消费者组的消费组队列深度确定为该消息队列的队列级深度;
若一个消息队列被多个消息消费者组消费,则根据该消息队列分别对于所述多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度。
在一种可能的实现方式中,所述第一确定模块用于:
实时检测一个消息队列对于各个消息消费者组的消费进度更新和消息总量更新;并根据实时更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度;
或者,
按照预设频率扫描本地维护的队列状态记录文件;并从所述队列状态记录文件中记录的各个消息队列更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。
在一种可能的实现方式中,所述第一确定模块用于:
将一个消息队列对应的多个消费组队列深度中满足预定选择规则的消费组队列深度确定为该消息队列的队列级深度;或者,
采用预定计算方式对一个消息队列对应的多个消费组队列深度进行计算处理,并将计算结果确定为该消息队列的队列级深度。
在一种可能的实现方式中,所述第一确定模块用于:
确定各个消息队列在第二预定时长内的多个相邻周期的多个消息消费速率;
若一个消息队列的多个消息消费速率均小于预定消息消费速率,则确定该消息队列为满足所述预设隔离条件的目标消息队列;或者,
若一个消息队列的多个消息消费速率呈逐渐减小的变化趋势,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
在一种可能的实现方式中,所述熔断隔离信息还用于指示对于所述目标消息队列进行熔断隔离的隔离时长。
在一种可能的实现方式中,所述发送模块还用于:
在将所述熔断隔离信息发送给消息生产者之后,在所述目标消息队列不再满足所述预设隔离条件时,向所述消息生产者集群发送熔断撤销信息,其中,所述熔断撤销信息用于指示结束对所述目标消息队列的熔断隔离。
第三方面,提供一种服务熔断装置,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面中任一所述的服务熔断方法的步骤。
第四方面,提供一种存储介质,所述存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行上述第一方面中任一所述的服务熔断方法的步骤。
本申请实施例提出了一种面向消息队列的服务熔断方法,在该方法中,将熔断隔离机制应用到消息中间件的消息传递过程中,能够有效地识别消息队列中的异常消费情况,进而识别出存在异常的消息队列以及对应的异常的消费者,进而通过向消息生产者发送熔断信号(即熔断隔离信息)的方式来通知异常的消息队列,使得消息生产者能够及时地感知到消息队列服务中的异常消息队列,并根据熔断隔离信息的指示暂时停止向异常的消息队列继续发送消息,从而熔断异常的消息队列对消息生产者的消息服务,这样,可以尽可能地让更多的消息被正常的消费者消息,而暂时地隔离异常的消费者,进而提高服务的稳定性和***的可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为利用消息中间件技术传递消息的示意图;
图2a为本申请实施例中在正常情况下,通过消息中间件中的消息队列传递消息的示意图;
图2b为本申请实施例中在存在异常消费者的情况下,通过熔断机制在消息中间件中的消息队列传递消息的示意图;
图3为本申请实施例中的服务熔断方法的流程图;
图4为本申请实施例中的消息队列中的消费者的消费进度的示意图;
图5为本申请实施例中的一个消息队列的两个消息消费者组在该消息队列中的消费进度的示意图;
图6为本申请实施例中的消息中间件的结构框图;
图7为本申请实施例中的服务熔断装置的结构示意图;
图8为本申请实施例中的服务熔断装置的另一结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中,“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本发明实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
以下对本文中涉及的部分技术用语进行说明。
1、消息中间件,又称作消息的中间件或面向消息的中间件,是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式***的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式***架构中的一个重要组件,有着举足轻重的地位。
消息中间件基于消息队列(Queue)的存储-转发机制,并提供特有的异步传输机制,能够基于消息传输和异步事物处理实现应用整合与数据交换。在消息中间件中传递的信息统称为消息,它是数据交换的基本单位。
请参见图1所示的利用消息中间件进行消息传递的示意图,包括消息中间件、消息生产者集群和消息消费者集群这三部分。
其中,消息生产者集群是指包括多个消息生产者的集群,如图1中所示的消息生产者A、消息生产者B和消息生产者C,每个消息生产者可以各自调用发送消息的API接口,将需要发送的消息通过消息队列服务发送到消息中间件中的队列中。
消息中间件中可以部署有多个逻辑上的消息队列,例如图1中所示的消息队列Q1、Q2、Q3、Q4,消息中间件对应部署有消息中间件服务端(Broker,图1中未示出),Broker用于提供维护Topic(消息主题)与Queue的映射关系,存储消息等能力,同时,Broker端还可以定时定量检测每个Queue的消息堆积情况。在消息中间件中,一个Topic可以对应维护有一个消息队列组,即一个Topic可以对应一个或多个消息队列,该消息队列组中的消息队列均用于为该Topic提供消息服务。
消息消费者集群是指包括多个消息消费者的集群,如图1中所示的消息消费者E、消息消费者F和消息消费者G,每个消息消费者可以调用接收消息的API接口从消息中间件处获得消息,这个过程即可以理解为是消费消息,从而完成了到消息生产者到消息消费者之间的消息传递。
2、服务熔断,为考虑***的可靠性,防止***的整体缓慢甚至奔溃的一种安全机制,可以理解为断开相应的服务。
以下介绍本申请的设计思想。
如前所述的,现有的消息中间件技术中,若消息消费者中出现例如由于网络抖动或机器故障的异常消费者时,而由于消息生产者无法感知这一异常,还是正常的往消息队列中发送消息,由于异常消费者无法再正常的消费该消息队列中的消息,这将会导致消息队列中的消息出现大量堆积,直至Broker磁盘写满,消息生产者可能才能感知到前述的异常,而Broker磁盘写满可能引起其它消息队列的消费也出现异常,例如出现雪崩现象,所以,现有的消息中间件技术中,容易出现消息传递异常而导致服务稳定性下降,***的可靠性较差,这种情况不符合银行等金融机构开展业务(如存款业务、查账业务等)的需求。
如参见图2a所示,图2a为在正常情况下通过消息中间件传递消息的示意图,现有技术中均是按照此方式传递消息。在图2a中,Q1、Q2、Q3和Q4可以是针对同一Topic的消息队列组,消息生产者采用轮询的方式往各个消息队列中发送消息,消息消费者1消费Q1和Q2,消息消费者2消费Q2、Q3和Q4,也就是说,一个消息队列可能同时被一个或多个消息消费者消费,而图2a中的消息消费者1和消息消费者2均可以是指一类同质消费者实例的消息消费者组,换言之,一个消息队列可能同时被多个消息消费组消费,所以,本申请实施例中将一类同质消费者或者一个消息消费者均统称为消息消费者组。按照现有的方式,即使某个消息消费者组出现消费异常而导致对应消费的消息队列出现异常,由于消息生产者无法感知这些异常,所以仍然会正常的往各个消息队列中发送消息,进而影响***的可靠性。
鉴于此,本申请实施例提出了一种面向消息队列的服务熔断方法,通过该方法,将熔断隔离机制应用到消息中间件的消息传递过程中,能够有效地识别消息队列中的异常消费情况,进而识别出存在异常的消息队列以及对应的异常的消费者,进而通过向消息生产者发送熔断信号(即熔断隔离信息)的方式来通知异常的消息队列,使得消息生产者能够及时地感知到消息队列服务中的异常消息队列,并根据熔断隔离信息的指示暂时停止向异常的消息队列继续发送消息,从而熔断异常的消息队列对消息生产者的消息服务,这样,可以尽可能地让更多的消息被正常的消费者消息,而暂时地隔离异常的消费者,进而提高服务稳定性和***的可靠性。
请参见图2b所示,图2b为在存在异常消费者的情况下,通过本申请实施例中的面向消息队列的熔断隔离机制后的消息传递的示意图,以Q4出现异常为例,当Broker端检测到Q4出现异常之后,则可以向消息生产者发送针对Q4的熔断隔离信息,以通过该熔断隔离信息及时地告知消息生产者需要暂时隔离Q4,根据该熔断隔离信息的指示,消息生产者在下次轮询时则会对Q4进行隔离而不再对其进行轮询,即不会继续向Q4中发送消息,通过熔断Q4对消息生产者的消息服务,可以实现对Q4的隔离保护,以避免Q4中持续堆积大量消息而导致***异常,提高整个消息中间件的消息队列服务的稳定性,依次提高整个***的可靠性。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。
基于上述内容,本申请实施例提供一种服务熔断方法,该服务熔断方法可以部署到消息中间件中,例如可以由前述提到的消息中间件中的Broker端执行该方法的各个步骤,请参见图3所示,本申请实施例中的服务熔断方法的流程描述如下。
步骤301:获得消息队列组中的各个消息队列的消息消费状态信息。
其中,消息队列组可以是一个Topic下的一个或多个消息队列的集合,或者在其它的一些实施方式中,该消息队列组也可能是针对不同的Topic下的多个消息队列的集合,换言之,本申请实施例中的消息队列组可以包括一个或多个消息队列,也就是说,可以检测消息中间件中用于提供消息队列服务的每个消息队列的消息消费状态信息,在具体实施过程中,例如可以由Broker端实时或者定时地检测各个消息队列的消息消费状态信息。
本申请实施例中的一个消息队列的消息消费状态信息,是用于表明该消息队列中的消息被消费的实时情况的信息,本申请实施例中的消息消费状态信息例如可以包括以下信息:该消息队列中的消息被哪些消费者组消费、每个消息消费者组的当前消费进度、每个消息消费者组的历史消费数量、该消息队列中当前的总消息数量,等等。
步骤302:根据各个消息队列的消息消费状态信息,从消息队列中确定满足预设隔离条件的目标消息队列。
在获得了各个消息队列的消息消费状态信息之后,则可以根据每个消息队列的消息消费状态信息来确定当前可能出现消费异常的消息队列,为了便于描述,本申请实施例中将确定出的当前可能出现消费异常而需要被隔离保护的消息队列称作目标消息队列。
需要说明的是,在具体实施过程中,可以将所有消息队列的消息消费状态信息获取之后才进行异常消息队列的判断;或者另一种可能的实施方式中,也可以是在获得一个消息对列的消息消费状态信息之后,就及时地对该消息队列当前是否出现消费异常进行动态的判断,这样确保检测的及时性,从而实现更及时更有效的控制。
在具体实施过程中,例如可以采用以下两种方式确定目标消息队列。
第一种确定方式
如前所述的,一个消息队列有可能仅被一个消息消费者组消费,或者也可能同时被多个消息消费者组消费,所以本申请实施例中在考虑一个消息队列的消费情况时,可以综合消费该消息队列的所有消息消费者组的消费情况综合考虑。为此,本申请实施例中,针对一个消息队列,提出了消费组队列深度(例如以Depth_Q_G表示)和队列级深度(例如以Depth_Q表示)这两个概念。其中:
一个消息队列对于一个消息消费者组的消费组队列深度(Depth_Q_G)表明该消息队列中还未被该消息消费者组消费的消息的数量。
一个消息队列的队列级深度是根据消费该消息队列的各个消息消费者组对应的所有消费组队列深度计算得到的,队列级深度是用于衡量该消息队列的所有消息消费者组的对该消息队列中的消息的总体消费情况。
如图4所示的本申请实施例中的消息队列中的消费者组的消费进度的示意图,其中MaxOffset表明消息队列中包括的消息总量,而ConsumerOffset表明某个消息消费者组当前实际的消费进度。再结合图5理解,假设同时有两个消息消费者(即消费组1和消费组2)对同一消息队列消费,消费组1的当前消费进度(即ConsumerOffset1)为Msg2,即可以理解为消费组1当前正消费到编号为“2”的消息,以及消费组2的当前消费进度(即ConsumerOffset2)为Msg4,即可以理解为消费组2当前正消费到编号为“4”的消息。
进一步地,在确定消息队列中的消息总量和每个消息消费者组的当前消费进度之后,按照Depth_Q_G=MaxOffset-ConsumerOffset的公式,则可以计算出每个消息消费者组对应的消费组队列深度,可见,消费组队列深度是一个消息队列相对于一个特定的消息消费者组而言的,消费组队列深度表明了一个消息消费者组在一个消息队列中的还未消费的消息的余量,换言之,通过消费组队列深度可以知晓一个消息队列对于一个消息消费者组的消息堆积情况。
所以,在第一种确定方式中,可以先确定每个消息队列对于消费该消息队列的各个消息消费者组的消费组队列深度,再根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度,进一步地,再根据一个消息队列的队列级深度来判断该消息队列是否是消费出现异常的目标消息队列。
在一种可能的实施方式中,例如可以为每个消息队列设置最大容许深度的属性,即可以预先设置一个预定队列级深度阈值(例如以MaxDepth表示),通过该阈值与实际的队列级深度的量化比较来实现异常消息消费的判断。在具体实施过程中,可以为每个消息队列设置相同的MaxDepth,或者也可以根据每个消息队列对应的消费者性能对MaxDepth进行适当调整,进而可以为各个消息队列设置差异化的MaxDepth,以尽量与实际的消息消费对象相符。
进一步地,对于一个消息队列,若该消息队列的Depth_Q大于MaxDepth,即表明该消息队列中的消息堆积量较大,此时则可以认为对应的消费者可能出现消费异常,即表明该消息队列出现消费异常,此时则可以将其确定为目标消息队列。另外,为了确保判断准确,以尽量减少由于网络抖动等临时的瞬态的网络异常,可以判断在一定时长(例如第一预定时长)内,Depth_Q是否持续大于MaxDepth,若是,则可以最终将该消息队列确定为是需要暂时被熔断隔离的目标消息队列。
如前所述的,在实际中,一个消息队列可能对应一个或多个消息消费者组,针对不同情形以下分别说明队列级深度Depth_Q的确定方式。
情形1:一个消息队列仅被一个消息消费者组消费,此时该消息队列的消费情况则完全通过该消息消费者组消费的消费情况决定,所以,可以直接将该消息队列对于该消息消费者组的消费组队列深度确定为该消息队列的队列级深度。
情形2:一个消息队列同时被多个消息消费者组消费,此时则可以根据该消息队列分别对于多个消息消费者组的多个消费组队列深度综合确定该消息队列的队列级深度。
针对情形2,一种可能的实施方式是,可以按照预定选择规则,将多个消费组队列深度中满足预定选择规则的消费组队列深度确定为该消息队列的队列级深度。例如,一个消息队列对应的消息消费者组有4个,这4个消息消费者组对应该消息队列的消费组队列深度分别以Depth_Q_G1、Depth_Q_G2、Depth_Q_G3和Depth_Q_G4表示,那么则可以以下公式表示Depth_Q的计算:
Depth_Q={Depth_Q_G1,Depth_Q_G2,Depth_Q_G3,Depth_Q_G4}。
即,消息队列的Depth_Q为多个消费组队列深度中的可能的一个,例如是最大的消费组队列深度,或者是最小的消费组队列深度,或者是取值大概处于中间的消费组队列深度,等等。例如当以最大的消费组队列深度直接作为消息队列的Depth_Q时,即以消费最慢的消息消费者组为准,这样可以尽量地将可能出现的异常就确定为实际需要熔断隔离的异常,以尽量确保熔断隔离的及时性,尽量确保***可靠性。所以,本申请实施例中的预定选择规则即表明从多个消费组队列深度中直接选择其中一个作为消息队列的队列级深度,即可以一个消息消费者组的消费情况大致代表所有消息消费者组的消费情况,这样可以提高选择的灵活性,可以针对不同的实际业务需求灵活选择。
针对情形2,另一种可能的实施方式是,采用预定计算方式对多个消费组队列深度进行计算处理,并将计算结果确定为该消息队列的队列级深度,例如可以采用平均值算法,或者可以采用加权后再求平均值的算法,等等。在该实施方式中,可以综合将所有的消费组队列深度完全作为其中的一部分考虑因为,可以在一定程度上将队列级深度进行泛化,以尽量确保隔离的准确性。
另外,在具体实施过程中,对于各个消息消费者组的消费组队列深度,大致可以采用以下两种方式来进行计算。
方式一:分散式实时计算。
对于分散式实时计算的方式,可以实时检测一个消息队列对于各个消息消费者组的消费进度更新和消息总量更新,并根据实时更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。具体来说,对于一个消息队列对应的每个消息消费者组来说,在每产生一次MaxOffset的变化(如有新消息)以及每产生一次ConsumerOffset的变化(如消息被正常消费)后,都能及时动态地对该消息消费者组的Depth_Q_G进行增减。通过动态地实时地计算,可以尽量的减少时延,以尽量确保各个消息消费者组的消费组队列深度的准确性和时效性。
方式二:集中式异步计算。
对于集中式异步计算的方式,可以按照预设频率扫描本地维护的队列状态记录文件,并从该队列状态记录文件中记录的各个消息队列更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。具体来说,Broker端可以旁路扫描本地维护的Topic,以Topic为索引,针对各个消息消费者组查询对应消费的消息队列中记录的MaxOffset与ConsumerOffset,从而通过旁路查找记录文件的方式可以以一定频率计算出一个消息队列的各个消息消费者组的消费组队列深度,计算频次可以根据实际使用场景调整,可以看出,集中式异步计算可以减少大量的计算次数,且因为旁路的原因,对实际消息的产生存储与消费过程的影响较小。
综上,在第一种确定方式中,通过消费组队列深度和队列级深度,在对一个消息队列是否异常进行判断时,是将与其对应的消息消费者组的实际消费情况考虑在内,这样从队列本身以及与其对应的消息消费者组这两个维度来综合考虑,可以在一定程度上确保异常消息队列判断的准确性和有效性。
第二种确定方式
在第二种确定方式中,可以先确定各个消息队列在一定时长(例如第二预定时长)的多个相邻周期的多个消息消费速率,其中,消息消费速率可以通过消息数量的变化速率来表示,所以消息消费速率,可以反映消息队列中的消息在一定时间内被消费的波动情况。因为一般来说,在未出现异常消费的情况下,消费者是以比较均匀的消费速率来消费消息的,一般不会长时间的出现较大幅度的消费波动,基于此,本申请实施例中通过消息消费速率来间接的反映消息消费是否异常。
一种可能的实施方式是,若一个消息队列的多个消息消费速率均小于预定消息消费速率,则确定该消息队列为需要隔离的目标消息队列。因为若相邻的多个检测周期的多个消息消费速率均小于预定消息消费速率,则可以表明对应该消息队列在一定时长内均被异常的小数量消费,这与正常的消费情况一般是存在差异的,所以可以采用该方式来确定异常的消费。
另一种可能的实施方式是,若一个消息队列的多个消息消费速率呈逐渐减小的变化趋势,则确定该消息队列为需要隔离的目标消息队列,因为,若相邻的多个检测周期的多个消息消费速率逐渐减小,则说明该消息队列中的消息被消费的越来越慢,这也可以认为是一种异常的消费情况,所以可以采用该方式来确定异常的消费。
步骤303:确定针对目标消息队列的熔断隔离信息。
在采用上述介绍的方式确定出需要被隔离的目标消息队列之后,则可以生成针对这些目标消息队列的熔断隔离信息,而针对生成的熔断隔离信息,则是用于指示需要对这些目标消息对列进行熔断隔离,通过熔断隔离的方式,可以暂时地对这些目标消息队列进行一定程度的隔离保护,以避免更多的消息持续的发送到目标消息队列中,从而实现对异常消费者的隔离,同时也避免了消息中间件的磁盘溢出,以确保服务的稳定和***的可靠性。
步骤304:将熔断隔离信息发送给消息生产者,以熔断目标消息队列对该消息生产者的消息服务。
进一步地,在生成上述的熔断隔离信息之后,则可以将其发送给这些目标消息队列的消息生产者,消息生产者根据该熔断隔离信息的指示,则在轮询发送消息时就可以不再轮询这些目标消息队列,进而也就不会再往目标消息队列发送消息,从而实现目标消息队列对消息生产者的消息服务,确保***的可靠性。
在本申请实施例中,在确定出需要被熔断隔离的目标消息队列之后,还可以进一步地计算各个目标消息队列需要给隔离的隔离时长。具体来说,Broker端可以根据这些目标消息队列对应的异常消费者的消费异常原因来预测异常恢复的时间,进而将该将时间确定为对应的目标消息队列需要被隔离的隔离时长。例如,若确定是由于网络抖动原因,因为一般来说网络抖动持续时间较短,则可以将隔离时长预测为3秒。进一步地,可以将确定出的隔离时长携带在熔断隔离信息中一并发送给消息生产者,这样,消息生产者在收到熔断隔离信息之后,可以同时确定各个目标消息队列被隔离的隔离时长,进而可以在经过所指示的隔离时长后,自动撤销对目标消息队列的隔离,即恢复对其继续发送消息,以及时充分地利用消息中间件的消息队列服务。
在另一种实施方式中,若熔断隔离信息中并未包括隔离时长,那么在向消息生产者发送熔断隔离信息之后,则可以再检测正在被隔离的目标消息队列是否不再满足前述的预设隔离条件,一旦发现不满足,则可以确定消费者端的异常消费问题已经解决,此时则可以及时地再向消息生产者发送熔断撤销信息,以通过该熔断撤销信息指示结束对目标消息队列的熔断隔离,即恢复继续向目标消息队列发送消息的权限,以及时充分地利用消息中间件的消息队列服务。
本申请实施例,将熔断隔离机制巧妙地运用在了消息中间件技术中,通过面向消息队列的熔断隔离方式,可以在一定程度上对异常的消息消费者进行隔离,以确保消息服务的稳定性以及整个中间件***的可靠性。这样,例如在银行等金融机构开展的存款业务、查账业务、支付业务等业务场景中,可以尽量确保业务的稳定性,增强用户的使用体验。
基于同一发明构思,本申请实施例提供一种消息中间件。该消息中间件可以是前述方法实施例中所提到的消息中间件,基于该消息中间件可以实现前述实施例中的服务熔断方法。请参见图6所示,本申请实施例中的消息中间件包括获得模块601、第一确定模块602、第二确定模块603和发送模块604,其中:
获得模块601,用于获得消息队列组中的各个消息队列的消息消费状态信息;
第一确定模块602,用于根据各个消息队列的消息消费状态信息,从消息队列组中确定满足预设隔离条件的目标消息队列;
第二确定模块603,用于确定针对目标消息队列的熔断隔离信息,其中,熔断隔离信息用于指示对目标消息队列进行熔断隔离;
发送模块604,用于将熔断隔离信息发送给消息生产者,以熔断目标消息队列对消息生产者的消息服务。
在一种可能的实施方式中,第一确定模块602用于:
确定每个消息队列对于消费该消息队列的各个消息消费者组的消费组队列深度,其中,一个消息队列对于一个消息消费者组的消费组队列深度表明该消息队列中还未被该消息消费者组消费的消息的数量;并根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度;以及若一个消息队列的队列级深度在第一预定时长内持续大于预定队列级深度阈值,则确定该消息队列为满足预设隔离条件的目标消息队列。
在一种可能的实施方式中,第一确定模块602用于:
若一个消息队列仅被一个消息消费者组消费,则将该消息队列对于该消息消费者组的消费组队列深度确定为该消息队列的队列级深度;
若一个消息队列被多个消息消费者组消费,则根据该消息队列分别对于多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度。
在一种可能的实施方式中,第一确定模块602用于:
实时检测一个消息队列对于各个消息消费者组的消费进度更新和消息总量更新;并根据实时更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度;
或者,
按照预设频率扫描本地维护的队列状态记录文件;并从队列状态记录文件中记录的各个消息队列更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。
在一种可能的实施方式中,第一确定模块602用于:
将一个消息队列对应的多个消费组队列深度中满足预定选择规则的消费组队列深度确定为该消息队列的队列级深度;或者,
采用预定计算方式对一个消息队列对应的多个消费组队列深度进行计算处理,并将计算结果确定为该消息队列的队列级深度。
在一种可能的实施方式中,第一确定模块602用于:
确定各个消息队列在第二预定时长内的多个相邻周期的多个消息消费速率;
若一个消息队列的多个消息消费速率均小于预定消息消费速率,则确定该消息队列为满足预设隔离条件的目标消息队列;或者,
若一个消息队列的多个消息消费速率呈逐渐减小的变化趋势,则确定该消息队列为满足预设隔离条件的目标消息队列。
在一种可能的实施方式中,熔断隔离信息还用于指示对于目标消息队列进行熔断隔离的隔离时长。
在一种可能的实施方式中,发送模块604还用于:
在将熔断隔离信息发送给消息生产者之后,在目标消息队列不再满足预设隔离条件时,向消息生产者集群发送熔断撤销信息,其中,熔断撤销信息用于指示结束对目标消息队列的熔断隔离。
前述的服务熔断方法的实施例涉及的各步骤的所有相关内容均可援引到本申请施例中的图像处理装置所对应的功能模块的功能描述,在此不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,基于同一发明构思,本申请实施例还提供一种服务熔断装置,该服务熔断装置例如是前述方法实施例中所说明的消息中间件或消息中间件中的Broker服务端,如图7所示,本申请实施例中的服务熔断装置包括至少一个处理器701,以及与至少一个处理器701连接的存储器702和通信接口703,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例,总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前述的全链路性能测试方法中所包括的步骤。
其中,处理器701是服务熔断装置的控制中心,可以利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器701可包括一个或多个处理模块,处理器701可集成应用处理器和调制解调处理器,其中,处理器701主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通信接口703是能够用于进行通信的传输接口,可以通过通信接口703接收数据或者发送数据,例如可以通过通信接口703接收其它设备发送的对业务***进行性能测试所需的数据,以及,还可以通过该通信接口703将获得的性能测试结果发送给其它设备。
参见图8所示的服务熔断装置的进一步地的结构示意图,该服务熔断装置还包括帮助服务熔断装置内的各个器件之间传输信息的基本输入/输出***(I/O***)801、用于存储操作***802、应用程序803和其他程序模块804的大容量存储设备805。
基本输入/输出***801包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备807。其中显示器808和输入设备807都通过连接到***总线700的基本输入/输出***801连接到处理器701。所述基本输入/输出***801还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备805通过连接到***总线700的大容量存储控制器(未示出)连接到处理器701。所述大容量存储设备805及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备805可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
根据本发明的各种实施例,该服务熔断装置包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该服务熔断装置可以通过连接在所述***总线700上的通信接口703连接到网络806,或者说,也可以使用通信接口703来连接到其他类型的网络或远程计算机***(未示出)。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质例如是计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的服务熔断方法的步骤。
在一些可能的实施方式中,本申请实施例提供的服务熔断方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文述描述的根据本发明各种示例性实施方式的服务熔断方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1.一种服务熔断方法,其特征在于,所述方法包括:
获得消息队列组中的各个消息队列的消息消费状态信息;
根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列;
确定针对所述目标消息队列的熔断隔离信息,其中,所述熔断隔离信息用于指示对所述目标消息队列进行熔断隔离;
将所述熔断隔离信息发送给消息生产者,以熔断所述目标消息队列对所述消息生产者的消息服务。
2.如权利要求1所述的方法,其特征在于,根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列,包括:
确定每个消息队列对于消费该消息队列的各个消息消费者组的消费组队列深度;其中,一个消息队列对于一个消息消费者组的消费组队列深度表明该消息队列中还未被该消息消费者组消费的消息的数量;
根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度;
若一个消息队列的队列级深度在第一预定时长内持续大于预定队列级深度阈值,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
3.如权利要求2所述的方法,其特征在于,根据每个消息队列对应的所有消费组队列深度,确定该消息队列的队列级深度,包括:
若一个消息队列仅被一个消息消费者组消费,则将该消息队列对于该消息消费者组的消费组队列深度确定为该消息队列的队列级深度;
若一个消息队列被多个消息消费者组消费,则根据该消息队列分别对于所述多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度。
4.如权利要求3所述的方法,其特征在于,按照以下方式确定各个消息队列对于各个消息消费者组的消费组队列深度:
实时检测一个消息队列对于各个消息消费者组的消费进度更新和消息总量更新;并根据实时更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度;
或者,
按照预设频率扫描本地维护的队列状态记录文件;并从所述队列状态记录文件中记录的各个消息队列更新后的消息总量和消费进度确定该消息队列对于每个消息消费者组的消费组队列深度。
5.如权利要求3所述的方法,其特征在于,根据一个消息队列分别对于多个消息消费者组的多个消费组队列深度确定该消息队列的队列级深度,包括:
将一个消息队列对应的多个消费组队列深度中满足预定选择规则的消费组队列深度确定为该消息队列的队列级深度;或者,
采用预定计算方式对一个消息队列对应的多个消费组队列深度进行计算处理,并将计算结果确定为该消息队列的队列级深度。
6.如权利要求1所述的方法,其特征在于,根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列,包括:
确定各个消息队列在第二预定时长内的多个相邻周期的多个消息消费速率;
若一个消息队列的多个消息消费速率均小于预定消息消费速率,则确定该消息队列为满足所述预设隔离条件的目标消息队列;或者,
若一个消息队列的多个消息消费速率呈逐渐减小的变化趋势,则确定该消息队列为满足所述预设隔离条件的目标消息队列。
7.如权利要求1-6任一所述的方法,其特征在于,所述熔断隔离信息还用于指示对于所述目标消息队列进行熔断隔离的隔离时长。
8.如权利要求1-6任一所述的方法,其特征在于,在将所述熔断隔离信息发送给消息生产者之后,所述方法还包括:
在所述目标消息队列不再满足所述预设隔离条件时,向所述消息生产者集群发送熔断撤销信息,其中,所述熔断撤销信息用于指示结束对所述目标消息队列的熔断隔离。
9.一种消息中间件,其特征在于,包括:
获得模块,用于获得消息队列组中的各个消息队列的消息消费状态信息;
第一确定模块,用于根据各个消息队列的消息消费状态信息,从所述消息队列组中确定满足预设隔离条件的目标消息队列;
第二确定模块,用于确定针对所述目标消息队列的熔断隔离信息,其中,所述熔断隔离信息用于指示对所述目标消息队列进行熔断隔离;
发送模块,用于将所述熔断隔离信息发送给消息生产者,以熔断所述目标消息队列对所述消息生产者的消息服务。
10.一种服务熔断装置,其特征在于,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1-8任一项所述方法的步骤。
11.一种存储介质,其特征在于,所述存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-8任一项所述方法的步骤。
CN201910599006.8A 2019-07-04 2019-07-04 一种服务熔断方法、装置及消息中间件 Pending CN110377434A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910599006.8A CN110377434A (zh) 2019-07-04 2019-07-04 一种服务熔断方法、装置及消息中间件
PCT/CN2020/094418 WO2021000693A1 (zh) 2019-07-04 2020-06-04 一种服务熔断方法、装置及消息中间件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910599006.8A CN110377434A (zh) 2019-07-04 2019-07-04 一种服务熔断方法、装置及消息中间件

Publications (1)

Publication Number Publication Date
CN110377434A true CN110377434A (zh) 2019-10-25

Family

ID=68251973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910599006.8A Pending CN110377434A (zh) 2019-07-04 2019-07-04 一种服务熔断方法、装置及消息中间件

Country Status (2)

Country Link
CN (1) CN110377434A (zh)
WO (1) WO2021000693A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083199A (zh) * 2019-11-23 2020-04-28 上海畅星软件有限公司 基于高并发、高可用性、服务可扩展的平台处理架构
CN111290696A (zh) * 2020-02-26 2020-06-16 平安银行股份有限公司 一种应用程序组件的流控方法及装置
CN111459819A (zh) * 2020-03-31 2020-07-28 北京百度网讯科技有限公司 软件测试方法及装置、电子设备、计算机可读介质
CN111522672A (zh) * 2020-04-24 2020-08-11 北京思特奇信息技术股份有限公司 一种用于熔断数据重复消费的方法及***
CN111552587A (zh) * 2020-04-30 2020-08-18 武汉众邦银行股份有限公司 一种基于滑动时间窗的服务熔断方法
WO2021000693A1 (zh) * 2019-07-04 2021-01-07 深圳前海微众银行股份有限公司 一种服务熔断方法、装置及消息中间件
CN112988434A (zh) * 2019-12-13 2021-06-18 ***股份有限公司 一种服务熔断器、服务熔断方法以及计算机可读存储介质
CN113676398A (zh) * 2021-08-26 2021-11-19 深信服科技股份有限公司 一种数据恢复方法、装置、设备及可读存储介质
CN113849325A (zh) * 2021-09-29 2021-12-28 四川新网银行股份有限公司 基于分布式消费信贷RabbitMQ熔断方法及***
CN113965624A (zh) * 2020-06-29 2022-01-21 中国电信股份有限公司 用于消息处理的方法、消息缓存中间件和业务***

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112764892A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 管理进程的方法、设备和计算机程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10169137B2 (en) * 2015-11-18 2019-01-01 International Business Machines Corporation Dynamically detecting and interrupting excessive execution time
CN108664337A (zh) * 2018-03-23 2018-10-16 北京奇艺世纪科技有限公司 一种分布式***的消息减压方法和装置
CN109240765B (zh) * 2018-08-28 2021-08-10 中国联合网络通信集团有限公司 服务资源的熔断方法、装置、设备及计算机可读存储介质
CN109347757B (zh) * 2018-11-09 2022-12-09 锐捷网络股份有限公司 消息拥塞控制方法、***、设备及存储介质
CN109710421B (zh) * 2018-11-16 2020-12-08 深圳证券交易所 消息中间件的接收者异常处理方法、服务器及存储介质
CN110377434A (zh) * 2019-07-04 2019-10-25 深圳前海微众银行股份有限公司 一种服务熔断方法、装置及消息中间件

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021000693A1 (zh) * 2019-07-04 2021-01-07 深圳前海微众银行股份有限公司 一种服务熔断方法、装置及消息中间件
CN111083199A (zh) * 2019-11-23 2020-04-28 上海畅星软件有限公司 基于高并发、高可用性、服务可扩展的平台处理架构
CN112988434B (zh) * 2019-12-13 2024-05-03 ***股份有限公司 一种服务熔断器、服务熔断方法以及计算机可读存储介质
CN112988434A (zh) * 2019-12-13 2021-06-18 ***股份有限公司 一种服务熔断器、服务熔断方法以及计算机可读存储介质
CN111290696A (zh) * 2020-02-26 2020-06-16 平安银行股份有限公司 一种应用程序组件的流控方法及装置
CN111459819B (zh) * 2020-03-31 2023-08-29 北京百度网讯科技有限公司 软件测试方法及装置、电子设备、计算机可读介质
CN111459819A (zh) * 2020-03-31 2020-07-28 北京百度网讯科技有限公司 软件测试方法及装置、电子设备、计算机可读介质
CN111522672A (zh) * 2020-04-24 2020-08-11 北京思特奇信息技术股份有限公司 一种用于熔断数据重复消费的方法及***
CN111522672B (zh) * 2020-04-24 2023-02-28 北京思特奇信息技术股份有限公司 一种用于熔断数据重复消费的方法及***
CN111552587A (zh) * 2020-04-30 2020-08-18 武汉众邦银行股份有限公司 一种基于滑动时间窗的服务熔断方法
CN113965624A (zh) * 2020-06-29 2022-01-21 中国电信股份有限公司 用于消息处理的方法、消息缓存中间件和业务***
CN113676398A (zh) * 2021-08-26 2021-11-19 深信服科技股份有限公司 一种数据恢复方法、装置、设备及可读存储介质
CN113676398B (zh) * 2021-08-26 2023-11-03 深信服科技股份有限公司 一种数据恢复方法、装置、设备及可读存储介质
CN113849325A (zh) * 2021-09-29 2021-12-28 四川新网银行股份有限公司 基于分布式消费信贷RabbitMQ熔断方法及***

Also Published As

Publication number Publication date
WO2021000693A1 (zh) 2021-01-07

Similar Documents

Publication Publication Date Title
CN110377434A (zh) 一种服务熔断方法、装置及消息中间件
KR20200060421A (ko) 리소스 관리 방법 및 단말 장치
CN109743358A (zh) 异步消息接口熔断控制方法、装置、计算机设备及存储介质
CN109840837A (zh) 财务数据的处理方法、装置、计算机可读介质及电子设备
CN108111554B (zh) 一种访问队列的控制方法及装置
CN106302618A (zh) 远程控制方法、远程服务器、管理设备和终端
CN103109283B (zh) 在计算***中以多个存储通道对存储缓冲器的分配
CN108112038B (zh) 一种控制访问流量的方法及装置
CN110177308A (zh) 移动终端及其录屏中的音视频丢帧方法、计算机存储介质
CN110489339A (zh) 客户端压测报表生成方法、***、介质和电子设备
CN109460003A (zh) 车辆故障预测建模方法及***
CN109976971A (zh) 硬盘状态监测方法和装置
CN112055235A (zh) 推送展示对象的方法、装置、电子设备及存储介质
KR102351426B1 (ko) 사용 목적에 적합한 가상 머신을 추천하는 방법 및 이를 구현하는 가상 머신 추천 시스템
CN109902103A (zh) 业务数据管理方法、装置、设备及计算机可读存储介质
US8307011B2 (en) System and method for determining overall utilization
US10565023B2 (en) Outage detection and compute resource protection in a computer service environment
JP6775082B2 (ja) 時系列データの分析制御方法および分析制御装置
CN106482742B (zh) 计步数据的获取方法及装置
CN111913807A (zh) 一种基于多个存储区域的事件处理方法、***及装置
CN110502495A (zh) 一种应用服务器的日志收集方法及装置
CN110245120A (zh) 流式计算***及流式计算***的日志数据处理方法
CN105988881A (zh) 用于处理资源访问操作信息的方法与设备
TWI260508B (en) Data transmission ports with flow controlling unit and method for performing the same
CN110148044A (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