MESSAGE MANAGEMENT METHOD AND DEVICE, AND STORAGE MEDIUM
本申请要求于2017年12月25日提交中国专利局,申请号为201711425268.X,申请名称为“请求消息管理方法及装置、存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。 本申请涉及通信技术,尤其涉及一种消息管理方法、设备及存储介质。 大量复杂信息传送的条件下,其主要面临以下两个方面的问题: 1)大量消息条件下阻塞现象严重。如果有大量请求到来并且大于服务器缓存区大小,请求被拒绝,消息丢失。传统的处理策略是,尽可能地保证所有消息的公平达到,即便有消息损失,也尽量保证公平。这就导致了有限的缓存资源没有被真正紧急的消息利用,重要的消息不能送达。 2)紧急消息时延较高。实际中,推送系统发送的消息根据重要程度有相应不同的截止期(例如地震,恶劣天气,股市动态等消息的截止期要明显短于游戏应用,娱乐资讯的截止期),而现有技术中的调度策略由于强调所有消息流之间的公平,使得接收终端无法即使接收这些紧急消息。 发明内容 根据本申请提供的各种实施例提供一种消息管理方法、设备及存储介质。 一种消息管理方法,由消息管理设备执行,所述方法包括: 建立缓存队列,数量至少为两个; 根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中; 从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中; 将所述统一缓存队列中的消息调度到对应调度队列中;及 通过与所述调度队列对应的发送通道向终端发送所述消息。 一种消息管理设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行以下步骤: 建立缓存队列,数量至少为两个; 根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中; 从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中; 将所述统一缓存队列中的消息调度到对应的调度队列中;及 通过与所述调度队列对应的发送通道向终端发送。 一种存储有计算机可读指令的非易失性存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤: 建立缓存队列,数量至少为两个; 根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中; 从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中; 将所述统一缓存队列中的消息调度到对应调度队列中;及 通过与所述调度队列对应的发送通道向终端发送所述消息。 本申请的一个或多个实施例的细节在下面的附图和描述中提出。本申请的其它特征、目的和优点将从说明书、附图以及权利要求书变得明显。 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 图1为一个实施例中消息管理方法的流程示意图; 图2为一个实施例中消息管理设备的内部结构示意图; 图3为一个实施例中消息管理装置的模块结构示意图; 图4为一个实施例中消息管理方法的应用环境示意图; 图5为另一个实施例中消息管理装置的模块结构示意图; 图6为一个实施例中消息管理方法使用中提取消息的过程流程图; 图7为一个实施例中通过表1和表2计算得到的在多个发送终端同时以10ms和20ms的间隔发送消息时,消息丢失率示意图;及 图8为一个实施例中消息管理方法使用中紧急消息时延柱状示意图。 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。 对本申请进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。 1)终端,包括但不限于:普通终端、专用终端,其中普通终端与发送通道保持长连接和/或短连接,专用终端与发送通道保持长连接。 2)紧急消息:对所接收的消息进行判断,当消息的优先级高于系统设定的优先级阈值时,判断消息为紧急消息,低于系统设定的优先级阈值时,判断消息为非紧急消息。 对消息的来源渠道进行判断,当消息来源于系统设定的紧急渠道时,消息为紧急消息;或者,当所接收的消息带有紧急消息标识时,系统判断消息为紧急消息。 紧急消息的时延性高于非紧急消息的时延性。 图1为一个实施例中消息管理方法的流程示意图,如图1所示,消息管理方法包括以下步骤: 步骤101:建立缓存队列,数量至少为两个。 步骤102:根据所接收的消息的优先级,将所接收的消息存储到对应的缓 存队列中。 在一个实施例中,建立缓存队列,包括:建立固定数量的缓存队列;所建立的缓存队列用于接收、并存储缓存队列所对应优先级的消息。其中,缓存队列的数量不因为所接收消息数量的改变发生变化。本实施例所处的使用环境主要针对固定使用环境的系统,所接收的消息的峰值不会出现较大的变化。 在一个实施例中,建立缓存队列,包括:建立静态数量的缓存队列,该静态数量与初始化的消息涉及的全部优先级的数量相应。当消息管理设备接收到消息时,通过本申请所记载的消息管理方法,可以将全部消息或者部分消息进行初始化。在一个实施例中,消息管理设备根据完成初始化的消息所涉及的优先级的数量,建立与该数量对应的缓存队列。在一个实施例中,缓存队列的数量与完成初始化的消息所涉及的优先级的数量的比例为1:1,或1:2,或2:1。 在一个实施例中,建立静态数量的缓存队列,静态数量与初始化的消息涉及的全部优先级的数量相应,还包括:根据硬件设备的运行速度和信息处理能力和/或根据消息管理设备所处网络环境中各接口和总线的信息传输能力,建立静态数量的缓存队列。 在一个实施例中,静态数量与初始化的消息涉及的全部优先级的数量相应,包括:静态数量与全部优先级呈正相关的数量关系,全部优先级涉及所初始化的消息的涉及的优先级。 例如,在一个实施例中,当完成初始化的消息数量为4条时,建立2条缓存队列;在另一个实施例中,当完成初始化的消息数量为8条时,建立4条或3条缓存队列。 在一个实施例中,建立缓存队列,包括:获取所接收的消息所涉及的优先级;根据所接收的消息所涉及的优先级建立动态数量的缓存队列。其中,所接收的消息包括:已经接收并完成发送的消息或者已经完成接收但未完成发送的消息。 在一个实施例中,根据所接收的消息所涉及的优先级建立缓存队列,包括:根据所接收的消息所涉及的优先级,建立与所涉及的优先级相应数量的缓存队列。比如,已经完成接收但未完成发送的消息数量为4条,涉及的优先级数量为4时,消息管理设备可建立4条或2条缓存队列。 在一个实施例中,消息管理设备可以按照固定比例建立与所涉及的优先级相应数量的缓存队列。比如,已经完成接收但未完成发送的消息数量为4条,涉及的优先级数量为4时,消息管理设备可以按照2比1的比例建立2条等待队列。 在一个实施例中,根据所接收的消息所涉及的优先级建立缓存队列,包括:将所接收的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配,根据匹配结果,建立动态数量的缓存队列,其中包括至少一个缓存队列用于存储消息中的固定优先级的消息。 其中,在执行本申请所提供的消息管理方法时,硬件设备可以提取单位时间内,已经接收并完成发送的消息的数量,根据已经接收并完成发送的消息的数量,对相邻的单位时间内将要接收的消息数量进行预判,以实现智能设定缓存队列的数量。 将单位时间内已经所接收并完成发送的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配,根据匹配结果,建立动态数量的缓存队列,动态数量与单位时间内已经所接收并完成发送的消息所涉及的优先级的数量相关联。其中,包括至少一个缓存队列用于存储消息中的非紧急消息,优先级的数量阈值可以由系统进行设定不同数值。 在一个实施例中,系统设定的优先级数量阈值为5,若接收的消息涉及的优先级数量为6,大于优先级数量阈值5,此时,则建立第一数量的缓存队列;若接收的消息涉及的优先级数量为4,小于优先级数量阈值5,则建立第二数量的缓存队列,第一数量大于第二数量。 步骤103:从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中。 从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中,包括:当从缓存队列中提取的消息全部被调度到对应的调度队列时,通过轮询提取的方式,从缓存队列中提取消息到统一缓存队列中。 在一个实施例中,消息管理设备可以设置取值单元,用于从缓存队列中提取消息到统一缓存队列中,当取值单元为空时,从缓存队列顶部开始遍历查找,通过轮询提取的方式,当缓存队列中有消息时,通过取值单元将缓存队列中提取消息到统一缓存队列中。 在一个实施例中,通过轮询提取的方式,从缓存队列中提取消息到统一缓存队列中,包括:对缓存队列的优先级进行降序排列;按照降序排列的结果,通过轮询提取,从缓存队列中提取消息到统一缓存队列中。由此,可以保证高优先级缓存队列中的消息,优先进入统一缓存队列中。 在一个实施例中,当所接收的消息携带有优先级标识时,执行本申请所记载消息管理方法的硬件设备可以识别各优先级标识,进行指定提取,使得高优先级的消息优先进入统一缓存队列中,该实施例中应用场景包括:针对指定终端,例如需要对地震发生做出应急反应的终端设备发送消息时,在接收到表示地震发生的最高优先级消息时,可以在系统中优先发送该消息。 步骤104:将统一缓存队列中的消息调度到对应调度队列中。 将统一缓存队列中的消息调度到对应调度队列中,包括至少以下之一: 1)根据统一缓存队列中消息的优先级标识,分发到实时或非实时调度队列中; 2)根据统一缓存队列中的消息的优先级,确定消息的实时或非实时的调度属性,根据消息的调度属性调度到实时调度队列或非实时调度队列中。 在一个实施例中,根据统一缓存队列中的消息的优先级,确定消息的实时或非实时的调度属性,包括:当统一缓存队列中的消息的优先级,高于优先级阈值时,确定消息的实时的调度属性;当统一缓存队列中的消息的优先级,不高于优先级阈值时,确定消息的非实时的调度属性。 通过该实施例所记载的消息管理方法,硬件设备可以通过对消息的优先 级完成判断,进而执行具体的调度。 步骤105:通过与调度队列对应的发送通道向终端发送消息。 在一个实施例中,接收到消息时,还可以首先确定所接收的消息的优先级。在一个实施例中,解析所接收的消息,获取消息的渠道信息;基于渠道信息,确定消息的优先级。 作为示例,渠道信息用于表示消息的来源,例如所来源的服务器或所来源的应用;基于渠道信息,确定消息的优先级,可以是根据预设置的渠道优先级,确定消息的优先级,例如:消息的来源应用实时性高的应用高于实时性低的应用。 渠道信息,包括但不限于:消息的来源APP、消息的来源终端; 在一个实施例中,消息的来源APP位于预设的APP信任列表时,APP信任列表中的APP所发出的消息的优先级高于非APP信任列表中的APP所发出的消息优先级。 在一个实施例中,当消息自身携带优先级信息时,基于消息所携带的优先级信息,执行以下至少之一:将消息携带的优先级信息融合于消息的渠道信息中;渠道信息继承消息携带的优先级信息。 当确定将消息携带的优先级信息融合于消息的渠道信息中时,基于融合后的渠道信息确定消息的优先级。 当确定渠道信息继承消息携带的优先级信息时,仅需要基于渠道信息,确定消息的优先级。 通过与调度队列对应的发送通道向终端发送,包括至少以下之一: 当调度队列为实时调度队列时,将调度队列中的消息通过预留通道发送,预留通道用于即时发送实时调度队列中的消息。或者,当调度队列为非实时调度队列时,将非调度队列中的消息根据优先级通过通用通道顺序发送。 在一个具体的实施例中,消息具体可以是请求消息。比如,其他计算机设备或者终端向消息管理设备发起请求的消息。 应该理解的是,虽然上述各实施例的流程图中的各个步骤按照箭头的指 示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。 图2是一个实施例中消息管理设备的内部结构示意图。消息管理设备200,具体可以是带有包括带有消息处理功能的移动电话、计算机、数字广播终端、信息收发设备、游戏控制台、平板设备、医疗设备、健身设备或者个人数字助理等硬件设备。如图2所示,消息管理设备200包括:处理器、存储器、网络接口和用户接口。消息管理设备200中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的消息管理设备的限定,具体的消息管理设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。其中,用户接口可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。 存储器包括非易失性存储介质和内存储器。该消息管理设备200的非易失性存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现消息管理方法。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行消息管理方法。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括这些和任意其它适合类型的存储器。 本申请实施例中的存储器包括但不限于:三态内容寻址存储器、静态随机存储器能够存储消息数据以支持消息管理设备200的操作。这些数据的示例包括:用于在消息管理设备200上操作的任何计算机可读指令,如操作系统和缓存模块和调度模块;各类型消息等。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。缓存模块和调度模块可以包含各种应用程序,例如带有消息管理功能的客户端、或应用程序等,用于实现对所接收的消息进行存储、转发在内的各种应用业务。实现本申请实施例消息管理方法的计算机可读指令可以包含在缓存模块和调度模块中。 上述本申请实施例揭示的方法可以由图2所示的消息管理设备通过处理器执行。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的操作完成。上述的处理器可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本申请实施例中的提供的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所提供的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,处理器提取存储介质中的信息,结合其硬件完成前述方法的步骤。 在一个实施例中,消息管理设备200可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行所述消息管理方法。 本申请实施例还提供了一种计算机可读存储介质,例如包括可执行指令的存储器,上述可执行指令可由消息管理设备200的处理器执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。 本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令被以一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:建立缓存队列,数量至少为两个;根据所接收的消息 的优先级,将所接收的消息存储到对应的缓存队列中;从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中;将统一缓存队列中的消息调度到对应的调度队列中;及通过与调度队列对应的发送通道向终端发送消息。 如图3所示,在一个实施例中,提供了一种消息管理装置300。参照图3,该消息管理装置300包括:缓存模块301和调度模块302。消息管理装置300中包括的各个模块可全部或部分通过软件、硬件或其组合来实现。 缓存模块301,用于建立缓存队列,缓存队列数量至少为两个;根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中。 调度模块302,用于从缓存队列中提取消息;将所提取的消息存储到统一缓存队列中;将统一缓存队列中的消息调度到对应的调度队列中;通过与调度队列对应的发送通道向终端发送。 在一个实施例中,缓存模块301还用于建立固定数量的缓存队列;所建立的缓存队列用于存储与缓存队列所对应的优先级的消息。其中,缓存队列的数量不因为所接收消息数量的改变发生变化,本实施例所处的使用环境主要针对固定使用环境的系统,所接收的消息的峰值不会出现较大的变化。 在一个实施例中,缓存模块301还用于建立静态数量的缓存队列;静态数量与初始化的消息涉及的全部优先级的数量相应。 在一个实施例中,缓存模块301还用于全部优先级呈正相关的数量关系的缓存队列;全部优先级涉及所初始化的消息的涉及的优先级。 当接收到消息时,通过本申请所记载的消息管理方法,可以将全部消息或者部分消息进行初始化。在一个实施例中,根据完成初始化的消息所涉及的优先级的数量,建立与该数量对应的缓存队列。在一个实施例中,缓存队列的数量与完成初始化的消息所涉及的优先级的数量的比例为1:1,或1:2,或2:1。 在一个实施例中,建立与所初始化的消息的全部优先级数量相应的缓存队列,包括:建立与所初始化的消息的全部优先级数量,呈正相关的缓存队列。 例如,在一个实施例中,当完成初始化的消息数量为4条时,建立2条缓存队列;在一个实施例中,当完成初始化的消息数量为8条时,建立4条或3条存队列。 在一个实施例中,缓存模块301还用于获取所接收的消息所涉及的优先级;根据所接收的消息,建立动态数量缓存队列。 根据所接收的消息所涉及的优先级,建立与所涉及的优先级相应数量的缓存队列。在一个实施例中,已经完成接收但未完成发送的消息数量为4条,涉及的优先级数量为4时,可选的,建立4条或2条缓存队列。 在一个实施例中,缓存模块301还用于根据所接收的消息所涉及的优先级,建立与所涉及的优先级相应数量的缓存队列。 在一个实施例中,缓存模块301还用于将所接收的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配;根据匹配结果,建立动态数量的缓存队列;其中包括至少一个缓存队列用于存储消息中的固定优先级的消息。 其中,在执行本申请所提供的消息管理方法时,硬件设备可以提取单位时间内,已经接收并完成发送的消息的数量,根据已经接收并完成发送的消息的数量,对相邻的单位时间内将要接收的消息数量进行预判,以实现智能设定缓存队列的数量。 将单位时间内已经所接收并完成发送的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配,根据匹配结果,建立动态数量的缓存队列,动态数量与单位时间内已经所接收并完成发送的消息所涉及的优先级的数量相关联,其中,包括至少一个缓存队列用于存储消息中的非紧急消息,优先级的数量阈值可以由系统进行设定不同数值。 在一个实施例中,缓存模块301还用于当消息所涉及的优先级的数量大于等于优先级的数量阈值时,建立第一数量的缓存队列;当消息所涉及的优先级的数量小于优先级的数量阈值时,建立第二数量的缓存队列。 例如,系统设定的优先级数量阈值为5,若接收的消息涉及的优先级数量为6,大于优先级数量阈值5,此时,则建立第一数量的缓存队列;若接收的 消息涉及的优先级数量为4,小于优先级数量阈值5,则建立第二数量的缓存队列,第一数量大于第二数量。 在一个实施例中,缓存模块301还用于跟据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;通过轮询提取的方式,从缓存队列中提取消息到统一缓存队列中。 可以设置取值单元,用于从缓存队列中提取消息到统一缓存队列中,当取值单元为空时,从缓存队列顶部开始遍历查找,通过轮询提取的方式,当缓存队列中有消息时,通过取值单元将缓存队列中提取消息到统一缓存队列。 在一个实施例中,缓存模块301还用于对缓存队列的优先级进行降序排列;按照降序排列的结果,通过轮询提取,从缓存队列中提取消息到统一缓存队列中。 在一个实施例中,调度模块302还用于根据统一缓存队列中消息的优先级标识,分发到实时或非实时调度队列中;调度模块302还用于根据统一缓存队列中的消息的优先级,确定消息的实时或非实时的调度属性,调度模块302还用于根据消息的调度属性调度到实时调度队列或非实时调度队列中。 按照降序排列的结果,通过轮询提取,从缓存队列中提取消息到统一缓存队列中。由此,可以保证高优先级缓存队列中的消息,优先进入统一缓存队列中。 在一个实施例中,调度模块302还用于当统一缓存队列中的消息的优先级,高于优先级阈值时,确定消息的实时的调度属性;当统一缓存队列中的消息的优先级,不高于优先级阈值时,确定消息的非实时的调度属性。 调度模块302还用于将统一缓存队列中的消息调度到对应调度队列中;通过与调度队列对应的发送通道向终端发送。 当所接收的消息携带有优先级标识时,执行本申请所记载消息管理方法的硬件设备可以识别各优先级标识,进行指定提取,使得高优先级的消息优先进入统一缓存队列中,该实施例中应用场景包括:针对指定终端,例如需要对地震发生做出应急反应的终端设备发送消息时,在接收到表示地震发生 的最高优先级消息时,可以在系统中优先发送该消息。 在一个实施例中,缓存模块301还用于解析所接收的消息,获取消息的渠道信息;基于渠道信息,确定消息的优先级,可以是根据预设置的渠道优先级,确定消息的优先级,例如:消息的来源应用实时性高的应用高于实时性低的应用。缓存模块301还用于基于渠道信息,确定消息的优先级。 在一个实施例中,当消息自身携带优先级信息时,缓存模块301还用于将消息携带的优先级信息融合于消息的渠道信息中;当确定将消息携带的优先级信息融合于消息的渠道信息中时,基于融合后的渠道信息确定消息的优先级。 当确定渠道信息继承消息携带的优先级信息时,仅需要基于渠道信息,确定消息的优先级。 在一个实施例中,调度模块302还用于当调度队列为实时调度队列时,将调度队列中的消息通过预留通道发送,预留通道用于即时发送实时调度队列中的消息;当调度队列为非实时调度队列时,将非调度队列中的消息根据优先级通过通用通道顺序发送。 在一个实施例中,本申请提供的消息管理装置300可以实现为一种计算机可读指令的形式,计算机可读指令的可在如图2所示的消息管理设备200上运行。消息管理设备200的存储器中可存储组成该消息管理装置300的各个指令模块,比如,图3所示的缓存模块301和调度模块302。各个指令模块存储的计算机可读指令使得处理器执行本说明书中描述的本申请各个实施例的消息管理方法中的步骤。 图4是一个实施例中消息管理方法的应用环境示意图,如图4所示,发送控制台,是管理员登陆平台,以网页或者特定语言开发的工具包(SDK)形式呈现。通过发送控制台,用户可以实现以HTTP请求方式的消息发送,查询注册用户信息以及对用户进行操作;注册服务器,用来存储终端用户的注册信息,方便对用户进行分类;转发服务器负责消息体的存储和转发,接收终端可以是各类移动互联设备,既可以通过TCP长连接方式和转发服务器连接, 通过常驻内存的消息服务进程接收推送信息,也可以通过TCP短连接方式和转发服务器连接。当终端为专用终端时,仅通过TCP长连接方式和转发服务器连接。 如图5所示,在一个实施例中,缓存模块301包括:消息接收器3011、缓存队列3012和统一缓存器3013。调度模块302包括:缓存提取接口3021、实时调度队列3022、非实时调度队列3023、预留终端连接器3024和通用终端连接器3025; 在一个实施例中,首先建立缓存队列3022,其中缓存队列3022数量为四个。 当消息接收器3011接收到地震信息、QQ登录验证请求、股市信息和游戏应用消息时,根据各消息所对应的不同优先级,将各信息分别存储到对应的四个缓存队列中,其中所接收的地震信息、QQ登录验证请求、股市信息和游戏应用消息的优先级依次降低。 在一个实施例中,当缓存队列3022数量为三个时,当消息接收器3011接收到地震信息、QQ登录验证请求、股市信息和游戏应用消息时,由于其中所接收的地震信息、QQ登录验证请求、股市信息和游戏应用消息的优先级依次降低,因此,地震信息进入第一缓存队列,QQ登录验证请求和股市信息进入第二缓存队列,游戏应用消息进入第三缓存队列,由此,消息的优先级越高,消息占用越多的缓存队列。 统一缓存器3013从缓存队列3012中提取消息,统一缓存器3013由一个Key-Value类型的数据库实现,每个缓存队列3012对应统一缓存器3013的一个Key位置,当缓存队列3012检测到统一缓存器3013的Key值对应Value为空时,将队头元素写入相应的Value。 缓存提取接口3021,采用轮询提取机制从统一缓存器3013提取消息时,每一条消息被提取的机会是均等的;但由于高优先级的消息占用更多的Key位置,其被提取的概率也等比例的增加。缓存提取接口3021通过一次提取读到高优先级消息的概率: 其中n表示缓存队列总数,m表示缓存队列中为高优先级消息分配的缓存队列数。当P较大时,意味着为高优先级消息分配了更多的传输通道,高优先级消息不必在队列中等待太长时间即可推送到调度模块。 相比于现有技术中的强调依据接收时间的顺序,公平接收转发消息的处理方式,采用本申请所记载的消息管理方法,能够根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;避免了采用现有技术所造成的只能根据接收时间的顺序对所接收的消息进行转发所造成的紧急消息的延误。 图6为一个实施例中消息管理方法使用中提取消息的过程流程图。如图6所示,缓存提取接口3021,采用轮询提取机制从统一缓存器3013提取消息完成后,缓存提取接口3021将所提取的消息存储到实时调度队列3022或非实时调度队列3023中,包括以下步骤: 步骤601:开始。 步骤602:判断实时调度队列是否为空,如果是,执行步骤404,否则,执行步骤603。 步骤603:将消息存储到实时调度队列中。 步骤604:判断非实时调度队列是否为空,如果是,执行步骤601,否则执行步骤605。 步骤605:将消息存储到非实时调度队列中。 通过图6所记载的提取消息的过程,实时调度队列可以存储高优先级的消息,非实时调度队列即可以按照优先级由高到低的方式存储消息,也可以按照消息接收的时间顺序存储。 在本实施例中,所接收的地震信息、QQ登录验证请求、股市信息和游戏应用消息中,缓存提取接口3021将所提取的地震信息存储到实时调度队列3022中,将QQ登录验证请求、股市信息和游戏应用消息按照优先级由高到低的顺序,依次保存在非实时调度队列3023中,在本申请的一个实施例中,实 时调度队列3022和非实时调度队列3023可以统一表现为调度队列。 在本实施例中,当缓存提取接口3021从统一缓存器3013中提取的是紧急消息时,消息直接进入实时调度队列,随后由专门预留给实时调度队列的预留终端连接器3024提取发送;当缓存提取接口从统一缓存器3013中读出的是非紧急消息时,这时系统根据消息优先级由高到低,由通用终端连接器3025逐条提取发送。 若某时刻实时调度队列有A数目的消息等待调度,非实时调度队列同时有B数目的消息等待调度,调度的结果是A直接减小直至为0,B逐次减小,每次必须保证A为0。在不考虑连接终端等待的情况下,紧急消息的最坏时延: 普通消息的最坏时延: 其中,ti和ci分别为第i条紧急消息在每个终端的发送时间和第i条消息需要发送的终端数,tj和cj分别为第j条普通消息在每个终端的发送时间和第j条消息需要发送的终端数。 在一个实施例中,如图4的应用环境中,发送控制台采用Shell脚本方式实现请求服务。使用Nginx服务器作为请求接收器,统一缓存器采用Redis数据库,当采用紧急消息占比为10%的消息发送方案,设置5个缓存队列,分配给高优先级的紧急消息其中的2个队列。在执行根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中;将统一缓存队列中的消息调度到对应调度队列中;通过与调度队列对应的发送通道向终端发送请求的过程中,在每个发送端发送1000条消息,每条消息发送间隔20ms,同一终端设备接收的条件下,当通过一个发送端发送、两个发送端同时发送、三个发送端同时发送时的消息到达数指标,见表1: 表1 由表1可见,通过本申请所记载的消息管理方法,在多个发送终端同时以20ms的间隔发送消息时,可以有效提高消息的到达率,降低消息在接收发送过程中的丢失。 在每个发送端发送1000条消息,每条消息发送间隔10ms,同一终端设备接收的条件下,分别测试一个发送端发送、两个发送端同时发送、三个发送端同时发送时的消息到达数指标,见表2: 表2 由表2可见,通过本申请所记载的消息管理方法,在多个发送终端同时以10ms的间隔发送消息时,可以有效提高消息的到达率,降低消息在接收发送过程中的丢失。 图7为通过表1和表2计算得到的在多个发送终端同时以10ms和20ms的间 隔发送消息时,消息丢失率示意图,如图7所示,实线表示10ms间隔发送消息时,消息丢失率,虚线表示20ms间隔发送消息时,消息丢失率;通过本申请所记载的根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中;将统一缓存队列中的消息调度到对应调度队列中;通过与调度队列对应的发送通道向终端发送消息,可以有效提高消息的到达率,降低消息在接收发送过程中的丢失。 在本实施例中,分别在200个终端,500个终端,1000个终端条件下,应用本申请所记载的在执行根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;从缓存队列中提取消息,将所提取的消息存储到统一缓存队列中;将统一缓存队列中的消息调度到对应调度队列中;通过与调度队列对应的发送通道向终端发送请求的过程中,发送1000条紧急消息的平均时延,结果如表3所示,表3中紧急消息时延的单位为:毫秒(ms), 表3 通过表3记载可知,通过本申请所记载的消息管理方法,可以有效降低高优先级的紧急消息的时延,避免现有技术条件下,高优先级的紧急消息由于等待发送所造成的高时延问题。 图8是本申请实施例提供的消息管理方法使用中紧急消息时延柱状示意图,如图8所示,实线柱状图用于表示现有技术条件下紧急消息时延时间,阴影柱状图用于表示采用本申请消息管理方法条件下紧急消息时延时间;通过本申请所记载的根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中;从缓存队列中提取消息,将所提取的消息存储到统一缓存队列 中;将统一缓存队列中的消息调度到对应调度队列中;通过与调度队列对应的发送通道向终端发送消息,可以有效降低高优先级的紧急消息的时延,避免现有技术条件下,高优先级的紧急消息由于等待发送所造成的高时延问题。 本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。 本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序操作实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序操作到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的操作产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。 这些计算机程序操作也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的操作产生包括操作装置的制造品,该操作装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。 这些计算机程序操作也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的操作提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方 法的实施例的流程。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。 A message management method, comprising: establishing at least two cache queues; according to the priority of a received message, storing the received message in a corresponding cache queue; extracting the message from the cache queue and storing the extracted message in a unified cache queue; scheduling the message in the unified cache queue to a corresponding scheduling queue; and sending the message to a terminal via a sending channel corresponding to the scheduling queue. 一种消息管理方法,由消息管理设备执行,包括: 建立缓存队列,数量至少为两个; 根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中; 从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中; 将所述统一缓存队列中的消息调度到对应的调度队列中;及 通过与所述调度队列对应的发送通道向终端发送所述消息。 根据权利要求1所述的方法,其特征在于,所述建立缓存队列,包括: 建立固定数量的缓存队列;所建立的缓存队列用于接收、并存储所述缓存队列所对应优先级的消息。 根据权利要求1所述的方法,其特征在于,所述建立缓存队列,包括: 建立静态数量的缓存队列,所述静态数量与初始化的消息涉及的全部优先级的数量相应。 根据权利要求3所述的方法,其特征在于,所述静态数量与初始化的消息涉及的全部优先级的数量相应,包括: 所述静态数量与全部优先级呈正相关的数量关系,所述全部优先级涉及所初始化的消息的涉及的优先级。 根据权利要求1所述的方法,其特征在于,所述建立缓存队列,包括: 获取所接收的消息所涉及的优先级;及 根据所接收的消息所涉及的优先级建立动态数量的缓存队列。 根据权利要求5所述的方法,其特征在于,所述根据所接收的消息所涉及的优先级建立动态数量的缓存队列,包括 根据所接收的消息所涉及的优先级,建立与所涉及的优先级相应数量的缓存队列。 根据权利要求5所述的方法,其特征在于,所述根据所接收的消息所涉及的优先级建立动态数量的缓存队列,包括: 将所接收的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配, 根据匹配结果,建立动态数量的缓存队列,其中包括至少一个缓存队列用于存储所述消息中的固定优先级的消息。 根据权利要求7所述的方法,其特征在于,所述根据匹配结果,建立动态数量的缓存队列,包括: 当所述消息所涉及的优先级的数量大于等于所述优先级的数量阈值时,建立第一数量的缓存队列;及 当所述消息所涉及的优先级的数量小于所述优先级的数量阈值时,建立第二数量的缓存队列。 根据权利要求1所述的方法,其特征在于,所述从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中,包括: 当从所述缓存队列中提取的消息全部被调度到对应的调度队列时, 通过轮询提取的方式,从所述缓存队列中提取消息到所述统一缓存队列中。 根据权利要求9所述的方法,其特征在于,所述通过轮询提取的方式,从所述缓存队列中提取消息到所述统一缓存队列中,包括: 对所述缓存队列的优先级进行降序排列;及 按照所述降序排列的结果,通过轮询提取所述缓存队列的方式,从所述缓存队列中提取消息到所述统一缓存队列中。 根据权利要求1所述的方法,其特征在于,所述将所述统一缓存队列中的消息调度到对应的调度队列中,包括以下步骤中的至少一种: 根据统一缓存队列中消息的优先级标识,分发到实时或非实时调度队列中; 根据所述统一缓存队列中的消息的优先级,确定所述消息的实时或非实时的调度属性, 根据所述消息的调度属性调度到实时调度队列或非实时调度队列中。 根据权利要求11所述的方法,其特征在于,所述根据所述统一缓存队列中的消息的优先级,确定所述消息的实时或非实时的调度属性,包括: 当所述统一缓存队列中的消息的优先级,高于优先级阈值时,确定所述消息的实时的调度属性;及 当所述统一缓存队列中的消息的优先级,不高于所述优先级阈值时,确定所述消息的非实时的调度属性。 根据权利要求1所述的方法,其特征在于,所述通过与所述调度队列对应的发送通道向终端发送所述消息,包括以下步骤中的至少一种: 当所述调度队列为实时调度队列时,将所述调度队列中的消息通过预留通道发送,所述预留通道用于即时发送所述实时调度队列中的消息;及 当所述调度队列为非实时调度队列时,将所述非调度队列中的消息根据优先级通过通用通道顺序发送。 一种消息管理设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行以下步骤: 建立缓存队列,数量至少为两个; 根据所接收的消息的优先级,将所接收的消息存储到对应的缓存队列中; 从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中; 将所述统一缓存队列中的消息调度到对应的调度队列中;及 通过与所述调度队列对应的发送通道向终端发送所述消息。 根据权利要求14所述的消息管理设备,其特征在于,所述建立缓存队列,包括: 建立固定数量的缓存队列;所建立的缓存队列用于接收、并存储所述缓存队列所对应优先级的消息。 根据权利要求14所述的消息管理设备,其特征在于,所述建立缓存队列,包括: 建立静态数量的缓存队列,所述静态数量与初始化的消息涉及的全部优先级的数量相应。 根据权利要求16所述的消息管理设备,其特征在于,所述静态数量 与初始化的消息涉及的全部优先级的数量相应,包括: 所述静态数量与全部优先级呈正相关的数量关系,所述全部优先级涉及所初始化的消息的涉及的优先级。 根据权利要求14所述的消息管理设备,其特征在于,所述建立缓存队列,包括: 获取所接收的消息所涉及的优先级;及 根据所接收的消息所涉及的优先级建立动态数量的缓存队列。 根据权利要求18所述的消息管理设备,其特征在于,所述根据所接收的消息所涉及的优先级建立动态数量的缓存队列,包括 根据所接收的消息所涉及的优先级,建立与所涉及的优先级相应数量的缓存队列。 根据权利要求18所述的消息管理设备,其特征在于,所述根据所接收的消息所涉及的优先级建立动态数量的缓存队列,包括: 将所接收的消息所涉及的优先级的数量,与优先级的数量阈值进行匹配,根据匹配结果,建立动态数量的缓存队列,其中包括至少一个缓存队列用于存储所述消息中的固定优先级的消息。 根据权利要求20所述的消息管理设备,其特征在于,所述根据匹配结果,建立动态数量的缓存队列,包括: 当所述消息所涉及的优先级的数量大于等于所述优先级的数量阈值时,建立第一数量的缓存队列;及 当所述消息所涉及的优先级的数量小于所述优先级的数量阈值时,建立第二数量的缓存队列。 根据权利要求14所述的消息管理设备,其特征在于,所述从所述缓存队列中提取消息,将所提取的消息存储到统一缓存队列中,包括: 当从所述缓存队列中提取的消息全部被调度到对应的调度队列时, 通过轮询提取的方式,从所述缓存队列中提取消息到所述统一缓存队列中。 根据权利要求22所述的消息管理设备,其特征在于,所述通过轮询提取的方式,从所述缓存队列中提取消息到所述统一缓存队列中,包括: 对所述缓存队列的优先级进行降序排列;及 按照所述降序排列的结果,通过轮询提取所述缓存队列的方式,从所述缓存队列中提取消息到所述统一缓存队列中。 根据权利要求14所述的消息管理设备,其特征在于,所述将所述统一缓存队列中的消息调度到对应的调度队列中,包括以下步骤中的至少一种: 根据统一缓存队列中消息的优先级标识,分发到实时或非实时调度队列中; 根据所述统一缓存队列中的消息的优先级,确定所述消息的实时或非实时的调度属性, 根据所述消息的调度属性调度到实时调度队列或非实时调度队列中。 根据权利要求24所述的消息管理设备,其特征在于,所述根据所述统一缓存队列中的消息的优先级,确定所述消息的实时或非实时的调度属性,包括: 当所述统一缓存队列中的消息的优先级,高于优先级阈值时,确定所述消息的实时的调度属性;及 当所述统一缓存队列中的消息的优先级,不高于所述优先级阈值时,确定所述消息的非实时的调度属性。 根据权利要求14所述的消息管理设备,其特征在于,所述通过与所述调度队列对应的发送通道向终端发送所述消息,包括以下步骤中的至少一种: 当所述调度队列为实时调度队列时,将所述调度队列中的消息通过预留通道发送,所述预留通道用于即时发送所述实时调度队列中的消息;及 当所述调度队列为非实时调度队列时,将所述非调度队列中的消息根据优先级通过通用通道顺序发送。 一种存储有计算机可读指令的非易失性存储介质,所述计算机可读 指令被一个或多个处理器执行时,使得一个或多个处理器执行上述1至13中任一项所述的方法的步骤。技术领域
背景技术
附图说明
具体实施方式
1个 2个 3个 缓存 1000 1604 1863 现有技术条件 100% 80.2% 62.1% 缓存 1000 2000 2497 本申请消息管理方法 100% 100% 83.2% 1个 2个 3个 缓存 1000 1247 1641 现有技术条件 100% 63.7% 54.7% 缓存 1000 1540 2016 本申请消息管理方法 100% 77% 67.2%







