CN110460534A - 一种请求消息上报方法、装置、设备及存储介质 - Google Patents

一种请求消息上报方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110460534A
CN110460534A CN201910682689.3A CN201910682689A CN110460534A CN 110460534 A CN110460534 A CN 110460534A CN 201910682689 A CN201910682689 A CN 201910682689A CN 110460534 A CN110460534 A CN 110460534A
Authority
CN
China
Prior art keywords
request message
message
reporting
queue
disk
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
CN201910682689.3A
Other languages
English (en)
Other versions
CN110460534B (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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Cloud Computing Beijing 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 Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Cloud Computing Beijing Co Ltd
Priority to CN201910682689.3A priority Critical patent/CN110460534B/zh
Publication of CN110460534A publication Critical patent/CN110460534A/zh
Application granted granted Critical
Publication of CN110460534B publication Critical patent/CN110460534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及一种请求消息上报方法、装置、设备及存储介质,所述方法包括:响应于请求消息触发指令,生成至少一条请求消息;将所述请求消息按照生成顺序插入消息队列中;实时监控所述消息队列中请求消息的第一数量;根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;通过所述第二数量的线程上报所述请求消息。本申请能够根据消息队列中的消息数量动态调整消息实时上报的数量,从而有效、合理地利用系统资源。

Description

一种请求消息上报方法、装置、设备及存储介质
技术领域
本申请涉及计算机网络技术领域,尤其涉及一种请求消息上报方法、装置、设备及存储介质。
背景技术
消息队列是在消息的传输过程中保存消息的容器,消息队列管理器在将消息从它的源中继到它的目标时充当中间人,队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。消息队列机制能够解决应用解耦,异步消息,流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构。通过消息队列,可将消息生产者产生的消息放入到消息队列中,再由消息上报者从消息队列中取出消息进行消息的上传。
现有的对于消息进行上报的技术方案中,每次进行消息实时上报的消息数量一般是固定的,例如对于高请求量的场景和低请求量的场景,设置的每次上报的消息数量是一样的,从而使得对于不同消息请求量的场景,不能够合理利用系统资源。
发明内容
本申请所要解决的技术问题在于,提供一种请求消息上报方法、装置、设备及存储介质,能够根据消息队列中的消息数量动态调整消息实时上报的数量,从而有效、合理地利用系统资源。
为了解决上述技术问题,一方面,本申请提供了一种请求消息上报方法,所述方法包括:
响应于请求消息触发指令,生成至少一条请求消息;
将所述请求消息按照生成顺序插入消息队列中;
实时监控所述消息队列中请求消息的第一数量;
根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;
通过所述第二数量的线程上报所述请求消息。
另一方面,本申请提供了一种请求消息上报装置,所述装置包括:
消息生成模块,用于响应于请求消息触发指令,生成至少一条请求消息;
队列化模块,用于将所述请求消息按照生成顺序插入消息队列中;
实时监控模块,用于实时监控所述消息队列中请求消息的第一数量;
线程数量确定模块,用于根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;
请求消息上报模块,用于通过所述第二数量的线程上报所述请求消息。
另一方面,本申请提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的请求消息上报方法。
另一方面,本申请提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述的请求消息上报方法。
本申请通过响应请求消息触发指令,生成请求消息;将请求消息按照生成顺序插入到消息队列中;实时监控所述消息队列中的请求消息的第一数量,以便于根据第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;通过所述第二数量的线程上报请求消息。本申请引入了消息队列机制,将生成的请求消息放入到消息队列中,从而可以对高请求量进行削峰以防止造成网络拥塞;在消息队列机制的基础上,根据消息队列中的消息的实时数量,确定当前用于消息上报的线程的数量,能够动态伸缩消息上报的数量,既可以应对高请求量的情况,也可以应对低请求量的情况,在请求量高峰期时通过增加消息上报数量以使得消息能够尽快上报,在低峰期时通过减少其数量以减少对系统资源的浪费,从而能够有效合理地利用系统资源,减少设备资源的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的应用场景示意图;
图2是本申请实施例提供的一种请求消息上报方法流程图;
图3是本申请实施例提供的一种上报线程数量确定方法流程图;
图4是本申请实施例提供的另一种请求消息上报方法流程图;
图5是本申请实施例提供的一种请求消息缓存方法流程图;
图6是本申请实施例提供的一种上报时间间隔确定方法流程图;
图7是本申请实施例提供的一种磁盘队列中的请求消息上报方法流程图;
图8是本申请实施例提供的请求消息上报时序图;
图9是本申请实施例提供的消息上报示意图;
图10是本申请实施例提供的缓存消息上报过程示意图;
图11是本申请实施例提供的一种请求消息上报装置示意图;
图12是本申请实施例提供的线程数量确定模块示意图;
图13是本申请实施例提供的缓存消息上报模块示意图;
图14是本申请实施例提供的磁盘缓存模块示意图;
图15是本申请实施例提供的时间间隔确定模块示意图;
图16是本申请实施例提供的扫描上报模块示意图;
图17是本申请实施例提供的一种设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。而且,术语“第一”、“第二”等适用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
现有技术中对于消息上报的技术方案,大多比较关注提高实时网络的上报效率,例如采用线程池技术提高高请求时网络上报的效率,避免网络阻塞,或者利用异步机制处理,缓解高请求的压力;对于每次消息上报的消息数量一般是固定的,没有考虑到高请求量和低请求量的不同情况下,资源利用不合理的问题。
为了解决上述问题,本申请实施例提供了一种请求消息上报方法,能够通过将生成的请求消息插入到队列中,并实时根据队列中请求消息的数量,确定当前需要进行消息上报的线程的数量,从而能够有效地应对高请求量和低请求量的不同情况,合理有效地利用系统资源。
为了达到上述技术效果,首先给出本申请实施例的应用场景示意图,请参见图1,其可应用于身份识别业务场景中,该场景至少可以包括:至少一个消息上报端110和消息接收端120,所述消息上报端110和所述消息接收端120可通过网络进行数据通信。具体地,消息上报端110可被部署在相关需要进行身份识别的区域并可获取到人脸图像信息,消息上报端110可通过相关的消息上报策略,将人脸图像信息上报给消息接收端120;消息接收端120可对接收到的人脸图像信息进行分析、识别,得到身份识别结果,并将身份识别结果返回给所述消息上报端110。
所述消息上报端110可以基于浏览器/服务器模式(Browser/Server,B/S)或客户端/服务器模式(Client/Server,C/S)与消息接收端120进行通信。所述消息上报端110可以包括:智能手机、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、车载终端、服务器等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。本申请实施例中的消息上报端110上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows等。
所述消息接收端120与所述消息上报端110可以通过有线或者无线建立通信连接,所述消息接收端120具体可以为服务器,所述消息接收端120可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,其中服务器可以是云端服务器。
本申请实施例提供了一种请求消息上报方法,其执行主体可以为上述的消息上报端,具体地,请参见图2,所述方法包括:
S210.响应于请求消息触发指令,生成至少一条请求消息。
本实施例中,对于消息上报端,其可以同时具有消息产生以及消息上报等功能;也可以只具有消息上报功能,在只具有消息上报功能的情况下,消息的生成可以通过其他终端设备进行生成,并发送给消息上报端。这里,以消息上报端同时具有消息产生以及消息上报功能为例进行说明。
本实施例中的请求消息触发指令可以是用户在消息上报端执行相关的操作而触发的请求消息触发指令,例如,滑动操作、点击操作等;也可以是消息上报端自动触发生成的请求消息触发指令,或者是以其他形式触发的指令,本实施例不做具体限定。在接收到请求消息触发指令时,消息上报端可根据该指令生成对应的请求消息,具体地,所述请求消息触发指令中可包括待生成的请求消息的内容以及待生成的请求消息的类型等相关参数,消息上报端可根据这些参数生成相应的请求消息。
S220.将所述请求消息按照生成顺序插入消息队列中。
消息上报端是根据请求消息触发指令实时生成请求消息,并根据请求消息的生成顺序依次将请求消息插入到预设的消息队列中。
S230.实时监控所述消息队列中请求消息的第一数量。
对于消息队列中的请求消息,同时会对消息队列中请求消息进行读取上报操作以及插入操作,从而消息队列中的请求消息的数量是动态变化的。
S240.根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量。
对于消息队列中的不同数量的请求消息,需要相应地确定不同数量的线程来进行消息上报,以分别满足高请求量的情况以及低请求量的情况。
具体地,请参见图3,其示出了一种上报线程数量确定方法,所述方法包括:
S310.获取当前消息队列中请求消息的第一数量。
S320.判断所述第一数量是否大于等于第一消息阈值。
S330.当所述第一数量大于等于第一消息阈值时,确定当前用于上报所述请求消息的线程数量为第一线程数量。
这里的第一消息阈值为预先设置的消息数量的上限阈值,当消息队列中消息数量达到该上限阈值时,此时可以启用预设的最大数量的用于消息上报的线程来进行消息的上报,以加快消息上报的速度。S340.当所述第一数量小于第一消息阈值时,判断所述第一数量是否小于第二消息阈值。
S350.当所述第一数量小于第二消息阈值时,确定当前用于上报所述请求消息的线程数量为第二线程数量。
这里的第二消息阈值为预先设置的消息数量的下限阈值,当消息队列中消息数量低于该下限阈值时,此时可以仅仅启用预设的最少数量的用于消息上报的进程来进行消息的上报,从而可以节约系统资源和开销。
其中,所述第一线程数量大于所述第二线程数量,所述第一线程数量和所述第二线程数量均是动态变化的,即可以动态调整用于消息上报的线程的最大数量和最小数量。
另外,当消息队列中的消息数量处于第一消息阈值和第二消息阈值之间时,此时可以根据常规情况设置具体用于消息上报的线程数量,例如可以设置当前用于消息上报的线程数量为某一个固定值,也可以设置当前用于消息上报的线程数量随着消息队列中的消息数量而动态增加或减少,具体的设置方法可根据具体的场景进行选择,本实施例不作具体限定。
具体地,当消息队列中堆积的请求消息数量大于等于第一消息阈值时,消息上报端的程序会不断增加当前用于上报的线程数量直到MAXthread,可以理解的是,增加了用于上报的线程数量,就增加了每次消息上报的数量,相应地,随着上报线程数量的增加直至MAXthread,消息上报数量相应增加至MAXmsg;同理,当消息队列中堆积的请求消息的数量小于第二消息阈值时,消息上报端的程序会不断减少当前用于上报的线程数量直到MINthread,减少了用于上报的线程数量,就减少了每次消息上报的数量,随着上报线程数量的减少直至MINthread,消息上报数量相应减少至MINmsg
S250.通过所述第二数量的线程上报所述请求消息。
通过本实施例上述的在请求量高峰期时通过增加消息上报数量来增加消息的消耗率以使得消息能够尽快上报,在低峰期时通过减少其数量以减少对系统资源的浪费。
本实施例上述的一种请求消息上报方法引入消息队列机制,一方面可以在请求量高峰期起到削峰的作用,即消息由生产者放入消息队列,上报速率和上报量由上报者控制,可以在一定程度上避免网络拥塞。另一方面,解耦消息生产者和消息上报者,使得程序能够根据消息队列中消息的堆积量动态伸缩消息上报的数量,既可以应对高请求量的情况,又能够应对低请求量的情况,从而有效合理利用系统资源。
上述的请求消息上报方法主要涉及的是对消息的实时上报,当在实时上报过程中,部分请求消息上报失败时,可以将该上报失败的请求消息缓存起来,后续再进行上报,具体地,请参见图4,其示出了本申请实施例提供的另一种请求消息上报方法,包括:
S410.当上报所述请求消息失败时,将上报失败的所述请求消息缓存到磁盘队列中。
当系统内存不大时,受限于系统资源,无法同时创建多个消息队列,因此引入磁盘消息队列机制,专门存放实时上报失败被缓存下来的请求消息。具体的请求消息缓存方法可参见图5,所述方法包括:
S510.确定上报失败的所述请求消息的标识。
S520.将上报失败的所述请求消息转化为二进制序列串。
S530.将所述标识和所述二进制序列串存入预设的磁盘区域。
这里的请求消息的表示可看成是请求消息的索引ID,当需要读取时,指定磁盘区域和消息的索引ID即可。受限于磁盘的I/O速度,磁盘消息队列的读写速度较慢,因此可用于实时性要求不高的场景。
S420.确定当前上报时间间隔,根据当前上报时间间隔从所述磁盘队列中读取所述请求消息进行上报。
基于磁盘消息队列的缓存消息队列,本申请实施例提供了一种动态缓存消息的网络请求策略,使得程序能够在不获取计算当前网络情况下,仅仅根据上一次上报请求的结果,通过增加或减少缓存消息上报间隔时间来控制消息上报的速率。因此,该策略能够做到既不影响当前新产生的消息的网络请求,又能够尽快地上报完缓存消息。
对于当前时间间隔,其是根据上一次对磁盘队列中的请求信息进行上报的结果来进行调整的,具体地,请参见图6,其示出了一种上报时间间隔确定方法,所述方法包括:
S610.当上一次上报所述磁盘消息队列中的请求消息失败时,将当前上报时间间隔与预设间隔之和确定为当前上报时间间隔。
当上报缓存请求消息失败时,说明可能当前实时上报进程中的请求消息比较多,占用了系统资源,导致磁盘队列中的缓存消息上报失败,此时可以适当地增加上报时间间隔,给实时上报进程让出更多的系统资源。
S620.当上一次上报所述磁盘消息队列中的请求消息成功时,将当前上报时间间隔与预设间隔之差确定为当前上报时间间隔。
当上报缓存请求消息成功时,说明可能当前实时上报进程中的请求消息不多,可以分出部分系统资源用于缓存请求消息的上报,此时可适当地减少上报时间间隔,尽可能多的上报一些磁盘队列中的请求消息。
请参见图7,其示出了一种磁盘队列中的请求消息上报方法,所述方法包括:
S710.扫描所述磁盘队列。
S720.判断当前磁盘队列是否为空。
S730.当所述磁盘队列为空时,等待当前上报时间间隔之后,重复执行步骤:扫描所述磁盘队列,直至所述磁盘队列不为空。
S740.当所述磁盘队列不为空时,从所述磁盘队列的头部取出请求消息进行上报。
上述方法主要涉及的是对磁盘队列中的请求消息进行一次上报的过程,其中,当磁盘队列为空时,保持当前时间间隔不变,继续扫描直至磁盘队列不为空;当磁盘队列不为空时,从磁盘队列中取出请求消息进行上报,并根据此次消息上报的结果,确定下一次的上报时间间隔;具体地,若当前上报成功时,则在当前上报时间间隔的基础上减少预设的时间间隔作为下一次上报的时间间隔;若当前上报失败时,则在当前上报时间间隔的基础上增加预设的时间间隔作为下一次上报的时间间隔。
上述的请求消息上报方法引入磁盘消息队列,基于此进行消息缓存,在实时性要求不高的场景下,既能有效应对系统资源(主要指内存)资源有限的情况,也能在网络拥堵、弱网甚至无网络时缓存消息以进行消息重传;为缓存队列中的请求消息提出了一种动态缓存消息请求策略,程序能够在不获取计算当前网络情况下,自动增加或减少缓存消息上报间隔时间,在不影响当前新产生的消息的网络请求的前提下,能够尽快地上报完缓存消息。相对于现有技术中采用定时上报的策略具有较大的优势。
本申请上述实施例在实时网络上报方面,采用消息队列机制配合动态伸缩消息上报数量策略,不仅可以避免网络阻塞、缓解高请求的压力,而且能够尽可能减少设备资源的浪费;在缓存上报方面,采用磁盘消息队列配合动态缓存消息请求策略,不仅充分利用设备的磁盘资源而减少内存压力,还能够在不影响实时网络请求的前提下上报完缓存消息;结合实时网络上报和缓存上报,合理分配系统资源,避免高请求量造成网络拥塞,支持弱网甚至无网时进行缓存并等网络状况恢复时重试上报请求。
为使本申请的具体实施过程更加清楚,下面以一具体示例来进行说明。
本申请以消息队列机制配合动态伸缩消息上报数量策略、磁盘消息队列机制配合动态缓存请求策略为核心,特别针对系统资源(特别是内存)有限,网络资源有限和高请求数据量的业务场景而涉及的整套网络请求策略,时序图如图8所示,其具体可包括:
S8010.消息生产者响应于请求消息触发指令,生成请求消息。
S8020.消息生产者将请求消息发送给消息队列管理器。
S8030.消息队列管理器将请求消息插入到消息队列中。
S8040.消息队列管理器从消息队列中取出请求消息,发送给实时上报者。
S8050.实时上报者接收请求消息。
S8060.实时上报者将请求消息上传给服务器。
S8070.服务器对上报的请求消息进行处理。
S8080.服务器向实时上报者发送数据回包。
S8090.实时上报者根据数据回包判断请求消息是否上报成功。
S8100.当请求消息上报失败时,将上报失败的请求消息发送给磁盘队列管理器。
S8110.磁盘队列管理器将请求消息插入到磁盘队列中。
S8120.磁盘队列管理器从磁盘队列中取出请求消息,发送给缓存上报者。
S8130.缓存上报者接收请求消息。
S8140.缓存上报者将请求消息上传给服务器。
S8150.服务器对上报的请求消息进行处理。
S8160.服务器向缓存上报者发送数据回包。
S8170.缓存上报者根据数据回包判断请求消息是否上报成功。
S8180.当请求消息上报失败时,缓存上报者将上报失败的请求消息发送给磁盘队列管理器。
S8190.磁盘队列管理器将请求消息插入到磁盘队列中。
请参见图9,其示出了消息上报示意图,其示出了从消息的产生到消息的上报中间所经历的一系列流程,消息生产者生成的请求消息被插入到消息队列中,通过设置消息队列输出端,可控制每次进行上报的消息数量,即消息队列管理器根据当前的消息上报策略,将消息队列中的请求消息发送给消息上报者代理,通过消息上报者代理将请求消息发送给消息上报者进行上报。
对于图8中所示的缓存消息上报的具体过程可参见图10,需要说明的是,实时消息上报与缓存消息上报的程序是可以同时运行的,但是实时消息上报可以具有相对高的优先级,在不影响实时消息上报的基础上,可以进行缓存消息的上报。请参见图10,具体的缓存消息上报过程可包括:
S1010.对磁盘队列进行扫描。
磁盘队列中缓存的是在实时消息上报过程中上报失败的请求消息。缓存消息上报程序启动时,首先设置初始上报时间间隔Tt0
S1020.根据扫描结果,判断所述磁盘队列是否为空队列。
S1030.当所述磁盘队列不为空队列时,从所述磁盘队列的头部取出缓存消息上报给服务器。
S1040.当所述磁盘队列为空队列时,等待当前上报时间间隔时长。
当磁盘队列为空时,直接让出CPU时间Tt0后返回步骤S1010。
S1050.在从所述磁盘队列的头部取出缓存消息上报给服务器之后,根据服务器返回回包,判断缓存消息是否发送成功。
S1060.当缓存消息发送失败时,增加当前上报时间间隔。
根据伸缩策略,对Tt0增加预设间隔之后得到T″t1,当前上报时间间隔为T″t1
S1070.当缓存消息发送成功时,缩短当前上报时间间隔,并在等待当前上报时间间隔时长之后,对磁盘队列进行扫描。
根据伸缩策略,对Tt0缩短预设间隔之后得到T′t1,当前上报时间间隔为T′t1,并让出CPU时间T′t1后返回S1010。
S1080.在增加当前上报时间间隔之后,判断是否对上报失败的缓存消息进行缓存。
S1090.将上报失败的缓存消息缓存到磁盘队列中。
当需要对上报失败的缓存消息进行再次缓存时,将该缓存消息缓存到磁盘队列中,等待当前上报时间间隔时长之后,返回步骤S1010;当不需要对上报失败的缓存消息进行再次缓存时,等待当前上报时间间隔时长之后,返回步骤S1010。
本申请可部署于任何需要网络请求的客户端机器,包括服务器、个人电脑甚至移动端设备,尤其适用于系统资源(特别是内存)有限,网络资源有限和高请求数据量的业务场景中。具体地,本申请除了可以应用在客户端网络请求的场景,消息队列机制配合动态创建消费者(本处称消费者,为了适用于更多场景)数量的策略,还可以应用于诸如服务端的网络/数据请求场景;磁盘队列配合动态缓存策略,还可以应用于非实时要求、资源有限的服务端网络/数据请求场景。
本实施例还提供了一种请求消息上报装置,请参见图11,所述装置包括:
消息生成模块1110,用于响应于请求消息触发指令,生成至少一条请求消息。
队列化模块1120,用于将所述请求消息按照生成顺序插入消息队列中。
实时监控模块1130,用于实时监控所述消息队列中请求消息的第一数量。
线程数量确定模块1140,用于根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量。
请求消息上报模块1150,用于通过所述第二数量的线程上报所述请求消息。
请参见图12,所述线程数量确定模块1140包括:
第一确定模块1210,用于当所述第一数量大于第一消息阈值时,确定当前用于上报所述请求消息的线程数量为第一线程数量;
第二确定模块1220,用于当所述第一数量小于第二消息阈值时,确定当前用于上报所述请求消息的线程数量为第二线程数量;
其中,所述第一线程数量大于所述第二线程数量,所述第一线程数量和所述第二线程数量均是动态变化的。
请参见图13,所述装置还包括缓存消息上报模块1300,所述缓存消息上报模块1300包括:
磁盘缓存模块1310,用于当上报所述请求消息失败时,将上报失败的所述请求消息缓存到磁盘队列中;
缓存消息上报模块1320,用于确定当前上报时间间隔,根据所述上报时间间隔从所述磁盘队列中读取所述请求消息进行上报。
请参见图14,所述磁盘缓存模块1310包括:
标识确定模块1410,用于确定上报失败的所述请求消息的标识;
消息转化模块1420,用于将上报失败的所述请求消息转化为二进制序列串;
存储模块1430,用于将所述标识和所述二进制序列串存入预设的磁盘区域。
请参见图15,所述缓存消息上报模块1320包括时间间隔确定模块1500,所述时间间隔确定模块1500包括:
第三确定模块1510,用于当上一次上报所述磁盘消息队列中的请求消息失败时,将当前上报时间间隔与预设间隔之和确定为当前上报时间间隔;
第四确定模块1520,用于当上一次上报所述磁盘消息队列中的请求消息成功时,将当前上报时间间隔与预设间隔之差确定为当前上报时间间隔。
请参见图16,所述缓存消息上报模块1320还包括扫描上报模块1600,所述扫描上报模块1600包括:
队列扫描模块1610,用于扫描所述磁盘队列;
重复执行模块1620,用于当所述磁盘队列为空时,等待当前上报时间间隔之后,重复执行步骤:扫描所述磁盘队列,直至所述磁盘队列不为空;
第一上报模块1630,用于当所述磁盘队列不为空时,从所述磁盘队列的头部取出请求消息进行上报。
上述实施例中提供的装置可执行本申请任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。
本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如本实施例上述的任一实施方法。
请参见图17,其示出了一种设备结构示意图,该设备1700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1722(例如,一个或一个以上处理器)和存储器1732,一个或一个以上存储应用程序1742或数据1744的存储介质1730(例如一个或一个以上海量存储设备)。其中,存储器1732和存储介质1730可以是短暂存储或持久存储。存储在存储介质1730的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对设备中的一系列指令操作。更进一步地,中央处理器1722可以设置为与存储介质1730通信,在设备1700上执行存储介质1730中的一系列指令操作。设备1700还可以包括一个或一个以上电源1726,一个或一个以上有线或无线网络接口1750,一个或一个以上输入输出接口1758,和/或,一个或一个以上操作系统1741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。本实施例上述的任一方法均可基于图17所示的设备进行实施。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种请求消息上报方法,其特征在于,包括:
响应于请求消息触发指令,生成至少一条请求消息;
将所述请求消息按照生成顺序插入消息队列中;
实时监控所述消息队列中请求消息的第一数量;
根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;
通过所述第二数量的线程上报所述请求消息。
2.根据权利要求1所述的一种请求消息上报方法,其特征在于,所述根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量包括:
当所述第一数量大于第一消息阈值时,确定当前用于上报所述请求消息的线程数量为第一线程数量;
当所述第一数量小于第二消息阈值时,确定当前用于上报所述请求消息的线程数量为第二线程数量;
其中,所述第一线程数量大于所述第二线程数量,所述第一线程数量和所述第二线程数量均是动态变化的。
3.根据权利要求1所述的一种请求消息上报方法,其特征在于,所述方法还包括:
当上报所述请求消息失败时,将上报失败的所述请求消息缓存到磁盘队列中;
确定当前上报时间间隔,根据当前上报时间间隔从所述磁盘队列中读取所述请求消息进行上报。
4.根据权利要求3所述的一种请求消息上报方法,其特征在于,所述当上报所述请求消息失败时,将上报失败的所述请求消息缓存到磁盘队列中包括:
确定上报失败的所述请求消息的标识;
将上报失败的所述请求消息转化为二进制序列串;
将所述标识和所述二进制序列串存入预设的磁盘区域。
5.根据权利要求3所述的一种请求消息上报方法,其特征在于,所述确定当前上报时间间隔包括:
当上一次上报所述磁盘消息队列中的请求消息失败时,将当前上报时间间隔与预设间隔之和确定为当前上报时间间隔;
当上一次上报所述磁盘消息队列中的请求消息成功时,将当前上报时间间隔与预设间隔之差确定为当前上报时间间隔。
6.根据权利要求5所述的一种请求消息上报方法,其特征在于,所述根据当前上报时间间隔从所述磁盘队列中读取所述请求消息进行上报包括:
扫描所述磁盘队列;
当所述磁盘队列为空时,等待当前上报时间间隔之后,重复执行步骤:扫描所述磁盘队列,直至所述磁盘队列不为空;
当所述磁盘队列不为空时,从所述磁盘队列的头部取出请求消息进行上报。
7.一种请求消息上报装置,其特征在于,包括:
消息生成模块,用于响应于请求消息触发指令,生成至少一条请求消息;
队列化模块,用于将所述请求消息按照生成顺序插入消息队列中;
实时监控模块,用于实时监控所述消息队列中请求消息的第一数量;
线程数量确定模块,用于根据所述第一数量的变化,动态确定用于上报所述请求消息的线程的第二数量;
请求消息上报模块,用于通过所述第二数量的线程上报所述请求消息。
8.根据权利要求7所述的一种请求消息上报装置,其特征在于,所述装置还包括:
磁盘缓存模块,用于当上报所述请求消息失败时,将上报失败的所述请求消息缓存到磁盘队列中;
缓存消息上报模块,用于确定当前上报时间间隔,根据所述上报时间间隔从所述磁盘队列中读取所述请求消息进行上报。
9.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的请求消息上报方法。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如权利要求1至6任一项所述的请求消息上报方法。
CN201910682689.3A 2019-07-26 2019-07-26 一种请求消息上报方法、装置、设备及存储介质 Active CN110460534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910682689.3A CN110460534B (zh) 2019-07-26 2019-07-26 一种请求消息上报方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910682689.3A CN110460534B (zh) 2019-07-26 2019-07-26 一种请求消息上报方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110460534A true CN110460534A (zh) 2019-11-15
CN110460534B CN110460534B (zh) 2024-05-14

Family

ID=68483597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910682689.3A Active CN110460534B (zh) 2019-07-26 2019-07-26 一种请求消息上报方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110460534B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111147283A (zh) * 2019-12-06 2020-05-12 宜科(天津)电子有限公司 一种物联网设备数据上报失败后重报方法及系统
CN111510482A (zh) * 2020-04-09 2020-08-07 广州酷狗计算机科技有限公司 失败网络请求的确定方法、装置及计算机存储介质
CN112328596A (zh) * 2020-11-05 2021-02-05 平安消费金融有限公司 数据查询方法、装置、电子设备及存储介质
CN112764837A (zh) * 2021-01-29 2021-05-07 腾讯科技(深圳)有限公司 数据上报方法、装置、存储介质及终端
CN113315718A (zh) * 2021-03-31 2021-08-27 阿里巴巴新加坡控股有限公司 自适应限流的系统、方法和装置
CN113342764A (zh) * 2021-06-12 2021-09-03 四川虹美智能科技有限公司 不同云端服务器之间的数据同步方法及装置

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969053A (ja) * 1995-08-31 1997-03-11 Toshiba Corp メッセージ受信機構に於けるマルチスレッド制御方式及びキューイング方式
CN1829139A (zh) * 2006-03-30 2006-09-06 阿里巴巴公司 一种消息重发方法和系统
CN102402459A (zh) * 2010-09-10 2012-04-04 中兴通讯股份有限公司 网管系统性能数据汇总的方法和装置
CN103731476A (zh) * 2013-12-10 2014-04-16 乐视网信息技术(北京)股份有限公司 一种提高信息推送速度的方法和装置
US8959530B1 (en) * 2013-05-07 2015-02-17 Sprint Communications Company L.P. Messaging middleware processing thread count based events
CN104865953A (zh) * 2015-03-20 2015-08-26 北京远特科技有限公司 一种车辆数据处理方法和装置
CN105138410A (zh) * 2015-08-31 2015-12-09 北京锐安科技有限公司 一种基于磁盘缓存的消息队列的实现方法及装置
CN105260439A (zh) * 2015-09-30 2016-01-20 小米科技有限责任公司 数据发布方法、装置及终端
CN106936688A (zh) * 2015-12-30 2017-07-07 北京国双科技有限公司 通知发送方法和装置
CN107018503A (zh) * 2017-04-07 2017-08-04 福建中金在线信息科技有限公司 一种短信发送方法及系统
CN107040415A (zh) * 2017-04-06 2017-08-11 青岛海信宽带多媒体技术有限公司 一种终端及数据上报方法、服务器及数据接收方法
CN107181743A (zh) * 2017-05-16 2017-09-19 广州华多网络科技有限公司 网络直播数据上报方法及装置
CN107357526A (zh) * 2017-07-03 2017-11-17 北京京东尚科信息技术有限公司 用于处理网络数据的方法和装置、服务器和存储介质
CN107612661A (zh) * 2017-09-07 2018-01-19 四川九洲北斗导航与位置服务有限公司 数据通讯方法和装置
CN107872398A (zh) * 2017-06-25 2018-04-03 平安科技(深圳)有限公司 高并发数据处理方法、装置及计算机可读存储介质
CN107969015A (zh) * 2017-11-06 2018-04-27 江苏省邮电规划设计院有限责任公司 一种5g物联网电力数据采集终端接入控制方法
CN108134814A (zh) * 2017-11-27 2018-06-08 海尔优家智能科技(北京)有限公司 一种业务数据处理方法及装置
CN108234599A (zh) * 2017-12-06 2018-06-29 链家网(北京)科技有限公司 一种消息重发方法及系统
CN108965164A (zh) * 2017-05-17 2018-12-07 北京京东尚科信息技术有限公司 基于消息队列的业务请求重传方法、装置及可读存储介质
CN109408240A (zh) * 2018-10-31 2019-03-01 四川长虹电器股份有限公司 基于Netty框架的终端设备数据采集系统
CN109448250A (zh) * 2018-12-19 2019-03-08 重庆前卫克罗姆表业有限责任公司 一种数据上报时间动态选择方法及窄带物联网智能燃气表
CN109491979A (zh) * 2018-11-21 2019-03-19 深圳市小牛普惠投资管理有限公司 日志信息的上报方法、装置、计算机设备及存储介质

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969053A (ja) * 1995-08-31 1997-03-11 Toshiba Corp メッセージ受信機構に於けるマルチスレッド制御方式及びキューイング方式
CN1829139A (zh) * 2006-03-30 2006-09-06 阿里巴巴公司 一种消息重发方法和系统
CN102402459A (zh) * 2010-09-10 2012-04-04 中兴通讯股份有限公司 网管系统性能数据汇总的方法和装置
US8959530B1 (en) * 2013-05-07 2015-02-17 Sprint Communications Company L.P. Messaging middleware processing thread count based events
CN103731476A (zh) * 2013-12-10 2014-04-16 乐视网信息技术(北京)股份有限公司 一种提高信息推送速度的方法和装置
CN104865953A (zh) * 2015-03-20 2015-08-26 北京远特科技有限公司 一种车辆数据处理方法和装置
CN105138410A (zh) * 2015-08-31 2015-12-09 北京锐安科技有限公司 一种基于磁盘缓存的消息队列的实现方法及装置
CN105260439A (zh) * 2015-09-30 2016-01-20 小米科技有限责任公司 数据发布方法、装置及终端
CN106936688A (zh) * 2015-12-30 2017-07-07 北京国双科技有限公司 通知发送方法和装置
CN107040415A (zh) * 2017-04-06 2017-08-11 青岛海信宽带多媒体技术有限公司 一种终端及数据上报方法、服务器及数据接收方法
CN107018503A (zh) * 2017-04-07 2017-08-04 福建中金在线信息科技有限公司 一种短信发送方法及系统
CN107181743A (zh) * 2017-05-16 2017-09-19 广州华多网络科技有限公司 网络直播数据上报方法及装置
CN108965164A (zh) * 2017-05-17 2018-12-07 北京京东尚科信息技术有限公司 基于消息队列的业务请求重传方法、装置及可读存储介质
CN107872398A (zh) * 2017-06-25 2018-04-03 平安科技(深圳)有限公司 高并发数据处理方法、装置及计算机可读存储介质
CN107357526A (zh) * 2017-07-03 2017-11-17 北京京东尚科信息技术有限公司 用于处理网络数据的方法和装置、服务器和存储介质
CN107612661A (zh) * 2017-09-07 2018-01-19 四川九洲北斗导航与位置服务有限公司 数据通讯方法和装置
CN107969015A (zh) * 2017-11-06 2018-04-27 江苏省邮电规划设计院有限责任公司 一种5g物联网电力数据采集终端接入控制方法
CN108134814A (zh) * 2017-11-27 2018-06-08 海尔优家智能科技(北京)有限公司 一种业务数据处理方法及装置
CN108234599A (zh) * 2017-12-06 2018-06-29 链家网(北京)科技有限公司 一种消息重发方法及系统
CN109408240A (zh) * 2018-10-31 2019-03-01 四川长虹电器股份有限公司 基于Netty框架的终端设备数据采集系统
CN109491979A (zh) * 2018-11-21 2019-03-19 深圳市小牛普惠投资管理有限公司 日志信息的上报方法、装置、计算机设备及存储介质
CN109448250A (zh) * 2018-12-19 2019-03-08 重庆前卫克罗姆表业有限责任公司 一种数据上报时间动态选择方法及窄带物联网智能燃气表

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
S. KARUMURI AND S. REISS: "Automatic detection of internal queues and stages in message processing systems", 2009 IEEE 17TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION, VANCOUVER, BC, CANADA, 2009, 19 June 2009 (2009-06-19) *
张晶;郑有才;: "网管消息通信中生产者消费者模式的应用与实现", 电子科技, no. 07 *
邹伟: "车辆实时监控管理系统研究与实现", 中国知网硕士电子期刊, 15 July 2019 (2019-07-15) *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111147283A (zh) * 2019-12-06 2020-05-12 宜科(天津)电子有限公司 一种物联网设备数据上报失败后重报方法及系统
CN111147283B (zh) * 2019-12-06 2022-06-21 宜科(天津)电子有限公司 一种物联网设备数据上报失败后重报方法及系统
CN111510482A (zh) * 2020-04-09 2020-08-07 广州酷狗计算机科技有限公司 失败网络请求的确定方法、装置及计算机存储介质
CN111510482B (zh) * 2020-04-09 2023-06-16 广州酷狗计算机科技有限公司 失败网络请求的确定方法、装置及计算机存储介质
CN112328596A (zh) * 2020-11-05 2021-02-05 平安消费金融有限公司 数据查询方法、装置、电子设备及存储介质
CN112764837A (zh) * 2021-01-29 2021-05-07 腾讯科技(深圳)有限公司 数据上报方法、装置、存储介质及终端
CN113315718A (zh) * 2021-03-31 2021-08-27 阿里巴巴新加坡控股有限公司 自适应限流的系统、方法和装置
CN113315718B (zh) * 2021-03-31 2023-11-14 阿里巴巴新加坡控股有限公司 自适应限流的系统、方法和装置
CN113342764A (zh) * 2021-06-12 2021-09-03 四川虹美智能科技有限公司 不同云端服务器之间的数据同步方法及装置

Also Published As

Publication number Publication date
CN110460534B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
CN110460534A (zh) 一种请求消息上报方法、装置、设备及存储介质
CN105159782B (zh) 基于云主机为订单分配资源的方法和装置
US11558270B2 (en) Monitoring a stale data queue for deletion events
US20180018293A1 (en) Method, controller, and system for service flow control in object-based storage system
US10419528B2 (en) Dynamically instantiating and terminating data queues
CN109104336A (zh) 服务请求处理方法、装置、计算机设备及存储介质
Tang et al. Dependent task offloading for multiple jobs in edge computing
CN109358805B (zh) 一种数据缓存方法
CN112800017B (zh) 分布式日志采集方法、装置、介质及电子设备
CN109492018B (zh) 一种数据同步系统自适应动态调整方法和装置
US9836358B2 (en) Ephemeral remote data store for dual-queue systems
CN112968959B (zh) 一种资源请求方法及终端
CN108989845A (zh) 一种基于spice协议的视频传输方法
WO2023093053A1 (zh) 推理实现方法、网络、电子设备及存储介质
WO2022100365A1 (zh) 人工智能应用任务的管理方法、系统、设备及存储介质
CN116155832A (zh) 数据传输方法、设备、存储介质和系统
CN115022332A (zh) 一种边缘计算中基于深度强化学习的动态服务放置方法
CN107665235A (zh) 缓存处理方法、装置、计算机设备和存储介质
CN107870877A (zh) 用于在存储系统中管理数据访问的方法和系统
US11755534B2 (en) Data caching method and node based on hyper-converged infrastructure
WO2021210123A1 (ja) スケジューリング方法、スケジューラ、gpuクラスタシステムおよびプログラム
US10200510B2 (en) Method and apparatus for loading web page
CN105450543B (zh) 语音数据传输方法
CN114880147A (zh) 一种显存共享方法、装置、设备及存储介质
CN108667920A (zh) 一种雾计算环境业务流量加速系统及其业务流量加速方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant