CN116302593A - 一种系统消息限流方法、装置及设备 - Google Patents
一种系统消息限流方法、装置及设备 Download PDFInfo
- Publication number
- CN116302593A CN116302593A CN202310117974.7A CN202310117974A CN116302593A CN 116302593 A CN116302593 A CN 116302593A CN 202310117974 A CN202310117974 A CN 202310117974A CN 116302593 A CN116302593 A CN 116302593A
- Authority
- CN
- China
- Prior art keywords
- message
- processed
- preset
- downstream system
- system 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 61
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 abstract description 10
- 230000007246 mechanism Effects 0.000 abstract description 8
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种系统消息限流方法、装置及设备,应用于任务调度技术领域,该方法包括:将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配;确定匹配时,将待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将数据库中的待处理消息转发到下游系统;确定下游系统接口被待处理消息的调用情况满足预设的消息熔断条件时,对下游系统接口实行第一预设策略,以及对待处理消息实行第二预设策略。通过上述方法,能够快速处理上游系统的待处理消息并有针对性地对消息类型进行管理,动态管理的策略也可以进一步提升资源利用率;加入了消息熔断机制,能够有效避免下游系统堵塞的情况。
Description
技术领域
本申请涉及任务调度技术领域,具体涉及一种系统消息限流方法、装置及设备。
背景技术
当前银行系统消息中心承接多个系统发布的各种消息,消息种类多且数量大。由于特定业务场景的需要,生产环境中经常会出现单个类型消息并发量突发增加,消息处理不及时,会导致上游消息积压及负载过高。为了解决消息中心上游系统积压问题,当前常用解决方案是提高消息中心处理能力,启用多个线程对消息进行处理;或者通过提升系统硬件性能的方式提高处理速率。由于目前是一个线程仅处理一类消息,因此多线程的处理方式依然不能本质上解决消息量激增时带来的问题,可能会导致平常系统运行正常,但是当某类消息数量激增,处理不及时导致积压,而且多线程的开启可能会导致计算资源的浪费;而通过提升硬件性能来提高消息中心处理能力的方式则会提高对消息中心系统的维护难度。
发明内容
本申请实施例提供了一种系统消息限流方法、装置及设备,在不提高对消息中心系统维护难度的基础上,解决消息中心的上游系统消息积压的问题。
第一方面,本申请实施例提供了一种系统消息限流方法,所述方法包括:
将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配,所述第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度;
确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
在上述实施例中,加入了消息缓存机制,对于在预设场景下,某类消息的消息数量大于预设数量,且重要性小于预设程度,则将该类型对应的消息存储到预先建立的数据库中,当满足消息转发条件时,才将数据库中的待处理消息转发到与所述上游系统相关的下游系统,达到了避免上游系统消息积压的效果,而且并未提升消息中心硬件的性能,因此也不会提高对消息中心系统的维护难度。
在一种可能的实施方式中,所述根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统,包括:
按照预设的周期判断所述数据库中是否存在待处理消息,若存在,则将所述数据库中存储的部分或全部待处理消息转发到与所述上游系统相关的下游系统。
在上述实施例中,存储在数据库中的待处理消息并不是一直存储,而是周期性的查询数据库中的消息,若数据库中存在待处理消息,则将所述数据库中存储的部分或全部待处理消息转发到与所述上游系统相关的下游系统,以保证待处理消息的及时处理,以及产生的待处理消息不会堆积在上游系统。
在一种可能的实施方式中,所述将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统之后,还包括:
确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,对所述下游系统接口实行第一预设策略,以及对所述待处理消息实行第二预设策略。
在上述实施例中,为了避免下游系统出现堵塞,在下游系统设置了消息熔断机制,当触发消息熔断条件时,分别对下游系统接口和待处理消息实行对应的策略。
在一种可能的实施方式中,所述对所述下游系统接口实行第一预设策略,包括:
设置所述下游系统接口在预设的第一时间段内不可被所述待处理消息调用。
在上述实施例中,当确定满足消息熔断条件后,则禁止待处理消息调用下游系统接口,即下游系统接口不会响应待处理消息,能够保证其它消息的正常处理,进而避免消息在下游系统接口处堆积。
在一种可能的实施方式中,所述对所述待处理消息实行第二预设策略,包括:
若所述待处理消息的重要程度属于第一程度,则将所述待处理消息重新存储到所述数据库中,并等待下游系统发送支持所述待处理消息调用所述下游系统接口的消息;
若所述待处理消息的重要程度属于第二程度,则对所述待处理消息进行丢弃处理,所述第一程度大于第二程度。
在上述实施例中,对禁止下游系统接口调用的待处理消息按照其对应的重要程度分别进行不同的处理,在避免下游系统堵塞的基础上,还保证了对于重要消息的及时处理。
在一种可能的实施方式中,所述确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件,包括:
若在第二预设时间段内,所述下游系统接口的被调用次数大于第一预设次数,且所述下游系统接口的被调用异常次数与所述下游系统接口的被调用次数之间的比例大于第一预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件;或者
若在第三预设时间段内,所述下游系统接口的被调用次数大于第二预设次数,且所述下游系统接口响应所述待处理消息调用的时间大于第四预设时间段的次数与所述下游系统接口的被调用次数之间的比例大于第二预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
在上述实施例中,设置了两种消息熔断条件,将待处理消息调用下游系统接口的情况进行更细致的区分,能够针对多方面的情况进行熔断,相比目前“超时不重发”的机制更有效地解决下游系统堵塞的问题。
在一种可能的实施方式中,所述对所述下游系统接口实行第一预设策略之后,还包括:
若转发到所述下游系统的任意一条待处理消息调用所述下游系统接口出现异常,或所述下游系统接口响应所述任意一条待处理消息调用的时间大于第四预设时间段,则将所述下游系统接口继续设置为不可被所述待处理消息调用。
在上述实施例中,在消息熔断结束后,为了确定下游系统是否还存在消息堵塞的情况,需要对下游系统接口的被调用情况进行分析,若待处理消息调用所述下游系统接口不会出现异常,且待处理消息调用的时间不大于第四预设时间段,则表明下游系统不存在堵塞的情况,下游系统接口恢复正常被调用状态,否则会继续进行消息熔断。
第二方面,本申请实施例提供了一种系统消息限流装置,所述装置包括:
匹配模块,用于将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配,所述第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度;
转发模块,用于确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
第三方面,本申请实施例提供了一种系统消息限流设备,所述设备包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面中的方法。
第四方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品用于使计算机执行上述第一方面中的方法。
第五方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行上述第一方面中的方法。
附图说明
图1为根据本发明示例性实施例示例的一种系统消息限流方法示意图;
图2为根据本发明示例性实施例示例的一种系统消息限流方法流程示意图;
图3为根据本发明示例性实施例示例的一种对上游系统待处理消息的处理流程示意图;
图4为根据本发明示例性实施例示例的一种对下游系统待处理消息的处理流程示意图;
图5为根据本发明示例性实施例示例的一种系统消息限流装置示意图;
图6为根据本发明示例性实施例示例的另一种系统消息限流装置示意图;
图7为根据本发明示例性实施例示例的一种系统消息限流设备示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
如图1所示,为本申请实施例提供的一种系统消息限流方法的应用场景,该场景中包括:消息中心101、数据库102、至少一个上游系统(如图中示出的上游系统103_1、上游系统103_2、上游系统103_N)、至少一个下游系统(如图中示出的上游系统104_1、上游系统104_2、上游系统104_N)。其中,消息中心101用于拉取上游系统的待处理消息并转发到与上游系统相关的下游系统;上游系统与消息中心连接,用于向消息中心发送待处理消息;下游系统与消息中心连接,用于接收消息中心发送的待处理消息;数据库102用于存储满足存储条件的待处理消息。
在基于如图1所示的应用场景中,以银行系统为例,消息中心承载着多个系统发布的各种消息,在某些特定的场景下,一些类型的消息的数量会出现激增的情况,例如,在月底需要进行资金结算时,通知资金变动的消息会激增。为了避免由于消息激增而造成的上游系统消息积压的情况,本申请实施例提供了一种系统消息限流方法,应用于消息中心,如图2所示,该方法包括:
S201:将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配。
在一种可能的实施方式中,可以预先设置一个“消息缓存参数表”,在这个表中存储预设的多个第二消息类型。其中,第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度。例如在月底需要进行资金结算时,通知资金变动的消息数量大于预设数量,且重要程度小于预设程度,即对该类型消息的时效性要求不是很高,则可以优先处理其它类型的消息。在本申请实施例中不对各第二消息类型的存储形式进行具体限定。
其中,预设数量和预设程度可以根据消息的实际的生产以及处理情况进行设置,例如在月底,存在两种第二消息类型的待处理消息,在月初存在一种第二消息类型的消息,则在月底时设置的预设数量可能会稍小于月中设置的预设数量,也就是说,在不同的场景下,判断某类待处理消息是否为激增类的消息,以及某类待处理消息是否重要的标准可以设置为不同。
在本申请实施例中,“消息缓存参数表”中的第二消息类型可以随时进行变化,例如,在月中(15号),在资金结算时,通知资金变动的消息不属于第二消息类型,而月底(30号),在资金结算时,通知资金变动的消息属于第二消息类型,因此在不同的时间“消息缓存参数表”中的第二消息类型可能不同,进而实现了“消息缓存参数表”的动态管理。另外,当待处理消息到达消息中心时,首先,消息中心判断待处理消息的第一消息类型,然后才在“消息缓存参数表”中查询相匹配的第二消息类型。
S202:确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
本申请实施例在消息中心建立了一个数据库,用于存储第二消息类型对应的待处理消息。基于本申请实施例提供的“消息缓存机制”,将不同类型的待处理消息进行不同的处理方式:对于属于第二消息类型的消息,消息中心对其进行1.拉取,即消息中心将上游系统的待处理消息拉取过来;2.存储,即确定待处理消息属于第二消息类型后,将待处理消息存储到预先建立的数据库中;3.转发,即根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统的流程;对于不属于第二消息类型的消息,消息中心对其进行1.拉取、2.转发的流程,进而可以有效解决上游系统消息积压的情况。
在一种可能的实施方式中,根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统,包括:
按照预设的周期判断所述数据库中是否存在待处理消息,若存在,则将所述数据库中存储的部分或全部待处理消息转发到与所述上游系统相关的下游系统。
周期性的查询预先建立的数据库中是否存在待处理消息,若数据库中存在待处理消息,而且当前上游系统的待处理消息大于预设的消息数量,可以先将数据库中部分待处理消息转发到与所述上游系统相关的下游系统;若当前上游系统的待处理消息未超过预设的消息数量,则可以将数据库中存储的全部待处理消息转发到与所述上游系统相关的下游系统,也可以先将数据库中部分待处理消息转发到与所述上游系统相关的下游系统;若数据库中不存在待处理消息,则无需进行任何处理。通过上述实施方式,既保证了待处理消息的及时处理,又保证了待处理消息不会堆积在上游系统。其中,预设周期可以根据各类消息的实际处理情况进行设置(例如1个小时,1天),此处不进行具体限定。
基于消息中心对于待处理消息的处理模式(拉取上游系统的待处理消息,并将待处理消息转发至到相关的下游系统),当上游系统出现消息激增的情况时,下游系统接口处也容易出现堵塞的情况。现有技术中,为了解决下游系统堵塞的问题,常用的解决方案是“超时不重发”机制,即当待处理消息调用下游接口失败时不对下游系统接口重新调用,以减小下游系统的负载压力,但是这种处理方式可以解决单笔消息的推送问题,一定程度可以减轻下游负载,但是当上游系统待处理消息数量较大时,待处理消息依然会不断地对下游系统接口进行调用,无法本质上缓解下游系统压力。
为了解决上述问题,本申请实施例确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,对所述下游系统接口实行第一预设策略,以及对所述待处理消息实行第二预设策略。
其中,预设的消息熔断条件包括如下两种:
(1)若在第二预设时间段内,所述下游系统接口的被调用次数大于第一预设次数,且所述下游系统接口的被调用异常次数与所述下游系统接口的被调用次数之间的比例大于第一预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
以银行的下游系统为例,若在20秒内,下游系统接口的被调用次数大于5次,所述下游系统接口的被调用异常次数与所述下游系统接口的被调用次数之间的比例大于20%,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。其中,第二预设时间段、第一预设次数和第一预设比例可以根据具体的应用场景进行设置,此处不进行具体限定。
(2)若在第三预设时间段内,所述下游系统接口的被调用次数大于第二预设次数,且所述下游系统接口响应所述待处理消息调用的时间大于第四预设时间段的次数与所述下游系统接口的被调用次数之间的比例大于第二预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
以银行的下游系统为例,若在20秒内,下游系统接口的被调用次数大于5次,且下游系统接口响应所述待处理消息调用的时间大于1秒的次数与所述下游系统接口的被调用次数之间的比例大于30%,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
其中,第三预设时间段、第二预设次数和第二预设比例可以根据具体的应用场景进行设置。而且,第三预设时间段和第二预设时间段可以设置为相同,也可以设置为不同;第二预设次数和第一预设次数可以设置为相同,也可以设置为不同;第二预设比例和第一预设比例可以设置为相同,也可以设置为不同,此处不进行具体限定。
当确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,分别对下游系统接口和待处理消息实行不同的策略。
(1)对所述下游系统接口实行第一预设策略。
设置所述下游系统接口在预设的第一时间段内不可被所述待处理消息调用。
确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,此时将分配给待处理消息的处理资源进行降级,处理资源可以包括处理耗时等,此处不进行具体限定。也就是说,当分配给待处理消息的处理资源降级后,待处理消息不会向下游系统接口发送接口调用的请求了,即下游系统接口不可被待处理消息调用。
另外,设置一个时间窗口,即第一预设时间段,在这个时间窗口内下游系统接口不可被待处理消息调用,时间窗口长度的设置可以根据实际消息的实际处理情况进行设置,此处不进行具体限定。时间窗口结束后,会进入下游系统接口的“探测恢复”状态,若转发到所述下游系统的任意一条待处理消息调用所述下游系统接口出现异常,或所述下游系统接口响应所述任意一条待处理消息调用的时间大于第四预设时间段,则将所述下游系统接口继续设置为不可被所述待处理消息调用。进入下游系统接口的“探测恢复”状态后,可以对转发到下游系统的第一条待处理消息调用下游系统接口的情况进行判断,也可以对第N条待处理消息调用下游系统接口的情况进行判断,此处不进行具体限定。
例如,对于银行的系统,第四预设时间段可以为1秒,对于其它场景下的系统,第四预设时间段可以设置为其它,此处不对具体的应用场景以及第四预设时间段的具体数值进行具体限定。通过进一步地对下游系统接口被调用的情况进行判断,确定是否需要继续进行消息熔断,能够更有效地避免下游系统堵塞的情况。
(2)对所述待处理消息实行第二预设策略。
若所述待处理消息的重要程度属于第一程度,则将所述待处理消息重新存储到所述数据库中,并等待下游系统发送支持所述待处理消息调用所述下游系统接口的消息;
若所述待处理消息的重要程度属于第二程度,则对所述待处理消息进行丢弃处理,所述第一程度大于第二程度。
确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件后,对待处理消息的重要程度进行判别,若待处理消息比较重要,则将待处理消息存储到数据库中,若下游系统不存在堵塞情况时,会向消息中心发送支持待处理消息调用所述下游系统接口的消息,需要注意的是,将待处理消息重新存储到所述数据库到下游系统发送支持待处理消息调用所述下游系统接口的消息的这段时间,远小于上述S202中预设的周期,例如:待处理消息重新存储到所述数据库到下游系统发送支持待处理消息调用所述下游系统接口的消息的这段时间为20秒,预设的周期为1小时。因此,二者在时间上不会出现冲突,即因满足触发消息熔断条件后,而被存储到数据库的待处理消息,会尽快转发到下游系统,不会等到按照预设的周期查询数据库中是否存在待处理消息的时间。另外,若待处理消息不重要,则可以直接丢弃。
下面通过图3对上游系统待处理消息的处理流程进行说明。
S301:消息中心获取上游系统的待处理消息;
S302:消息中心根据获取的待处理消息的类型,判断是否将获取的待处理消息存储到预先建立的数据库,若不是,则执行S303,否则执行S305;其中,根据待处理消息的类型,判断是否将待处理消息存储到预先建立的数据库的具体流程如上述S201中的实施方式,此处不再赘述;
S303:消息中心解析待处理消息,并匹配处理器;其中解析待处理消息是将待处理消息转换为下游系统能够处理的消息格式,匹配处理器是按照负载均衡的方式为待处理器分配处理资源;
S304:消息中心将待处理消息转发到与上游系统相关的下游系统;
S305:消息中心将待处理消息存储到预先建立的数据库中;
S306:消息中心按照预设的周期查询数据库;
S307:消息中心判断数据库中是否有待处理消息,若是,则执行S303-S304,否则结束流程;其中,具体查询数据库以及判断流程如上述S202中的实施方式,此处不再赘述。
下面通过图4对下游系统待处理消息的处理流程进行说明。
S401:经过上述S304的步骤,消息中心确定将待处理消息转发到与上游系统相关的下游系统;
S402:消息中心判断下游系统接口被待处理消息的调用情况是否满足预设的消息熔断条件,若是,则执行S403,否则执行S404;其中,具体判断流程如上述实施方式,此处不再赘述;
S403:消息中心分别对下游系统接口和待处理消息实行对应的预设策略;其中,具体实施方式如上述,此处不再赘述;
S404:消息中心指示待处理消息调用下游系统接口。
本申请实施例设计了消息动态缓存机制,可以快速处理上游系统的待处理消息,并有针对性地对第二消息类型的消息进行管理,动态管理策略也可以进一步提升资源利用率,不会导致消息处理速率有较大损耗;另外,加入了消息熔断机制,减少在下游系统堵塞情况下的异常调用,并通过测试验证给出一组适合银行系统消息中心的熔断配置,相比于仅采取超时不重发方案来说,更加有效地解决了下游系统堵塞情况下的系统负载问题,更加接近问题的本质。
基于相同的发明构思,本申请实施例还提供了一种系统消息限流装置500,如图5所示,所述装置包括:
匹配模块501,用于将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配,所述第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度;
转发模块502,用于确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
在一种可能的实施方式中,转发模块502,用于根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统,包括:
按照预设的周期判断所述数据库中是否存在待处理消息,若存在,则将所述数据库中存储的部分或全部待处理消息转发到与所述上游系统相关的下游系统。
在一种可能的实施方式中,如图6所示,该装置还包括熔断模块503,用于将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统之后,还包括:
确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,对所述下游系统接口实行第一预设策略,以及对所述待处理消息实行第二预设策略。
在一种可能的实施方式中,熔断模块503用于对所述下游系统接口实行第一预设策略,包括:
设置所述下游系统接口在预设的第一时间段内不可被所述待处理消息调用。
在一种可能的实施方式中,熔断模块503用于对所述待处理消息实行第二预设策略,包括:
若所述待处理消息的重要程度属于第一程度,则将所述待处理消息重新存储到所述数据库中,并等待下游系统发送支持所述待处理消息调用所述下游系统接口的消息;
若所述待处理消息的重要程度属于第二程度,则对所述待处理消息进行丢弃处理,所述第一程度大于第二程度。
在一种可能的实施方式中,熔断模块503用于确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件,包括:
若在第二预设时间段内,所述下游系统接口的被调用次数大于第一预设次数,且所述下游系统接口的被调用异常次数与所述下游系统接口的被调用次数之间的比例大于第一预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件;或者
若在第三预设时间段内,所述下游系统接口的被调用次数大于第二预设次数,且所述下游系统接口响应所述待处理消息调用的时间大于第四预设时间段的次数与所述下游系统接口的被调用次数之间的比例大于第二预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
在一种可能的实施方式中,熔断模块503用于对所述下游系统接口实行第一预设策略之后,还包括:
若转发到所述下游系统的任意一条待处理消息调用所述下游系统接口出现异常,或所述下游系统接口响应所述任意一条待处理消息调用的时间大于第四预设时间段,则将所述下游系统接口继续设置为不可被所述待处理消息调用。
基于相同的发明构思,本申请实施例还提供了一种系统消息限流设备,该设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述实施例中的任一系统消息限流的方法。
下面参照图7来描述根据本申请的这种实施方式的电子设备70。图7显示的电子设备70仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,电子设备70以通用电子设备的形式表现。电子设备70的组件可以包括但不限于:上述至少一个处理器71、上述至少一个存储器72、连接不同系统组件(包括存储器72和处理器71)的总线73。
所述处理器71用于读取所述存储器72中的指令并执行,以使所述至少一个处理器能够执行上述实施例提供的一种系统消息限流的方法。
总线73表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器72可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)721和/或高速缓存存储器722,还可以进一步包括只读存储器(ROM)723。
存储器72还可以包括具有一组(至少一个)程序模块724的程序/实用工具725,这样的程序模块724包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备70也可以与一个或多个外部设备74(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备70交互的设备通信,和/或与使得该电子设备70能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口75进行。并且,电子设备70还可以通过网络适配器76与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器76通过总线73与用于电子设备70的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备70使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的一种系统消息限流方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种系统消息限流方法的步骤。
另外,本申请还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序所述计算机程序用于使计算机执行上述实施例中任何一项所述的方法。
这些计算机程序指令可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种系统消息限流方法,其特征在于,所述方法包括:
将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配,所述第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度;
确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统,包括:
按照预设的周期判断所述数据库中是否存在待处理消息,若存在,则将所述数据库中存储的部分或全部待处理消息转发到与所述上游系统相关的下游系统。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统之后,还包括:
确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件时,对所述下游系统接口实行第一预设策略,以及对所述待处理消息实行第二预设策略。
4.根据权利要求3所述的方法,其特征在于,所述对所述下游系统接口实行第一预设策略,包括:
设置所述下游系统接口在预设的第一时间段内不可被所述待处理消息调用。
5.根据权利要求3所述的方法,其特征在于,所述对所述待处理消息实行第二预设策略,包括:
若所述待处理消息的重要程度属于第一程度,则将所述待处理消息重新存储到所述数据库中,并等待下游系统发送支持所述待处理消息调用所述下游系统接口的消息;
若所述待处理消息的重要程度属于第二程度,则对所述待处理消息进行丢弃处理,所述第一程度大于第二程度。
6.根据权利要求3所述的方法,其特征在于,所述确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件,包括:
若在第二预设时间段内,所述下游系统接口的被调用次数大于第一预设次数,且所述下游系统接口的被调用异常次数与所述下游系统接口的被调用次数之间的比例大于第一预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件;或者
若在第三预设时间段内,所述下游系统接口的被调用次数大于第二预设次数,且所述下游系统接口响应所述待处理消息调用的时间大于第四预设时间段的次数与所述下游系统接口的被调用次数之间的比例大于第二预设比例,则确定下游系统接口被所述待处理消息的调用情况满足预设的消息熔断条件。
7.根据权利要求4或6所述的方法,其特征在于,所述对所述下游系统接口实行第一预设策略之后,还包括:
若转发到所述下游系统的任意一条待处理消息调用所述下游系统接口出现异常,或所述下游系统接口响应所述任意一条待处理消息调用的时间大于第四预设时间段,则将所述下游系统接口继续设置为不可被所述待处理消息调用。
8.一种系统消息限流装置,其特征在于,所述装置包括:
匹配模块,用于将上游系统中待处理消息的第一消息类型与预设的多个第二消息类型进行匹配,所述第二消息类型对应的消息在预设场景下的数量大于预设数量,且重要程度小于预设程度;
转发模块,用于确定匹配时,将所述待处理消息存储到预先建立的数据库中,并根据预设的消息转发条件,将所述数据库中的待处理消息转发到与所述上游系统相关的下游系统。
9.一种系统消息限流设备,其特征在于,所述设备包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任何一项所述的方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品用于使计算机执行如权利要求1-7中任何一项所述的方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-7中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310117974.7A CN116302593A (zh) | 2023-01-30 | 2023-01-30 | 一种系统消息限流方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310117974.7A CN116302593A (zh) | 2023-01-30 | 2023-01-30 | 一种系统消息限流方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302593A true CN116302593A (zh) | 2023-06-23 |
Family
ID=86831529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310117974.7A Pending CN116302593A (zh) | 2023-01-30 | 2023-01-30 | 一种系统消息限流方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302593A (zh) |
-
2023
- 2023-01-30 CN CN202310117974.7A patent/CN116302593A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489447B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
WO2020259354A1 (zh) | 队列调整方法、装置、设备及计算机可读存储介质 | |
CN110858843B (zh) | 业务请求处理方法、装置及计算机可读存储介质 | |
CN111209110B (zh) | 一种实现负载均衡的任务调度管理方法、系统和存储介质 | |
CN102081554A (zh) | 云计算操作系统及其内核控制系统及方法 | |
CN105159736A (zh) | 一种支持性能分析的SaaS软件部署方案的构建方法 | |
CN113364697A (zh) | 流量控制方法、装置、设备及计算机可读存储介质 | |
CN111585913A (zh) | 基于回收令牌的服务流量限制方法及存储介质 | |
US20040133680A1 (en) | System and method for processing hardware or service usage data | |
JP2020080059A (ja) | 評価装置、評価方法および評価プログラム | |
WO2009062372A1 (en) | A method for preventing industial automation system from avalanche | |
US8434083B2 (en) | Throttling an asynchronous remote copying system | |
CN112817772A (zh) | 一种数据通信方法、装置、设备及存储介质 | |
CN111666167A (zh) | 一种对输入事件读取处理优化方法、非易失性存储器及终端设备 | |
CN114153635A (zh) | 消息处理方法、装置、存储介质及计算机设备 | |
CN102243597A (zh) | 一种数据库连接的控制管理方法及装置 | |
CN112363812B (zh) | 基于任务分类的数据库连接队列管理方法及存储介质 | |
CN114461353A (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
CN116192752B (zh) | 业务流量控制方法、装置、电子设备及存储介质 | |
CN111782378A (zh) | 自适应性的处理性能调整方法、服务器及可读存储介质 | |
CN116302593A (zh) | 一种系统消息限流方法、装置及设备 | |
CN109308219B (zh) | 任务处理方法、装置及分布式计算机系统 | |
CN109582460B (zh) | 一种Redis内存数据的淘汰方法和装置 | |
CN113391927A (zh) | 一种业务事件的处理方法、装置、系统及存储介质 | |
JP2003223335A (ja) | アウトソーシングシステム、アウトソーシング方法およびアウトソーシング用プログラム |
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 |