CN111510395B - 业务消息上报方法、装置、设备及介质 - Google Patents
业务消息上报方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111510395B CN111510395B CN202010545394.4A CN202010545394A CN111510395B CN 111510395 B CN111510395 B CN 111510395B CN 202010545394 A CN202010545394 A CN 202010545394A CN 111510395 B CN111510395 B CN 111510395B
- Authority
- CN
- China
- Prior art keywords
- message
- service
- message queue
- priority
- reporting
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了业务消息上报方法、装置、设备及介质,该方法包括接收待上报的业务消息,该业务消息包括优先级信息;基于优先级信息将待上报的业务消息存储至多级消息队列中与优先级信息对应的消息队列,多级消息队列包括高优先级消息队列和普通优先级消息队列;在第一读取线程从高优先级消息队列中读取业务消息的同时,基于消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中任意一个消息队列中读取业务消息;将读取到的业务消息通过处于空闲状态的上报线程进行上报。本申请实施例通过两个读取线程从多级消息队列获取上报的业务消息,来提高业务消息上报的成功率,同时避免网络拥塞。
Description
技术领域
本申请一般涉及大数据技术领域,尤其涉及业务消息上报方法、装置、设备及介质。
背景技术
摄像机将视频流通过有线或无线网络进行传输。例如可以采用专用网络进行传输,如在公安专用的网络视频监控系统,其利用专用网作为传输介质,具有带宽高、传输效率快的特点。或者采用局域网组建的网络视频监控系统,通过局域网络将视频流传输到本地后台,虽然局域网网络稳定,但是其通信范围毕竟有限。
在广域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享,其给网络视频监控系统的发展提供了新的发展方向。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种业务消息上报方法、装置、设备及介质,来提高业务消息上报的成功率。
一方面,本申请实施例提供了一种业务消息上报方法,该方法包括
接收待上报的业务消息,该业务消息包括优先级信息;
基于优先级信息将待上报的业务消息存储至多级消息队列中与优先级信息对应的消息队列,该多级消息队列包括高优先级消息队列和普通优先级消息队列;
在第一读取线程从高优先级消息队列中读取业务消息的同时,基于消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中任意一个消息队列读取业务消息;
将读取到的业务消息通过处于空闲状态的上报线程进行上报。
一方面,本申请实施例提供了一种业务消息上报装置,该装置包括:
业务消息接收单元,用于接收待上报的业务消息,该业务消息包括优先级信息;
消息队列存储单元,用于基于优先级信息将业务消息存储至多级消息队列中与优先级信息对应的消息队列,该多级消息队列包括高优先级消息队列和普通优先级消息队列;
线程控制单元,用于在第一读取线程从高优先级消息队列中读取业务消息的同时,基于每个消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中读取业务消息的顺序;
消息上报单元,用于将读取到的业务消息通过处于空闲状态的上报线程进行上报。
一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如本申请实施例描述的方法。
一方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于:
该计算机程序被处理器执行时实现如本申请实施例描述的方法。
本申请实施例提供的业务消息上报方法、装置、设备及介质,该方法在接收待上报的业务消息之后;基于优先级信息将业务消息存储至多级消息队列中与优先级信息对应的消息队列;然后在第一读取线程从高优先级消息队列中读取业务消息的同时,基于每个消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中读取业务消息,并将读取到的业务消息通过处于空闲状态的上报线程进行上报。本申请实施例通过控制两个读取线程同步地对多级消息队列进行业务消息读取提高业务消息上报的成功率,并通过空闲状态的上报线程进行业务消息进行上报来避免网络拥塞。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请实施例提供的业务消息上报方法的实施环境架构图;
图2示出了本申请实施例提供的业务消息上报方法的流程示意图;
图3示出了本申请实施例提供的业务消息上报方法的流程示意图;
图4示出了本申请实施例提供的业务消息上报方法的流程示意图;
图5示出了本申请实施例提供的业务消息上报方法的部分流程示意图;
图6示出了本申请实施例提供的业务消息上报方法的部分流程示意图;
图7示出了本申请实施例提供的业务消息上报的原理示意图;
图8示出了本申请实施例提供的缓存消息关系的原理示意图;
图9示出了本申请实施例提供的基于缓存消息队列上报业务消息的工作原理图;
图10示出了本申请实施例提供的基于内容的分布式特征提取装置的示例性结构框图;
图11示出了本申请实施例提供的轮询上报工作原理图;
图12示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关公开,而非对该公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与公开相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1是本申请实施例提供的业务消息上报方法的实施环境架构图。如图1所示,该实施环境架构包括:终端设备101和服务器103,以及用于连接终端设备101和服务器103的公用网络102。
在网络监控视频系统中,终端设备101可以将采集得到图像或视频直接或者间接上传至服务器103进行存储。在终端设备101上可以预先安装网络视频监控客户端,并通过网络视频监控客户端对网络摄像机进行集中监控、视频录像存储、网络监控、摄像机管理以及远程控制。其可以对多台网络摄像机进行分组监控、单组播放、多组轮巡等方式进行管理。终端设备可以是智能电视,智能手机、平板电脑、智能眼镜等移动设备,也可以是图像采集设备,还可以是台式电脑等,但并不局限于此。
服务器103可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,服务器103从终端设备101接收上报的业务数据。终端设备101与服务器103之间通过公用网络102进行直接或间接地连接。可选地,上述的公用网络可以包括无线网络或有线网络,通过无线网络或者有线网络使用标准通信技术和/或协议。网络通常为因特网,也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。
在上述实施环境中,将业务消息上传至公有云平台主要是通过公用网络来实现的,相对于专用网络传输视频监控数据或者局域网传输监控数据,基于公用网络传输视频监控数据至公有云平台,由于公用网络的不稳定和带宽有限,导致上报业务消息的成功率较低。其中,公有云(Public Cloud)通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。这种云有许多实例,可在当今整个开放的公有网络中提供服务。本申请还可以将传统物联网中传感设备感知的信息和接受的指令连入互联网中,真正实现网络化,并通过云计算技术实现海量数据存储和运算,由于物联网的特性是物与物相连接,实时感知各个“物体”当前的运行状态,在这个过程中会产生大量的数据信息,如何将这些信息汇总,如何在海量信息中筛取有用信息为后续发展做决策支持,这些已成为影响物联网发展的关键问题,而基于云计算和云存储技术的云物联。
本申请为了解决上述问题提出了一种业务消息上报方法来提高上报业务消息的成功率。
本申请提供的业务消息上报方法可以由业务消息上报装置来实施。业务消息上报装置可以安装在服务器上,也可以安装在其他终端设备上。
请参考图2,图2示出了本申请实施例提供的业务消息上报方法的流程示意图。如图2所示,该方法包括:
步骤201,接收待上报的业务消息,该业务消息包括优先级信息。
在上述步骤中,待上报的业务消息是指视频采集装置需要向共有云服务器上报的业务信息。业务消息可以包括消息摘要和消息数据。消息摘要中可以包括业务消息的类型、设备属性以及优先级信息。消息数据是指与具体业务相关的数据。例如视频数据,或者其他应用程序上报的即时消息数据。业务消息的具体结构可以如图7所示。在图7中,高优先级消息队列602和普通优先级消息队列603中存储的业务消息。其中业务消息包括消息摘要和消息数据两部分。
上述优先级信息可以按照业务消息的响应速度或者业务场景对应的消息类型进行划分。其可以划分为高优先级、普通优先级、最低优先级等。例如,在商场布设的视频监控场景中,用户进店视频数据可以认为是高优先级的业务消息,用户在店内逗留挑选商品的视频数据可以认为是普通优先级的业务消息。又例如,在安防视频监控场景中,重要位置布设的摄像头所采集的视频可以认为高优先级的业务消息,常规位置布设的摄像头所采集的视频可以认为是普通优先级的业务消息。
步骤202,基于优先级信息将业务消息存储至多级消息队列中与优先级信息对应的消息队列。该消息队列包括高优先级消息队列和普通优先级消息队列。
在上述步骤中,多级消息队列是指多个消息队列的集合。多级消息队列包括与优先级信息一一对应的多个消息队列。如图7所示,多级消息队列可以包括高优先级消息队列602和普通优先级消息队列603,高优先级消息队列也可以称为即时消息队列。高优先级消息队列602,是用于存储高优先级的业务消息的消息队列。如前述可知,高优先级的业务消息是指服务器接收到该业务消息,需要最快得出响应结果。例如在商场监控系统中,用户即将进入商铺的视频数据,希望尽快上传至云服务器进行数据分析,以识别该用户即将进店的行为,并即时反馈至该商铺的客户端,事前提醒商铺营业员,即将有顾客进店,这种即时性要求较高的视频数据属于高优先级的业务消息,在接收到高优先级的业务消息时,将其存储至高优先级消息队列。其队列长度可以根据需求设置,例如设置为5。普通优先级消息队列也可以称为普通消息队列,普通优先级消息队列603,是用于存储普通优先级的业务消息的队列。如前述可知,普通优先级的业务消息是指服务器接收到该业务消息,不需要快速得出响应结果。例如同样在商场监控系统中,用户在商铺内闲逛,没有目的性,且多段视频分析均显示相同状态,无法识别用户的意图,则服务器无需尽快反馈分析结果,这种即时性要求较低的视频数据属于普通优先级的业务消息。在接收普通优先级的业务消息时,将其存储至普通优先级消息队列。其相应的队列长度也可以根据需求设置,例如设置为10。高优先级消息队列和普通优先级消息队列是用于存储业务消息的消息队列。
步骤203,在第一读取线程从高优先级消息队列中读取业务消息的同时,基于消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中读取业务消息。
在上述步骤中,本申请通过预先设置第一读取线程和第二读取线程,从多级消息队列中读取业务消息。可选地,在接收到待上报的业务消息时,或者按照预设的时间间隔,触发启动第一读取线程和第二读取线程,其触发方式这里不作限定。
第一读取线程是指专用于读取高优先级消息队列中存储的业务消息的程序。其可以是一个线程或者一组线程。也可以称为直接读取线程。
第二读取线程是指可以用于在多级消息队列中按照消息队列的优先级顺序进行轮询的程序。其可以是一个线程或者一组线程。第二读取线程可以从高优先级消息队列、普通优先级消息队列或者缓存消息队列中读取业务消息。也可以称为轮询读取线程。
上述读取线程可以理解为与读取线程功能相同的其他程序。
本申请实施例中,控制第一读取线程专用于读取高优先级消息队列内存储的业务消息来保证高优先级的业务消息及时上报。并在第一读取线程处于工作状态的同时,基于各个消息队列内存储业务消息的数量,控制第二读取线程用于读取高优先级消息队列、或者普通优先级消息队列、或者缓存消息队列内存储的业务消息或缓存消息索引。本申请实施例通过设置两个读取线程,来保证高优先级业务消息上报成功率。
步骤204,将读取到的业务消息通过处于空闲状态的上报线程进行上报。
在上述步骤中,预先设置多个上报线程。上报线程是指将从消息队列中读取到的业务消息上报至共有云服务器的程序。上报线程可以处于工作状态,或者处于空闲状态。工作状态表示上报线程正将业务消息上报至共有云服务器。空闲状态表示上报线程等待接收业务消息。
可选地,根据读取的业务消息归属消息队列的不同情况,可以控制不同的处于空闲状态的上报线程来进行上报。
若读取到的业务消息为高优先级消息队列内存储的业务消息时,控制专用于上报高优先级业务消息的上报线程作为目标上报线程,进行上报。专用于上报高优先级业务消息的上报线程可以是一个线程或者多个线程。也可以控制在处于空闲状态的上报线程中随机地确定一个或多个上报线程作为目标上报线程,进行上报。或者,基于人工智能算法在处于空闲状态的上报线程中选择一个或多个上报线程专用于上报高优先级业务消息。
若读取到的业务消息为普通优先级消息队列内存储的业务消息时,则可以控制在处于空闲状态的上报线程中确定一个或者多个目标上报线程进行上报。可选地,获取普通优先级消息队列内存储的业务消息的第二数量和处于空闲状态的上报线程的第三数量;基于第二数量和第三数量确定从普通优先级消息队列内读取的业务消息的最大上报数量;利用处于空闲状态的上报线程将读取到的业务消息进行上报。
可选地,通过确定第二数量和第三数量两者中的最小值作为最大上报数量;确定从普通优先级消息队列中读取与最大上报数量对应的业务消息。本申请实施例中通过最大化地利用处于空闲状态的上报线程,来防止上报过程出现瞬时带宽的“尖刺”现象。
本申请实施例,通过第一读取线程保证高优先级的业务消息优先传输,并在读取高优先级业务消息的同时,通过消息队列内存储的业务消息的数量,来控制第二读取线程在多个消息队列中读取业务消息,其可以通过专线保证高优先级的业务消息上报成功率,同时也有效地防止在业务消息过多时会导致网络拥塞的问题。
在上述基础上,本申请实施例还提供了一种业务消息上报方法。请参考图3,图3示出了本申请实施例提供的业务消息上报方法的流程示意图。如图3所示,该方法包括:
步骤301,接收待上报的业务消息,该业务消息包括优先级信息。
步骤302,基于优先级信息将业务消息存储至多级消息队列中与优先级信息对应的消息队列。
步骤303,在第一读取线程从高优先级消息队列中读取业务消息的同时,基于消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中读取业务消息;
步骤304,将读取到的业务消息通过处于空闲状态的上报线程进行上报。
步骤305,在待上报的业务消息上报失败时,将待上报的业务消息写入缓存区域内相应的缓存位置。
步骤306,创建与上报失败的业务消息对应的缓存消息索引,该缓存消息索引包括过滤参数和上报失败的业务消息在缓存区域内的缓存位置。
步骤307,将缓存消息索引存储至缓存消息队列。
在上述步骤中,多级消息队列还包括缓存消息队列。缓存消息队列是用于在待上报的业务消息上报失败时,存储与上报失败的业务消息相对应的缓存消息索引。缓存消息队列的队列长度可以根据需求设置,例如设置为100。
在将待上报的业务消息存储至高优先级消息队列或者普通优先级消息队列之后,通过两个读取线程从高优先级消息队列或普通优先级消息队列中读取业务消息进行上报。但是,在业务消息上报失败时,上报线程会将上报失败的业务消息存储至缓存区域内,并创建与上报失败的业务消息对应的缓存消息索引。缓存消息索引是一种数据结构,其包括待缓存的业务消息在缓存区域存储位置和针对待缓存的业务消息设置与过滤规则对应的参数信息。如图8所示,缓存消息索引包括过滤规则,和消息路径。其中,过滤规则是基于业务需求设置的限制条件。例如,某些业务要求缓存时间不能过长,通过设置缓存最长时间,或者最多尝试次数,或者这两者的组合参数,来对缓存时间过长的业务消息进行限制处理,从而减少业务消息的处理时间,提高业务消息的处理效率。
上述过滤参数,可以通过设置与过滤规则对应的参数来实现。例如设置缓存次数、最早缓存时间、缓存消息类型等参数来实现。假设在缓存消息索引中设置缓存次数为N,其可以是整数(INT)类型。最高缓存时间为T,其可以是LONG LONG类型。缓存消息类型为I,其可以是INT类型。可选地,还可以根据具体的应用场景,增加其他的必要信息作为过滤规则。例如关键帧序号。本申请实施例通过设置上述过滤规则,可以有效地减少缓存数据的处理量,节省数据处理的时间,并降低带宽的占用率。
消息路径是用于指示业务消息在缓存区域内的存储位置。其可以是指针类型的参数来表示。缓存区域例如是在设备中预先安装的内存卡,例如安全数字卡(Secure DigitalCard,SD)或者TF(T-Flash)卡。或者其他用于缓存数据的存储装置。
在本申请提供上述实施例中,针对32位和64位系统,每条缓存消息索引占用内存卡的空间约20B和40B。假如存储1000条缓存消息索引,其在内存中占用的空间约3.9MB,其对内存的占用量远远小于业务消息数据本身对内存的占用量。因此,本申请提出在缓存消息队列中仅存储与上报失败的业务消息相对应的缓存消息索引,其可以有效地减小内存压力。
下面结合图4进一步说明在两个读取线程同步工作的同时,动态控制第二读取线程从多级消息队列中读取业务消息的过程。请参考图4,图4示出了本申请实施例提供的业务消息上报方法的流程示意图。如图4所示,该方法包括以下步骤:
步骤401,接收待上报的业务消息,该业务消息包括优先级信息;
步骤402,解析业务消息得到优先级信息。
步骤403,在优先级信息为高优先级时,将业务消息存储至多级消息队列中的高优先级消息队列。
步骤404,在优先级信息为普通优先级时,将业务消息存储至多级消息队列中的普通优先级消息队列。
步骤405,获取高优先级消息队列内存储的业务消息的第一数量;
步骤406,确定第一数量是否大于第一阈值。
步骤406a,若第一数量大于第一阈值时,控制第一读取线程和第二读取线程从高优先级消息队列中读取业务消息。在读取业务消息之后,更新第一数量,将读取到的业务消息提供给处于空闲状态的上报线程,然后,进入步骤405。
步骤406b,若第一数量小于等于第一阈值,控制第一读取线程从高优先级消息队列中读取优先级消息队列,同时还控制第二读取线程从普通优先级消息队列或缓存消息队列中读取业务消息。在读取业务消息之后,均需更新第一数量,将读取到的业务消息提供给处于空闲状态的上报线程,然后,进入步骤405。
步骤407,将读取到的业务消息通过处于空闲状态的上报线程进行上报。
在上述步骤中,通过控制第一读取线程从高优先级消息队列中读取业务消息,同时根据多级消息队列中各个消息队列存储的业务数据的数量,控制第二读取线程从各个消息队列中读取业务数据的轮询顺序。
获取高优先级消息队列内存储业务消息的第一数量,获取普通优先级消息队列内存储业务消息的第二数量,基于第一数量和第二数量控制第二读取线程读取多级消息队列内存储的业务消息。
在第一数量大于第一阈值时,可以同步地触发控制第一读取线程和第二读取线程来读取高优先级消息队列中存储的业务消息。假设按照消息队列自身对应的优先级信息顺序,先获取高优先级消息队列内存储的业务消息的第一数量,判断第一数量是否大于第一阈值,若大于第一阈值,则控制第一读取线程和第二读取线程同步地读取高优先级消息队列存储的业务消息。在第一读取线程从高优先级消息队列中读取其存储的业务消息时,可以通过先进先出规则来读取。上述第一阈值可以是1,或者根据业务场景设置的其他数值。
针对高优先级消息队列,在其存储大于第一阈值的业务消息时,可以通过并行地调用第一读取线程和第二读取线程,从高优先级消息队列中读取业务数据,以便最大程度地保证高优先级业务消息被上报。由于高优先级业务消息传输需要保证其传输延时最低,其可以根据实际传输情况,动态地将读取到的业务消息提供一组专用于上报高优先级业务消息的上报线程。将从高优先级消息队列内读取到的业务消息发送至处于空闲状态的上报线程。处于空闲状态的上报线程,可以通过预设最大上报数量,基于预设最大上报数量在处于空闲状态的上报线程中确定与最大上报数量对应的上报线程,例如最大上报数量为2。在没有高优先级业务消息时,释放其中一个上报线程,以便提高上报线程的利用率。
在高优先级消息队列内存储的业务消息被消耗到一定程度,即小于等于第一阈值时,第一读取线程独立地读取业务消息提供给上报线程。此时,基于其他消息队列内存储业务消息的数量来控制第二读取线程按照消息队列对应的优先级从高到低的顺序在多级消息队列中进行轮询。
第一读取线程和第二读取线程的工作原理,如图11所示。例如,第一读取线程也可以称为直接读取线程,第二读取线程也可以称为轮询读取线程。本申请实施例中通过第一读取线程读取高优先级消息队列内存储的业务消息,基于各个消息队列内存储的业务消息的数量来控制第二读取线程在多级消息队列中按照一定的顺序轮询读取业务消息。
先获取高优先级消息队列内存储的业务消息的第一数量,在第一数量大于第一阈值时,控制第一读取线程和第二读取线程同步地读取高优先级消息队列内的业务消息。在第一数量小于等于第一阈值时,则获取普通优先级消息队列内存储的业务消息的第二数量,进一步判断控制第二读取线程从普通优先级消息队列读取业务消息,还是从缓存消息队列读取业务消息。
在第二读取线程每执行一次读取操作之后,第二读取线程需要返回获取高优先级消息队列内存储的业务消息的第一数量的步骤,即再次获取高优先级消息队列内存储的业务消息的第一数量,然后依次执行上述方法步骤。
若第一数量大于第一阈值,则第二读取线程被控制用于读取高优先级消息队列内存储的业务消息。若第一数量仍小于等于第一阈值,第二读取线程需要再次获取普通优先级消息队列内存储的业务消息的第二数量,若该第二数量大于第二阈值,则控制第二读取线程读取普通优先级消息队列内存储的业务消息。否则,在第二数量等于第二阈值时,才控制第二读取线程从缓存消息队列中读取缓存消息索引。第二阈值可以为零,或者根据业务场景设置的其他数值。
其中步骤406b还可以包括:
获取普通优先级消息队列内存储的业务消息的第二数量;
确定第二数量是否为第二阈值;
若第二数量大于第二阈值,控制第二读取线程从普通优先级消息队列中读取业务消息。在从普通优先级消息队列中读取到业务消息之后,更新第一数量、第二数量和第三数量,将读取到的业务消息提供给处于空闲状态的上报线程,返回步骤405。
若第二数量等于第二阈值,则控制第二读取线程从缓存消息队列读取缓存消息索引。
控制第二读取线程根据缓存消息索引从缓存区域读取与缓存消息索引对应的业务消息。在从缓存区域中读取到业务消息之后,更新第一数量,将读取到的业务消息提供给处于空闲状态的上报线程,返回步骤405。
在第二读取线程从缓存消息队列中读取缓存消息索引时,可以根据针对缓存消息队列设置的最低处理数量来读取,例如最低处理数量为1,表示1次只能从缓存消息队列中读取1条缓存消息索引,并在其处理完成之后,控制第二读取线程返回获取高优先级消息队列内存储的业务消息的第一数量的步骤,再按照步骤依次执行。或者,在获取高优先级消息队列内存储的业务消息的第一数量之后,存储第一数量,以及在获取普通优先级消息队列内存储的业务消息的第二数量之后,存储第二数量。在第二读取线程从缓存消息队列中读取缓存消息索引之后,可以读取第一数量和第二数量,并基于第一数量或第二数量确定第二读取线程读取多级消息队列的顺序。例如,第一数量大于第一阈值时,控制第二读取线程读取高优先级消息队列存储的业务消息,第一数量小于等于第一阈值且第二数量大于第二阈值时,控制第二读取线程读取普通优先级消息队列存储的业务消息。直到第一数量小于等于第一阈值且第二数量等于第二阈值时,才能再次读取下一条缓存消息索引。
本申请实施例通过上述方式有效地保证优先级高的消息队列优先被轮询,且在流量高峰期时,缓存消息不会占用带宽。只有在高优先级业务消息和普通优先级业务消息基本不存在的情况下,缓存的业务消息才可能被上报,其有效地提高了高优先级业务消息上报的成功率。
在上述实施例基础上,结合图5和图6详细描述本申请实施例提供的业务消息上报方法的完整处理过程。请参考图5和图6,图5和图6分别示出了本申请实施例提供的业务消息上报方法的部分流程示意图。结合图5和图6可以得到完整的业务消息上报方法的流程示意图。如图5所示,该方法包括:
步骤401,接收待上报的业务消息,该业务消息包括优先级信息。
步骤402,解析业务消息得到优先级信息。
步骤403,在优先级信息为高优先级时,将业务消息存储至高优先级消息队列。
步骤404,在优先级信息为普通优先级时,将业务消息存储至普通优先级消息队列。
步骤405,获取高优先级消息队列内存储的业务消息的第一数量,普通优先级消息队列内存储的业务消息的第二数量和处于空闲状态的上报线程的第三数量;
步骤406,确定第一数量是否小于等于第一阈值;
步骤406a,若第一数量大于第一阈值时,控制第一读取线程和第二读取线程从高优先级消息队列中读取业务消息。在高优先级消息队列中读取业务消息之后,更新第一数量,将读取到的业务消息提供给处于空闲状态的上报线程。返回步骤405。
步骤406b,若第一数量小于等于第一阈值,确定第二数量是否大于第二阈值;
步骤407a,若第二数量大于第二阈值,确定第二数量和第三数量两者中的最小值作为最大上报数量;
步骤408,控制第二读取线程从普通优先级消息队列中读取与最大上报数量对应的业务消息。在普通优先级消息队列中读取业务消息之后,更新第一数量、第二数量和第三数量,将读取到的业务消息提供给处于空闲状态的上报线程。返回步骤405。
步骤407b,若第二数量等于第二阈值,则控制第二读取线程从缓存消息队列读取缓存消息索引。
步骤409,获取缓存消息索引所包含的过滤参数;
如图6所示,该方法还包括:
步骤410,判断过滤参数是否满足过滤条件。
步骤410a,在过滤参数满足过滤条件时,删除缓存消息索引,并将与缓存消息索引对应的业务消息从缓存区域中删除。
步骤410b,在过滤参数不满足过滤条件时,将读取到的业务消息通过处于空闲状态的上报线程进行上报。
在每个业务消息上报后,该方法还包括:
步骤411,接收与业务消息对应的响应消息;
步骤412a,在与业务消息对应响应消息指示业务消息上报失败时,根据业务消息的读取位置确定对上报失败的业务消息进行处理的方式。
步骤413a,若业务消息的读取位置为高优先级消息队列或普通优先级消息队列,则将上报失败的业务消息写入缓存区域内相应的缓存位置。然后,进入步骤414。
步骤413b,若业务消息的读取位置为缓存消息队列,则更新上报失败的业务消息所对应的缓存消息索引。然后,返回步骤405。
步骤414,创建上报失败的业务消息对应的缓存消息索引。该缓存消息索引包括过滤参数和上报失败的业务消息在缓存区域内的缓存位置。
步骤415,存储缓存消息索引至缓存消息队列。在此之后,返回步骤405。
步骤412b,在与业务消息对应响应消息指示业务消息上报成功时,若是高优先级业务消息或者普通优先级业务消息,则返回步骤405。
步骤412c,在与业务消息对应响应消息指示业务消息上报成功时,若是缓存消息索引对应的业务消息,则控制删除缓存区域内缓存的业务消息,再返回步骤405。
在上述步骤中,通过控制处于空闲状态的上报线程来执行业务消息的上报。针对高优先级的业务消息,可以在空闲状态的上报线程中确定一个或者多个上报线程作为目标上报线程,通过目标上报线程将第一读取线程和第二读取线程读取的高优先级业务消息进行上报。
在高优先级业务消息上报失败时,将高优先级的业务消息存储至缓存区域相应的缓存位置,并创建与业务消息对应的缓存消息索引,同时获取业务消息被缓存次数,最早缓存时间,业务消息的类型,以及系统为业务消息分配缓存路径,即消息路径。然后,将存储缓存消息索引至多级消息队列中的缓存消息队列。上述缓存位置,可以通过缓存路径来表示。或者缓存区域的物理地址来表示。
针对高优先级的业务消息,可以在空闲状态的上报线程中确定一个或者多个上报线程作为目标上报线程,通过目标上报线程将第一读取线程和第二读取线程读取的高优先级业务消息进行上报。
针对普通优先级的业务消息,可以通过获取普通优先级消息队列存储的业务消息的第二数量和处于空闲状态的上报线程的第三数量来控制上报的业务消息,以便防止业务消息过多导致网络拥塞。在第二数量和第三数量中确定一个最小值,作为允许的最大上报数量。例如,第二数量为8,处于空闲状态的上报线程第三数量为6,确定的最大上报数量为6,可以从普通优先级消息队列中读取6条业务消息,并将6条业务消息同步地提供给处于空闲状态的上报线程,即目标上报线程。
在普通优先级的业务消息上报失败后,其处理方式与高优先级的业务消息的上述处理方式相同。在高优先级的业务消息或者普通优先级的业务消息上报成功之后,上报线程继续上报下一条业务消息。
本申请实施例中,将缓存消息索引存储在缓存消息队列中,其可以减少磁盘读写次数,从而对缓存装置进行保护。
在缓存区域内存储的业务消息上报失败之后,更新缓存消息索引中的过滤参数,例如更新缓存次数。在缓存区域内存储的业务消息上报成功之后,将业务消息从缓存区域中删除。本申请实施例中,根据缓存消息索引读取业务消息之前,解析缓存消息索引,根据过滤条件对缓存索引消息所包含的过滤参数进行判定,例如,过滤参数所包含的缓存次数达到过滤阈值,则将与缓存消息索引对应的业务消息从磁盘中删除。
根据过滤条件过滤业务消息,还可以包括:解析缓存消息索引,得到过滤参数和缓存路径。过滤参数,例如可以是,缓存次数,最早缓存时间,业务消息的类型。过滤条件是针对每个过滤参数设置的过滤阈值。当过滤参数包括多个过滤参数时,可以按照数据格式顺序地读取第一过滤参数,判断第一过滤参数是否符合过滤阈值,若符合则控制删除与缓存消息索引对应的业务消息。若不符合,则继续判断第二过滤参数是否满足与第二过滤参数对应的过滤阈值。
直到多个过滤参数中每个过滤参数均未达到与每个过滤参数对应的过滤阈值时,才按照缓存路径读取与缓存消息索引对应的业务消息。可选地,还可以针对缓存消息队列设置读取限制参数,例如每次仅允许处理一条缓存消息索引。
本申请实施例中通过控制处于空闲状态的上报线程来实现业务消息的上报,可以有效地提高业务消息上报的成功率。
下面以网络监控视频客户端向公有云服务器上报业务消息为例。本申请实施例可以通过对监控视频客户端采集的视频数据上报至公有云服务器进行分析,假设是对某商场的商铺运营情况进行分析。结合图7本申请实施例提供的业务消息上报方法的工作原理进行描述。图7示出了本申请实施例提供的业务消息上报的原理示意图。
假设消息接收服务组件601,从网络监控视频客户端接收多个业务消息如{(A1,M1),(A2,M2),(A1,Mi),…,(A2,MN)}。其中N为接收到的业务消息总量。其中,业务消息(A1,M1)中A1为消息摘要所包含的优先级信息,M1为视频数据,假设M1为第一用户进入某商店的视频数据,M2第一用户在某商店内挑选商品的视频数据。这些视频数据的优先级信息可以是通过人工智能视频分析后进行标注的结果。
消息接收服务组件601对业务消息所包含的消息摘要进行解析得到优先级信息。例如,优先级信息可以采用优先级标识A1,A2来标识业务消息的优先级。优先级信息的标识方式可以根据消息的格式,利用自定义字段来定义,或者在原有消息基础上附加标识等方式,这里不做限定。A1表示高优先级,A2表示普通优先级。优先级信息还可以低优先级标识,如A3。对于优先级信息的等级可以根据具体的业务场景划分等级。
消息接收服务组件601根据解析得到优先级信息,按照优先级标识将业务消息存储至相应的消息队列。如图7所示,高优先级消息队列602,普通优先级消息队列603,缓存消息队列604。业务消息(A1,M1)的优先级标识为A1,则将业务消息(A1,M1)存储至高优先级消息队列602,业务消息可以包括消息摘要和消息数据。业务消息(A2,M2)的优先级标识为A2,则将业务消息(A2,M2)存储至普通优先级消息队列603。假设业务消息(A1,Mi)的优先级标识为A1,其初次上报失败,则按照图8所示的方式创建业务消息(A1,Mi)对应的缓存消息索引DIi{缓存次数为1,最早缓存时间为2020052013:00,A1},缓存路径为/SD/xxx/yy,缓存路径也可以称为文件路径。
将业务消息(A1,Mi)所包含消息数据Mi存储至SD卡的xxx文件下yy路径,同时将业务消息(A1,Mi)创建缓存消息索引DIi存储到缓存消息队列604中。缓存消息索引包括消息摘要和文件路径。文件路径也可以称为缓存路径。消息摘要包括缓存次数、缓存时间、消息类型。
此时业务消息(A1,Mi)的消息数据Mi临时缓存在SD/TF卡中,在经过过滤条件筛选后或者上报成功后,该业务消息最终要被从SD/TF卡中删除。此时业务消息可以称为缓存消息。
在将业务消息存储至多级消息队列之后,消息控流服务组件605检测高优先级消息队列602内存储的业务消息数量Number_1,如果业务消息数量Number_1大于1,则消息控流服务组件605所包含的第一读取线程和第二读取线程,同时读取高优先级消息队列602内存储的高优先级业务消息。并将高优先级业务消息提供至处于空闲状态的上报线程606(即消息上报线程,简称为上报线程)。例如,同步地提供两个处于空闲状态的上报线程。由上报线程606将高优先级的业务消息上报至共有云服务器,共有云服务器接收到高优先级的业务消息进行分析后,立即向视频数据中所包含的商铺对应的客户端发送智能提醒消息,以便提醒商铺即将有顾客到店。
如果业务消息数量Number_1小于等于1,则表示高优先级消息队列内存储的业务消息已经近似清空,可以由第一读取线程独立地完成。第二读取线程可以读取普通优先级消息队列存储的业务消息的第二数量值,例如,普通优先级消息队列存储有5条业务消息,分别是不同商铺内顾客在挑选商品的视频内容,或者是顾客在商铺内无目的走动的视频内容。第二读取线程可以通过处于空闲状态的上报线程,将这些普通优先级业务消息集中上报。但是为了防止上报数量过大,导致网络拥塞,第二读取线程在读取普通优先级消息队列之前,获取普通优先级消息队列内存储的业务消息数量Number_2,处于空闲状态的上报线程606的线程数量Number_free。并比较业务消息数量Number_2和线程数量Number_free,取二者中的最小值作为允许的最大上报数量。第二读取线程按照最大上报数量从普通优先级消息队列中读取业务消息。并通过处于空闲状态的上报线程上报最大上报数量的业务消息。
本申请实施例通过设置多个消息上报线程来避免业务消息上报过程中对瞬时带宽的占用所导致的“尖刺”现象。在多个待上报的业务消息同时存在时,利用最大上报数量来避免上述瞬时带宽占用过高,出现网络拥塞问题。例如可以预先定义消息上报线程的数量为Number_line。处于空闲状态的上报线程数量Number_free,处于工作状态的上报线程数量Number_busy。初始化这些数量参数。
通过调用min(业务消息数量Number_2,空闲线程数量Number_free)语句来确定二者之间的最小值,并按照最小值从普通优先级消息队列内读取与该最小对应的业务消息提供至处于空闲状态的消息上报线程。
在业务消息上报完成之后,对处于空闲状态的上报线程数量Number_free进行加1处理,对处于工作状态的上报线程数量Number_busy进行减1处理。Number_free和Number_busy的和为Number_line。
接着,继续对高优先级消息队列内存储的业务消息数量Number_1进行判断,如果其仍然小于等于1,则继续判断普通优先级消息队列内存储业务消息数量Number_2是否为零,若业务消息数量Number_2大于零,则控制第二读取线程继续从普通优先级消息队列中读取与最大上报数量对应的业务消息,提供至处于空闲状态的上报线程。
直到业务消息数量Number_2为零,第二读取线程开始读取缓存消息队列中的缓存消息索引。在第二读取线程先读取缓存消息索引包含的消息摘要,并对消息摘要内包含的过滤参数进行判断,如果过滤参数满足过滤条件,例如初次缓存时间大于时间阈值,则删除缓存区域内存储的与缓存消息对应的业务消息。
即若判断结果指示对缓存消息索引对应的业务消息进行过滤,第二读取线程在SD卡中查找与缓存消息索引包含的消息路径对应的业务消息,并指示删除该业务消息。此操作可以由第二读取线程或者第二读取线程与其他模块协作处理来实现。
若判断结果指示对缓存消息索引对应的业务消息进行上报,则按照缓存消息索引包含的消息路径在SD卡中读取其对应的业务消息,将读取到的业务消息提供给处于空闲状态的消息上报线程上报至公有云服务器,公有云服务器根据普通优先级业务消息的消息摘要所包含的消息类型,对普通优先级业务消息进行分析处理。例如,业务消息(A2,M2)和业务消息(A2,MN)可以表示顾客在不同的商铺挑选商品的视频数据,可以提供分析装置对顾客挑选的商品对象进行分析后,向商铺的客户端反馈顾客倾向性购买商品。
本申请实施例提供的上述业务消息上报方法,通过第一读取线程确保高优先级消息优先被传输,同时在流量高峰时,通过第二读取线程防止大流量的业务消息占用公用网络的带宽资源,有效地避免了网络拥塞。
为了更详细地说明本申请实施例提出的缓存消息队列的工作原理,下面以断网导致高优先级业务消息上传失败为例,结合图9进一步展开说明,图9示出了本申请实施例提出的基于缓存消息队列上报业务消息的工作原理图。
因断网导致从高优先级消息队列读取到的业务消息上报失败,上报线程从公有云服务器接收到上报失败响应消息。该响应消息指示从高优先级消息队列中读取到的业务消息上报失败。上报线程控制将业务消息作为缓存消息写入磁盘,并获取磁盘的存储路径作为缓存消息索引的消息路径,将其加入缓存消息索引中,并将缓存消息索引存储至缓存消息队列。
在上报条件许可的条件下,上报线程从缓存消息队列中读取缓存消息索引,解析缓存消息索引的过滤参数,基于过滤参数判断是否按照缓存消息索引读取缓存消息,若是,则将缓存消息上报至共有云服务器,并从共有云服务器接收上报成功响应消息或上报失败响应消息。
上报线程接收上报成功响应消息之后,控制删除缓存消息和缓存消息队列中存储的缓存消息索引。
上报线程接收到上报失败响应消息之后,控制更新缓存消息索引。如对缓存消息索引所包含的消息摘要部分的内容进行更新。
本申请实施例中,对即时/普通业务消息上报失败后,上报线程控制将业务消息缓存到SD/TF卡上,并添加缓存消息索引至缓存消息队列。当第二读取线程继续轮询缓存消息队列读取缓存消息索引之后,根据缓存消息索引包含的消息路径,从SD/TF卡中读取缓存消息,然后将读取到的缓存消息发送至上报线程,由上报线程进行上报,若上报成功,则上报线程控制删除缓存消息索引和缓存消息,若上报失败,则更新缓存消息索引中的内容,例如缓存次数执行加1操作,再将更新后的缓存消息索引存储至缓存消息队列中。控制删除缓存消息索引和缓存消息,更新缓存消息索引等操作也可以由第二读取线程来执行。
对于SD/TF卡的存储空间,本申请提供的方式仅进行2次写磁盘操作,一次首次上传失败,将业务消息作为缓存消息写入磁盘,一次是上传成功或者满足过滤条件时,将业务消息从磁盘中删除。相对于相关技术中,利用缓存消息队列存储缓存消息的方式,本申请实施例可以避免对磁盘进行多次写操作,其不会影响程序运行性能,也不存在因高频的写操作对磁盘造成损伤。
应当注意,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
在上述实施例基础上,本申请实施例还提供了一种业务消息上报装置。参考图10,图10示出了根据本申请实施例提供的业务消息上报装置的示例性结构框图。如图10所示,该装置可以预先安装在终端设备或者服务器内。该装置包括:
业务消息接收单元501,用于接收待上报的业务消息。业务消息包括优先级信息;
消息队列存储单元502,用于基于优先级信息将业务消息存储至多级消息队列中与优先级信息对应的消息队列。多级消息队列包括高优先级消息队列和普通优先级消息队列;
线程控制单元503,用于在第一读取线程从高优先级消息队列中读取业务消息的同时,基于消息队列内存储的业务消息的数量,动态地控制第二读取线程从多级消息队列中读取业务消息;
消息上报单元504,用于将读取到的业务消息通过处于空闲状态的上报线程进行上报。
可选地,多级消息队列还包括缓存消息队列,该装置还包括:
缓存写入单元,用于在待上报的业务消息上报失败时,将所述待上报的业务消息写入缓存区域内相应的缓存位置;
索引创建单元,用于创建与上报失败的业务消息对应的缓存消息索引。缓存消息索引包括过滤参数和上报失败的业务消息在缓存区域内的缓存位置。
控制存储单元,用于将缓存消息索引存储至缓存消息队列。
线程控制单元还可以包括:
数量获取子单元,用于获取高优先级消息队列内存储的业务消息的第一数量;
轮询控制子单元,用于基于第一数量控制第二读取线程按照优先级信息从高到低的顺序从多级消息队列中读取业务消息。
轮询控制子单元,还用于:
若第一数量大于第一阈值时,则控制第二读取线程从高优先级消息队列中读取业务消息;或者,
若第一数量小于等于第一阈值时,则控制第二读取线程从普通优先级消息队列或缓存消息队列中读取业务消息。
轮询控制子单元,还用于:
获取处于空闲状态的上报线程的第三数量;
确定第二数量和第三数量两者中的最小值作为最大上报数量;
控制第二读取线程从普通优先级消息队列中读取与最大上报数量对应的业务消息。
轮询控制子单元,还用于:
从缓存消息队列读取缓存消息索引;
对缓存消息索引进行解析得到与业务消息对应的缓存位置;
根据缓存位置从缓存区域中读取与缓存位置对应的业务消息。
消息上报单元,还用于:
若读取到的业务消息是与缓存消息索引相对应的业务消息时,获取缓存消息索引所包含的过滤参数;
在过滤参数满足过滤条件时,控制删除缓存消息索引和与缓存消息索引对应的业务消息;或者,
在过滤参数不满足过滤条件时,将与缓存消息索引对应的业务消息通过处于空闲状态的上报线程进行上报。
应当理解,上述装置中记载的诸单元或模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于装置及其中包含的单元,在此不再赘述。装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。装置中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
在上文详细描述中提及的若干模块或者单元,这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
下面参考图12,图12示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
如图12所示,计算机系统包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图图2描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括业务消息接收单元、消息队列存储单元、线程控制单元以及消息上报单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,业务消息接收还可以被描述为“用于接收待上报的业务消息的单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述程序被一个或者一个以上的处理器用来执行描述于本申请的业务消息上报方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (11)
1.一种业务消息上报方法,其特征在于,该方法包括:
接收待上报的业务消息,所述业务消息包括优先级信息;
基于所述优先级信息将所述待上报的业务消息存储至多级消息队列中与所述优先级信息对应的消息队列,所述多级消息队列包括高优先级消息队列和普通优先级消息队列;
在第一读取线程从所述高优先级消息队列中读取业务消息的同时,基于所述高优先级消息队列和所述普通优先级消息队列内存储的业务消息的数量,控制第二读取线程轮询地对所述多级消息队列中各个消息队列的业务消息进行读取;
将读取到的业务消息通过处于空闲状态的上报线程进行上报。
2.根据权利要求1所述的方法,其特征在于,所述多级消息队列还包括缓存消息队列,该方法还包括:
在所述待上报的业务消息上报失败时,将所述待上报的业务消息写入缓存区域内相应的缓存位置;
创建与所述上报失败的业务消息对应的缓存消息索引,所述缓存消息索引包括过滤参数和所述上报失败的业务消息在缓存区域内的缓存位置;
将所述缓存消息索引存储至所述缓存消息队列。
3.根据权利要求2所述的方法,其特征在于,所述将读取到的业务消息通过处于空闲状态的上报线程进行上报包括:
若所述读取到的业务消息是与所述缓存消息索引相对应的业务消息时,获取所述缓存消息索引所包含的过滤参数;
在所述过滤参数满足过滤条件时,控制删除所述缓存消息索引和与所述缓存消息索引对应的业务消息;
在所述过滤参数不满足过滤条件时,将与所述缓存消息索引对应的业务消息通过处于空闲状态的上报线程进行上报。
4.根据权利要求1或2所述的方法,其特征在于,所述控制第二读取线程轮询地对所述多级消息队列所包含的各个消息队列的业务消息进行读取,包括:
获取所述高优先级消息队列内存储的业务消息的第一数量;
基于所述第一数量控制所述第二读取线程按照优先级信息从高到低的顺序从所述多级消息队列中读取业务消息;
在从所述多级消息队列中读取业务消息之后,更新所述第一数量,再返回获取所述高优先级消息队列内存储的业务消息的第一数量的步骤。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第一数量控制所述第二读取线程按照优先级信息从高到低的顺序从所述多级消息队列中读取业务消息还包括:
若所述第一数量大于第一阈值,控制所述第二读取线程从所述高优先级消息队列中读取业务消息;
若所述第一数量小于等于第一阈值,控制所述第二读取线程从所述普通优先级消息队列或缓存消息队列中读取业务消息。
6.根据权利要求5所述的方法,其特征在于,所述控制所述第二读取线程从所述普通优先级消息队列或缓存消息队列中读取业务消息还包括:
获取所述普通优先级消息队列内存储的业务消息的第二数量;
若所述第二数量大于第二阈值,则控制所述第二读取线程从所述普通优先级消息队列读取业务消息;
若所述第二数量等于第二阈值,则控制所述第二读取线程从所述缓存消息队列读取业务消息。
7.根据权利要求6所述的方法,其特征在于,所述控制所述第二读取线程从所述普通优先级消息队列读取业务消息还包括:
获取处于空闲状态的上报线程的第三数量;
确定所述第二数量和所述第三数量两者中的最小值作为最大上报数量;
控制所述第二读取线程从所述普通优先级消息队列中读取与所述最大上报数量对应的业务消息;
在从所述普通优先级消息队列读取业务消息之后,更新所述第二数量和所述第三数量,再返回获取所述高优先级消息队列内存储的业务消息的第一数量的步骤。
8.根据权利要求6所述的方法,其特征在于,所述控制所述第二读取线程从所述缓存消息队列读取业务消息还包括:
从所述缓存消息队列读取缓存消息索引;
对所述缓存消息索引进行解析得到与业务消息对应的缓存位置;
根据所述缓存位置从缓存区域中读取与所述缓存位置对应的业务消息。
9.一种业务消息上报装置,其特征在于,该装置包括:
业务消息接收单元,用于接收待上报的业务消息,所述业务消息包括优先级信息;
消息队列存储单元,用于基于所述优先级信息将所述业务消息存储至多级消息队列中与所述优先级信息对应的消息队列,所述多级消息队列包括高优先级消息队列和普通优先级消息队列;
线程控制单元,用于在第一读取线程从所述高优先级消息队列中读取业务消息的同时,基于所述高优先级消息队列和所述普通优先级消息队列内存储的业务消息的数量,控制第二读取线程轮询地对所述多级消息队列中各个消息队列的业务消息进行读取;
消息上报单元,用于将读取到的业务消息通过处于空闲状态的上报线程进行上报。
10.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545394.4A CN111510395B (zh) | 2020-06-16 | 2020-06-16 | 业务消息上报方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010545394.4A CN111510395B (zh) | 2020-06-16 | 2020-06-16 | 业务消息上报方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111510395A CN111510395A (zh) | 2020-08-07 |
CN111510395B true CN111510395B (zh) | 2020-09-25 |
Family
ID=71865054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010545394.4A Active CN111510395B (zh) | 2020-06-16 | 2020-06-16 | 业务消息上报方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111510395B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131180B (zh) * | 2020-09-25 | 2024-02-06 | 京东科技控股股份有限公司 | 数据上报方法、装置以及存储介质 |
CN113760177A (zh) * | 2021-01-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种数据的上报方法和装置 |
CN112905318A (zh) * | 2021-02-04 | 2021-06-04 | 方新 | 一种基于消息优先级队列分布式交换网元调用方法及系统 |
CN113037846A (zh) * | 2021-03-17 | 2021-06-25 | 成都新希望金融信息有限公司 | 数据上报方法、装置、电子设备和计算机可读存储介质 |
CN113076290B (zh) * | 2021-04-12 | 2024-01-30 | 百果园技术(新加坡)有限公司 | 文件删除方法、装置、设备、系统及存储介质 |
CN113347151B (zh) * | 2021-04-28 | 2023-04-28 | 厦门海迈科技股份有限公司 | 一种基于socket共享内存的数据交互方法 |
CN115412747B (zh) * | 2021-05-27 | 2024-03-01 | 京东方科技集团股份有限公司 | 监播方法、监播设备和计算机可读介质 |
CN113365105B (zh) * | 2021-06-30 | 2022-12-06 | 北京奇艺世纪科技有限公司 | 一种内容生产控制方法、装置、设备及存储介质 |
CN113992597B (zh) * | 2021-09-13 | 2024-01-23 | 广州番禺电缆集团有限公司 | 一种电缆监测数据上报方法、装置、设备以及存储介质 |
CN113992591A (zh) * | 2021-10-28 | 2022-01-28 | 平安普惠企业管理有限公司 | 网络请求处理方法、装置、设备及存储介质 |
CN115002033B (zh) * | 2022-05-25 | 2023-06-20 | 建信金融科技有限责任公司 | 一种流量控制方法、装置、设备、存储介质及计算机产品 |
CN115314338B (zh) * | 2022-07-27 | 2024-03-12 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及系统 |
CN117241231A (zh) * | 2022-10-27 | 2023-12-15 | 青岛意想意创技术发展有限公司 | 基于优先级信息的消息调度方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108259384A (zh) * | 2016-12-29 | 2018-07-06 | 深圳市中兴微电子技术有限公司 | 一种队列轮询选择方法及装置 |
CN110493145A (zh) * | 2019-08-01 | 2019-11-22 | 新华三大数据技术有限公司 | 一种缓存方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102056097A (zh) * | 2009-11-09 | 2011-05-11 | 华为技术有限公司 | 基于网关的消息发送方法及Parlay X网关 |
CN103139732A (zh) * | 2011-11-24 | 2013-06-05 | 方正国际软件有限公司 | 一种改进的短信发送方法及系统 |
CN103517225B (zh) * | 2012-06-27 | 2018-01-02 | 中兴通讯股份有限公司 | 彩信重试方法及装置 |
CN109547357A (zh) * | 2018-12-03 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种存储系统中数据信息的传输方法、装置、设备及介质 |
-
2020
- 2020-06-16 CN CN202010545394.4A patent/CN111510395B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108259384A (zh) * | 2016-12-29 | 2018-07-06 | 深圳市中兴微电子技术有限公司 | 一种队列轮询选择方法及装置 |
CN110493145A (zh) * | 2019-08-01 | 2019-11-22 | 新华三大数据技术有限公司 | 一种缓存方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111510395A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111510395B (zh) | 业务消息上报方法、装置、设备及介质 | |
CN109684358B (zh) | 数据查询的方法和装置 | |
CN108696374B (zh) | 更新客户端配置的方法和装置 | |
KR20220062101A (ko) | 정보 송신 방법, 장치, 판독 가능한 매체 및 전자 장치 | |
US8732258B2 (en) | Method and system for transporting telemetry data across a network | |
CN111124819B (zh) | 全链路监控的方法和装置 | |
CN110598138A (zh) | 基于缓存的处理方法和装置 | |
CN111277848B (zh) | 直播间互动消息的处理方法、装置、电子设备及存储介质 | |
CN110719215B (zh) | 虚拟网络的流信息采集方法及装置 | |
CN112839067B (zh) | 一种数据同步方法及装置 | |
CN113220715B (zh) | 一种数据处理方法、系统、计算机及可读存储介质 | |
CN113467910B (zh) | 基于业务等级的过载保护调度方法 | |
CN112199174A (zh) | 消息发送的控制方法、装置、电子设备及计算机可读存储介质 | |
CN109510850B (zh) | 浏览请求的处理方法、装置及系统 | |
CN111913660B (zh) | 打点数据处理方法和系统 | |
KR101845195B1 (ko) | M2m 시스템에서 다중 리소스 구독 연관 방법 | |
CN113783913A (zh) | 一种消息推送管理方法和装置 | |
CN108460042B (zh) | 一种页面显示的方法、相关设备及系统 | |
CN113422808A (zh) | 物联网平台http信息推送方法、系统、装置及介质 | |
CN109862069B (zh) | 消息处理方法和装置 | |
CN113765812A (zh) | 一种标记报文的方法和装置 | |
US8874646B2 (en) | Message managing system, message managing method and recording medium storing program for that method execution | |
CN113422699B (zh) | 数据流处理方法、装置、计算机可读存储介质及电子设备 | |
CN112202781B (zh) | 一种电商大数据量回执报文处理方法、装置和系统 | |
CN115002033A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40028374 Country of ref document: HK |