CN113608893A - 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质 - Google Patents

防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质 Download PDF

Info

Publication number
CN113608893A
CN113608893A CN202110837848.XA CN202110837848A CN113608893A CN 113608893 A CN113608893 A CN 113608893A CN 202110837848 A CN202110837848 A CN 202110837848A CN 113608893 A CN113608893 A CN 113608893A
Authority
CN
China
Prior art keywords
request
source address
time
cache queue
rabbitmq
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
CN202110837848.XA
Other languages
English (en)
Other versions
CN113608893B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202110837848.XA priority Critical patent/CN113608893B/zh
Publication of CN113608893A publication Critical patent/CN113608893A/zh
Application granted granted Critical
Publication of CN113608893B publication Critical patent/CN113608893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0015Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种防止重复下发策略给Rabb i tMQ的方法、系统、终端及存储介质,包括:截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝该重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至Rabb i tMQ;接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。本发明避免了Rabb i tMQ消息堆积或者重复策略带来的负面业务影响。

Description

防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质
技术领域
本发明涉及集群请求处理技术领域,具体涉及一种防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质。
背景技术
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。RabbitMQ是当前最常使用的消息中间件之一。消息中间件在多种应用场景中都有使用,最常见的应用有消息中间件负责把页面点击产生的策略、配置内容下发给客户端,或者通过消息中间件传递日志等信息。针对使用RabbitMQ传递策略、配置的场景,可能存在重复下发策略的情况,这些重复的策略不希望通过RabbitMQ下发给客户端。
现有消息队列大数据去重处理方法可概括为:首先在将数据信息去重处理时,针对消息队列中的一个数据,采用SHA1安全哈希算法,将数据内容进行摘要处理获取对应的SHA1码;将获取的SHA1码与所存储的各SHA1码进行比对,判断是否存储有相同的SHA1码,若是则丢弃该数据,否则存储该SHA1码,且将该数据写入数据仓库。
现有技术的方案指出现有技术中存在的问题;
1.必须自己编写消息队列,无法使用RabbitMQ这种成熟的组件,自己编写消息队列在稳定性、易用性上无法和RabbitMQ这种专业的第三方组件媲美;
2.为了实现去重,要记录过去所有的历史记录,要消耗大量的存储;
3.随着历史记录的增加,计算负载会越来越来大,影响消息下发的速度;
4.每次都要计算SHA1,如果消息内容过大,就会影响消息下发的速度。
发明内容
针对现有技术的上述不足,本发明提供一种防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种防止重复下发策略给RabbitMQ的方法,包括:
截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
进一步的,截留接口层向业务层发送的请求,并解析请求的源地址和请求时间,包括:
判断截留的请求是否需要通过RabbitMQ与客户端进行通信:
若否,则将所述请求转发至业务层。
进一步的,接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除,包括:
通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;
解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
进一步的,根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除,包括:
预先设置存储时间阈值;
计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;
将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
第二方面,本发明提供一种防止重复下发策略给RabbitMQ的系统,包括:
请求截留单元,用于截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
请求过滤单元,用于将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
反馈监控单元,用于接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
超时监控单元,用于根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
进一步的,所述请求截留单元包括:
请求判断模块,用于判断截留的请求是否需要通过RabbitMQ与客户端进行通信;
特殊处理模块,用于若截留的请求不需要通过RabbitMQ与客户端进行通信,则将所述请求转发至业务层。
进一步的,所述反馈监控单元包括:
反馈接收模块,用于通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;
反馈匹配模块,用于解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
进一步的,所述超时监控单元包括:
阈值设置模块,用于预先设置存储时间阈值;
时间计算模块,用于计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;
超时清除模块,用于将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质,通过截留接口层发送业务层的请求,并对请求进行源地址和请求时间进行提取缓存,根据缓存的源地址排查重复请求,并对重复请求进行消除。同时根据客户端的请求反馈信息和缓存的请求时间对缓存的源地址和请求时间进行及时更新,保证重复排查的准确性。本发明防止重复下发策略到RabbitMQ中,并将判断重复的逻辑移动到了业务程序之前,在收到API请求后就去判断是否重复。避免了为了实现去重而自己开发消息中间件,能够利用RabbitMQ这种成熟度很高,很稳定的消息中间件,避免额外记录过去的历史记录,增加存储负担,避免计算SHA1,对比SHA1类似操作,延迟消息传递的速度,避免了由于页面重复点击、API接口重复调用导致的RabbitMQ消息堆积或者重复策略带来的负面业务影响。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的方法的示意性原理图。
图3是本发明一个实施例的方法的示意性判断逻辑图。
图4是本发明一个实施例的方法的另一示意性流程图。
图5是本发明一个实施例的系统的示意性框图。
图6为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
URL在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种防止重复下发策略给RabbitMQ的系统。
如图1所示,该方法包括:
步骤110,截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
步骤120,将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
步骤130,接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
步骤140,根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
为了便于对本发明的理解,下面以本发明防止重复下发策略给RabbitMQ的方法的原理,结合实施例中对下发给RabbitMQ的策略进行重复排查的过程,对本发明提供的防止重复下发策略给RabbitMQ的方法做进一步的描述。
为了解决以下技术问题:1.能够利用RabbitMQ这种程度的消息中间件;2.避免额外记录过去的历史记录,增加存储负担;3.避免计算SHA1,对比SHA1类似操作,延迟消息传递的速度。
本实施例提供一种防止重复下发策略给RabbitMQ的方法,在源头避免重复策略、规则下发到RabbitMQ,RabbitMQ只需要负责消息的传递即可,这样可以最大化的发挥RabbitMQ的中间件的性能。并且一定程度上保证部分重复的策略不下发。
请参考图2,为了防止多次发下策略到RabbitMQ,在程序端对接口的请求进行限制,防止多次重复下发策略。保证下发到RabbitMQ的消息是确定要下发给客户端的。即在API接口到程序业务之间增加一层,用于进行重复请求的判断,如果是重复请求则拒绝下发到业务层中,自然也不会向RabbitMQ中下发。所述防止重复下发策略给RabbitMQ的方法包括:
S1、截留接口层向业务层发送的请求,并解析请求的源地址和请求时间。
设置在接口层与业务层之间的过滤程序截留接口层向业务层发送的请求,接口层是与客户端对接的,能够与客户端进行请求互发,业务层是请求处理层。截留请求后,提取请求的URL(源地址)和请求时间,将URL和请求时间成对保存至缓存队列。
判断截留的请求是否需要通过RabbitMQ与客户端进行通信:若否,则将所述请求转发至业务层。
为了提高请求筛查效率,对无需下发至RabbitMQ直接放行,大大提升请求过滤效率,降低计算量。具体的,特殊URL过滤,URL请求在配置表中记录为非消息通讯类URL,此类URL不进行消息通讯,不下发消息给RabbitMQ,此类URL直接放行给业务层。
S2、将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求,同时向请求源地址返回请求重复的提示;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ。
本实施例的基本逻辑如图3所示,收到API请求后,判断是否重复,如果是则拒绝,否则下转发给业务层,业务处理完成后,根据需要推送消息到RabbitMQ。
判断是否可以转发的具体逻辑是:当有请求到达时,先判断该接口是否已被请求过,如果已经被请求过,那么就不对其进行转发,否则进行转发;判断是否被请求的依据是,当第一次请求时,会记录该接口的URL和请求时间到缓存队列中。之后如果同一URL被请求而缓存队里中存在,则判断不转发,此时上一次请求的消息依然在交互中,但缓存中没有该URL时,则正常转发。
S3、接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除。
通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
对于需要经RabbitMQ与客户端通讯的URL请求,通过消息反馈机制来更新其结束状态,当消息下发给RabbitMQ后,该消息被客户端获取后,客户端立刻反馈一个已接收的消息,业务层收到该消息后转发给本实施例提供方法的核心判断逻辑中,清除缓存队列中的记录。
S4、根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
预先设置存储时间阈值;计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
缓存超时机制,为避免因为通信等其他外部原因导致缓存数据不能及时清理,导致接口长时间无法使用,设置超时时间,超过超时时间,自动清理缓存中记录,开发再次下发的权限。
请参考图4,本实施例的应用场景为:
WEB和RestFul接口无法做到完成有效的限制重复策略下发,而RabbitMQ这类中间件也只能避免消息重新投递(消息重复投递是指,一条信息被多次投递给客户端),而对于多次下发给它的消息是无法去重的。例如页面点击了一次卸载客户端的按钮,过5S再次点击,这个重复命令下发接口和RabbitMQ都是无法识别的。
在这种应用场景下,本发明提出了一种防止重复下发策略给RabbitMQ的方法,在API接口收到消息,业务层之前进行重复判断,通过缓存、消息反馈、超时清除、消息通讯类URL过滤等方法实现,具体如下:
关键方法步骤具体描如下:
(1)系统启动时消息通讯类URL预加载到缓存;
(2)有URL请求,先判断是否为消息通讯类URL,如果不是,直接放行给业务层,不进行之后的逻辑;
(3)是消息通讯类URL,则判断缓存中是否有该请求,如果有则直接反馈请求已下发,请等待。该请求不会转发给业务层中。也就避免了继续下发给RabbitMQ;
(4)如果缓存中没有,那么转发请求给业务层,业务层根据业务逻辑推送消息给RabbitMQ;同时,将该请求的URL和请求时间添加至缓存;
(5)客户端收到RabbitMQ下发的消息后,会立刻反馈已接收消息,业务层接收到反馈信息后,清除缓存中反馈信息对应的URL和请求时间;
(6)缓存超时机制,定时清理已存在超过一定时间的缓存内容,默认5分钟,可以配置。
本实施例防止重复下发策略到RabbitMQ中,并将判断重复的逻辑移动到了业务程序之前,在收到API请求后就去判断是否重复。避免了为了实现去重而自己开发消息中间件,能够利用RabbitMQ这种成熟度很高,很稳定的消息中间件,避免额外记录过去的历史记录,增加存储负担,避免计算SHA1,对比SHA1类似操作,延迟消息传递的速度,避免了由于页面重复点击、API接口重复调用导致的RabbitMQ消息堆积或者重复策略带来的负面业务影响。
如图5所示,该系统500包括:
请求截留单元510,用于截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
请求过滤单元520,用于将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
反馈监控单元530,用于接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
超时监控单元540,用于根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
可选地,作为本发明一个实施例,所述请求截留单元包括:
请求判断模块,用于判断截留的请求是否需要通过RabbitMQ与客户端进行通信;
特殊处理模块,用于若截留的请求不需要通过RabbitMQ与客户端进行通信,则将所述请求转发至业务层。
可选地,作为本发明一个实施例,所述反馈监控单元包括:
反馈接收模块,用于通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;
反馈匹配模块,用于解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
可选地,作为本发明一个实施例,所述超时监控单元包括:
阈值设置模块,用于预先设置存储时间阈值;
时间计算模块,用于计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;
超时清除模块,用于将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
图6为本发明实施例提供的一种终端600的结构示意图,该终端600可以用于执行本发明实施例提供的防止重复下发策略给RabbitMQ的方法。
其中,该终端600可以包括:处理器610、存储器620及通信单元630。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器620可以用于存储处理器610的执行指令,存储器620可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。当存储器620中的执行指令由处理器610执行时,使得终端600能够执行以下上述方法实施例中的部分或全部步骤。
处理器610为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(Integrated Circuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器610可以仅包括中央处理器(Central Processing Unit,简称CPU)。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元630,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
因此,本发明通过截留接口层发送业务层的请求,并对请求进行源地址和请求时间进行提取缓存,根据缓存的源地址排查重复请求,并对重复请求进行消除。同时根据客户端的请求反馈信息和缓存的请求时间对缓存的源地址和请求时间进行及时更新,保证重复排查的准确性。本发明防止重复下发策略到RabbitMQ中,并将判断重复的逻辑移动到了业务程序之前,在收到API请求后就去判断是否重复。避免了为了实现去重而自己开发消息中间件,能够利用RabbitMQ这种成熟度很高,很稳定的消息中间件,避免额外记录过去的历史记录,增加存储负担,避免计算SHA1,对比SHA1类似操作,延迟消息传递的速度,避免了由于页面重复点击、API接口重复调用导致的RabbitMQ消息堆积或者重复策略带来的负面业务影响,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种防止重复下发策略给RabbitMQ的方法,其特征在于,包括:
截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
2.根据权利要求1所述的方法,其特征在于,截留接口层向业务层发送的请求,并解析请求的源地址和请求时间,包括:
判断截留的请求是否需要通过RabbitMQ与客户端进行通信:
若否,则将所述请求转发至业务层。
3.根据权利要求1所述的方法,其特征在于,接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除,包括:
通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;
解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
4.根据权利要求1所述的方法,其特征在于,根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除,包括:
预先设置存储时间阈值;
计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;
将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
5.一种防止重复下发策略给RabbitMQ的系统,其特征在于,包括:
请求截留单元,用于截留接口层向业务层发送的请求,并解析请求的源地址和请求时间;
请求过滤单元,用于将请求的源地址和请求时间成对保存至缓存队列,若缓存队列中已经存在相同的源地址,则判定所述请求为重复请求并拒绝所述重复请求;若缓存队列中不存在相同的源地址,则将所述请求转发至业务层,由业务层下发至RabbitMQ;
反馈监控单元,用于接收客户端的请求反馈信息,并将请求反馈信息对应的请求源地址和请求时间从缓存队列清除;
超时监控单元,用于根据请求时间和预设存储时间阈值监控缓存队列中的超时存储的源地址和请求时间,将超时存储的源地址和请求时间从缓存队列清除。
6.根据权利要求5所述的系统,其特征在于,所述请求截留单元包括:
请求判断模块,用于判断截留的请求是否需要通过RabbitMQ与客户端进行通信;
特殊处理模块,用于若截留的请求不需要通过RabbitMQ与客户端进行通信,则将所述请求转发至业务层。
7.根据权利要求5所述的系统,其特征在于,所述反馈监控单元包括:
反馈接收模块,用于通过业务层接收客户端的请求反馈信息,所述请求反馈信息为客户端接收到RabbitMQ的信息后生产的反馈信息;
反馈匹配模块,用于解析请求反馈信息的反馈源地址,将缓存队列中与反馈源地址相同的源地址作为目标源地址,将目标源地址与关联请求时间从缓存队列中清除。
8.根据权利要求5所述的系统,其特征在于,所述超时监控单元包括:
阈值设置模块,用于预先设置存储时间阈值;
时间计算模块,用于计算当前时刻与缓存队列中的请求时间的差值作为请求时间的缓存时长;
超时清除模块,用于将缓存时长超过存储时间阈值的请求时间作为目标请求时间,将目标请求时间和关联源地址从缓存队列清除。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
CN202110837848.XA 2021-07-23 2021-07-23 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质 Active CN113608893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110837848.XA CN113608893B (zh) 2021-07-23 2021-07-23 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110837848.XA CN113608893B (zh) 2021-07-23 2021-07-23 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质

Publications (2)

Publication Number Publication Date
CN113608893A true CN113608893A (zh) 2021-11-05
CN113608893B CN113608893B (zh) 2023-08-25

Family

ID=78305286

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110837848.XA Active CN113608893B (zh) 2021-07-23 2021-07-23 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质

Country Status (1)

Country Link
CN (1) CN113608893B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857575A (zh) * 2019-01-18 2019-06-07 深圳壹账通智能科技有限公司 接口调用方法、装置、电子设备及存储介质
CN110661815A (zh) * 2019-10-22 2020-01-07 中国林业科学研究院热带林业研究所 基于频率限制微服务的请求处理方法、装置、系统及介质
CN112039913A (zh) * 2020-09-07 2020-12-04 上海浦东发展银行股份有限公司 一种服务端api调用方法、装置及存储介质
CN112597486A (zh) * 2020-12-24 2021-04-02 广东广宇科技发展有限公司 一种基于Spring的防止重复访问Restful API的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857575A (zh) * 2019-01-18 2019-06-07 深圳壹账通智能科技有限公司 接口调用方法、装置、电子设备及存储介质
CN110661815A (zh) * 2019-10-22 2020-01-07 中国林业科学研究院热带林业研究所 基于频率限制微服务的请求处理方法、装置、系统及介质
CN112039913A (zh) * 2020-09-07 2020-12-04 上海浦东发展银行股份有限公司 一种服务端api调用方法、装置及存储介质
CN112597486A (zh) * 2020-12-24 2021-04-02 广东广宇科技发展有限公司 一种基于Spring的防止重复访问Restful API的方法

Also Published As

Publication number Publication date
CN113608893B (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
US10528405B2 (en) Methods, apparatus and computer programs for managing persistence
CN109684358B (zh) 数据查询的方法和装置
CN108494703B (zh) 一种访问频率控制方法、装置及存储介质
CN108551465B (zh) 服务器并发数控制方法、装置、计算机设备及存储介质
CN110290217B (zh) 数据请求的处理方法及装置、存储介质及电子装置
CN109104336B (zh) 服务请求处理方法、装置、计算机设备及存储介质
US8966487B1 (en) Application transaction wait time dynamic adjustment
US8589537B2 (en) Methods and computer program products for aggregating network application performance metrics by process pool
CN111641563B (zh) 基于分布式场景的流量自适应方法与系统
US10642585B1 (en) Enhancing API service schemes
CN112187903B (zh) 一种消息推送方法、装置及消息服务系统
CN110838987B (zh) 队列限流方法、存储介质
CN109361778A (zh) 一种管理会话的方法及终端
US20160205047A1 (en) Hierarchical caching system for lossless network packet capture applications
CN110557432B (zh) 一种缓存池均衡优化方法、系统、终端及存储介质
CN113608893A (zh) 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质
CN107483637B (zh) 一种基于nfs的客户端链接管理方法及装置
CN112153036B (zh) 一种基于代理服务器的安全防御方法及系统
US11178034B1 (en) Resilient network framework for mitigating predicted response time delays
CN113518013B (zh) 一种实现心跳机制的处理方法及装置
CN113435931A (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN114520808A (zh) 请求处理方法、装置、电子设备及计算机可读存储介质
CN111913732A (zh) 一种服务更新方法、装置及管理服务器、存储介质
CN112463399A (zh) 一种服务器bmc信息管理方法、系统、终端及存储介质
US6836470B1 (en) Method for reliable message delivery in a network of mobile computers

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