消息推送方法及装置与流程

文档序号:11156877阅读:235来源:国知局
本发明实施例涉及互联网
技术领域
,特别涉及一种消息推送方法及装置。
背景技术
:现有技术中,在一些场景中,推送服务器需要在短时间内向客户端推送大量的推送消息。此时,推送服务器很可能因为接收到大量的推送消息而导致推送服务器发生堵塞,甚至导致推送服务器宕机。技术实现要素:为了解决现有技术中存在的问题,本发明实施例提供了一种消息推送方法及装置。技术方案如下:根据本发明实施例的第一方面,提供一种消息推送方法,该方法包括:在缓存队列满足预设条件时,从缓存服务器中获取推送消息;所述缓存服务器中存储有业务服务器生成并发送的推送消息;缓存获取到的所述推送消息至所述缓存队列;推送所述缓存队列中的推送消息至客户端。可选地,所述在缓存队列满足预设条件时,从缓存服务器中获取推送消息,包括:在所述缓存队列中的推送消息减少一条时,从所述缓存服务器中获取一条推送消息;或者,在所述缓存队列中的推送消息的条数小于预设阈值时,从所述缓存服务器中获取预设条数的推送消息,所述预设条数与所述预设阈值的总和不超过所述最大容量。可选地,所述推送所述缓存队列中的推送消息至客户端,包括:通过n个进程推送所述缓存队列中的推送消息至所述客户端,n为大于等于2的整数。可选地,所述方法还包括:获取所述缓存服务器中缓存的推送消息的总量;根据所述总量分配所述n个进程。可选地,所述方法还包括:根据所述总量设置所述缓存队列的最大容量。第二方面,提供了一种消息推送装置,所述装置包括:消息获取模块,用于在缓存队列满足预设条件时,从缓存服务器中获取推送消息;所述缓存服务器中存储有业务服务器生成并发送的推送消息;缓存模块,用于缓存获取到的所述推送消息至所述缓存队列;推送模块,用于推送所述缓存队列中的推送消息至客户端。可选地,所述消息获取模块,还用于:在所述缓存队列中的推送消息减少一条时,从所述缓存服务器中获取一条推送消息;或者,在所述缓存队列中的推送消息的条数小于预设阈值时,从所述缓存服务器中获取预设条数的推送消息,所述预设条数与所述预设阈值的总和不超过所述最大容量。可选地,所述推送模块,还用于通过n个进程推送所述缓存队列中的推送消息至所述客户端,n为大于等于2的整数。可选地,所述装置还包括:总量获取模块,用于获取所述缓存服务器中缓存的推送消息的总量;分配模块,用于根据所述总量获取模块获取到的所述总量分配所述n个进程。可选地,所述装置还包括:设置模块,用于根据所述总量获取模块获取到的所述总量设置所述缓存队列的最大容量。本发明实施例提供的技术方案带来的有益效果是:通过在缓存队列满足预设条件时,从缓存服务器中获取推送消息,缓存服务器中缓存有业务服务器生成并发送的推送消息;缓存获取到的推送消息至缓存队列,并推送缓存队列中的推送消息至客户端;解决了现有技术中当推送消息的数量较大时,推送服务器可能会堵塞甚至宕机的问题;达到了即使待推送的推送消息数量较大,那么由于推送消息先在缓存服务器中缓存,而推送服务器只有在缓存队列满足预设条件时,才会从缓存服务器中获取推送消息,也即达到了可以避免推送服务器被大量推送消息冲垮进而宕机的效果。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明各个实施例提供的消息推送方法所涉及的实施环境的示意图;图2是本发明一个实施例提供的消息推送方法的流程图;图3是本发明另一实施例提供的消息推送方法的流程图;图4是本发明另一实施例提供的消息推送方法的原理框图;图5是本发明一个实施例提供的消息推送装置的示意图;图6是本发明一个实施例提供的消息推送装置的示意图;图7是本发明一个实施例提供的服务器的示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。请参考图1,其示出了本发明各个实施例所涉及的实施环境的示意图,如图1所示,该实施环境可以包括业务服务器110、缓存服务器120、推送服务器130和客户端140。业务服务器110是指为客户端140提供业务服务的服务器,该业务服务器110可以为一台服务器,也可以为由多台服务器组成的服务器集群。实际实现时,业务服务器110可以通过有线或者无线网络与缓存服务器120相连。缓存服务器120是指用于缓存消息的服务器,并且,在下述各个实施例中,缓存服务器120的存储空间的大小是根据应用场景预先分配的,该存储空间足以缓存该应用场景下的推送消息。实际实现时,该缓存服务器120可以为一台服务器,也可以为由多台服务器组成的服务器集群,并且缓存服务器120可以通过有线或者无线网络与推送服务器130相连。具体的,缓存服务器120可以为Redis(数据库)服务器。推送服务器130中设置有缓存队列,该缓存队列设置有最大容量,也即该缓存队列中可以设置有最大容量的推送消息。实际实现时,推送服务器130可以主动从缓存服务器120中获取推送消息,并缓存获取到的推送消息至缓存队列,对此并不做限定。推送服务器130可以通过有线或者无线网络与客户端140所处的终端相连。客户端140可以运行在终端上。该客户端140可以为天气预报客户端、炒股客户端或者其它类型的客户端,对此并不做限定。图1仅以客户端140有一个为例,实际实现时,客户端140还可以多个,对此并不做限定。图1只是以实施环境中包括上述几种设备来举例,实际实现时,实施环境中还可以包括更多或者更少的设备,对此并不做限定。请参考图2,其示出了本发明一个实施例提供的消息推送方法的方法流程图,本实施例以该消息推送方法用于图1所示的推送服务器中来举例说明。如图2所示,该消息推送方法可以包括:步骤201,在缓存队列满足预设条件时,从缓存服务器中获取推送消息;缓存服务器中存储有业务服务器生成并发送的推送消息。步骤202,缓存获取到的推送消息至缓存队列。步骤203,推送缓存队列中的推送消息至客户端。综上所述,本实施例提供的消息推送方法,通过在缓存队列满足预设条件时,从缓存服务器中获取推送消息,缓存服务器中缓存有业务服务器生成并发送的推送消息;缓存获取到的推送消息至缓存队列,并推送缓存队列中的推送消息至客户端;解决了现有技术中当推送消息的数量较大时,推送服务器可能会堵塞甚至宕机的问题;达到了即使待推送的推送消息数量较大,那么由于推送消息先在缓存服务器中缓存,而推送服务器只有在缓存队列满足预设条件时,才会从缓存服务器中获取推送消息,也即达到了可以避免推送服务器被大量推送消息冲垮进而宕机的效果。请参考图3,其示出了本发明一个实施例提供的消息推送方法的方法流程图,本实施例以该消息推送方法用于图1所示的推送服务器中来举例说明。如图3所示,该消息推送方法可以包括:步骤301,在缓存队列满足预设条件时,从缓存服务器中获取推送消息;缓存服务器中存储有业务服务器生成并发送的推送消息。业务服务器生成需要推送至客户端的推送消息之后,业务服务器可以发送生成的大量的推送消息至缓存服务器。相应的缓存服务器接收并缓存业务服务器发送的大量的推送消息。推送服务器可以在缓存队列满足预设条件时,从缓存服务器中获取推送消息。可选地,推送服务器可以监控缓存服务器中是否缓存有推送消息,在监控结果为缓存服务器中缓存有推送消息时,则在缓存队列满足预设条件时,从缓存服务器中获取推送消息;而在监控结果为缓存服务器中未缓存有推送消息时,则流程结束;可选地,在缓存服务器接收并缓存业务服务器发送的推送消息之后,缓存服务器还可以主动发送触发请求至推送服务器,推送服务器接收到触发请求之后,在缓存队列满足预设条件时,从缓存服务器中获取推送消息。其中,推送服务器从缓存服务器中获取推送消息的步骤可以包括如下两种实现方式:第一种,在缓存队列中的推送消息减少一条时,从缓存服务器中获取一条推送消息。推送服务器每从缓存队列中取出一条推送消息之后,推送服务器可以从缓存服务器中获取一条推送消息。具体的,推送服务器可以发送消息获取请求至缓存服务器,缓存服务器接收到消息获取请求之后返回推送消息至推送服务器,相应的,推送服务器接收缓存服务器返回的推送消息。其中,消息获取请求用于请求获取一条推送消息。第二种,在缓存队列中的推送消息的条数小于预设阈值时,从缓存服务器中获取预设条数的推送消息,预设条数与预设阈值的总和不超过最大容量。作为另一种实现方式,推送服务器还可以在缓存队列中的推送消息的条数小于预设阈值时,从缓存服务器中获取预设条数的推送消息。该预设阈值可以为推送服务器中系统默认的数值,也可以是用户自定义的数值,对此并不做限定。并且,实际实现时,若推送服务器通过多进程推送消息,则该预设阈值可以为多进程的进程数。预设条数与预设阈值的总和不超过最大容量,最大容量是预先设定的缓存队列的容量。实际实现时,预设条数可以为最大容量与缓存队列中当前已有的推送消息的条数的差值。比如,缓存队列的最大容量为50条,当前已有的推送消息的条数为5条,则预设条数即为45条,推送服务器可以从缓存服务器中获取45条推送消息。又比如,在初始状态,缓存队列中没有推送消息,则此时,推送服务器即可从缓存队列中获取50条推送消息。当然,实际实现时,推送服务器还可以在其他条件时从缓存服务器中获取推送消息,本实施例对此并不做限定。步骤302,缓存获取到的推送消息至缓存队列。在推送服务器从缓存服务器中获取到推送消息之后,推送服务器可以将获取到的推送消息缓存至缓存队列。步骤303,通过n个进程推送缓存队列中的推送消息至客户端,n为大于等于2的整数。推送服务器中可以启动n个进程,并通过n个进程推送缓存队列中的推送消息至客户端。可选地,在每个进程推送一条推送消息至客户端之后,若缓存队列中存在待发送的推送消息,则该进程可以从缓存队列中取出一条推送消息,并继续推送取出的推送消息至客户端,对此并不做限定。以缓存队列的最大容量为N,进程的个数为n为例,请参考图4,其示出了本实施例的原理图。如图4所示,推送服务器主动从缓存服务器中获取推送消息,将获取到的推送消息缓存至缓存队列,n个进程推送缓存队列中的推送消息至客户端。综上所述,本实施例提供的消息推送方法,通过在缓存队列满足预设条件时,从缓存服务器中获取推送消息,缓存服务器中缓存有业务服务器生成并发送的推送消息;缓存获取到的推送消息至缓存队列,并推送缓存队列中的推送消息至客户端;解决了现有技术中当推送消息的数量较大时,推送服务器可能会堵塞甚至宕机的问题;达到了即使待推送的推送消息数量较大,那么由于推送消息先在缓存服务器中缓存,而推送服务器只有在缓存队列满足预设条件时,才会从缓存服务器中获取推送消息,也即达到了可以避免推送服务器被大量推送消息冲垮进而宕机的效果。在上述实施例中,推送服务器还可以执行如下步骤:第一,获取缓存服务器中缓存的推送消息的总量。推送服务器可以发送总量获取请求至缓存服务器,接收该缓存服务器返回的缓存服务器中缓存的推送消息的总量。其中,总量获取请求用于请获取缓存服务器中缓存的推送消息的总量。第二,根据总量分配n个进程。推送服务器可以根据预设对应关系以及获取到的总量分配n个进程。其中,预设对应关系为n的取值与获取到的总量之间的正相关关系。比如,请结合下表,其示出了一种可能的预设对应关系,则当获取到的总量为4500条时,推送服务器可以分配15个进程。推送消息的总量进程的个数0-200052000-4000104000-6000156000-800020通过根据缓存服务器中的推送消息的总量来分配进程,使得,在待推送的推送消息的总量较多时,可以分配更多的进程来推送消息,提高了推送消息的效率的效果。此外,在根据缓存服务器中的推送消息的总量分配进程数的同时,推送服务器还可以根据获取到的总量设置缓存队列的最大容量。可选地,为了保证n个进程的正常运行,缓存队列的最大容量可以设置为进程数的m倍。其中,m为大于等于2的整数,对此并不做限定。请参考图5,其示出了本发明一个实施例提供的消息推送装置的结构示意图,如图5所示,该消息推送装置可以包括:消息获取模块510、缓存模块520和推送模块530。消息获取模块510,用于在缓存队列满足预设条件时,从缓存服务器中获取推送消息;所述缓存服务器中存储有业务服务器生成并发送的推送消息;缓存模块520,用于缓存获取到的所述推送消息至所述缓存队列;推送模块530,用于推送所述缓存队列中的推送消息至客户端。综上所述,本实施例提供的消息推送装置,通过在缓存队列满足预设条件时,从缓存服务器中获取推送消息,缓存服务器中缓存有业务服务器生成并发送的推送消息;缓存获取到的推送消息至缓存队列,并推送缓存队列中的推送消息至客户端;解决了现有技术中当推送消息的数量较大时,推送服务器可能会堵塞甚至宕机的问题;达到了即使待推送的推送消息数量较大,那么由于推送消息先在缓存服务器中缓存,而推送服务器只有在缓存队列满足预设条件时,才会从缓存服务器中获取推送消息,也即达到了可以避免推送服务器被大量推送消息冲垮进而宕机的效果。请参考图6,其示出了本发明一个实施例提供的消息推送装置的结构示意图,如图6所示,该消息推送装置可以包括:消息获取模块610、缓存模块620和推送模块630。消息获取模块610,用于在缓存队列满足预设条件时,从缓存服务器中获取推送消息;所述缓存服务器中存储有业务服务器生成并发送的推送消息;缓存模块620,用于缓存获取到的所述推送消息至所述缓存队列;推送模块630,用于推送所述缓存队列中的推送消息至客户端。可选地,所述消息获取模块610,还用于:在所述缓存队列中的推送消息减少一条时,从所述缓存服务器中获取一条推送消息;或者,在所述缓存队列中的推送消息的条数小于预设阈值时,从所述缓存服务器中获取预设条数的推送消息,所述预设条数与所述预设阈值的总和不超过所述最大容量。可选地,所述推送模块630,还用于通过n个进程推送所述缓存队列中的推送消息至所述客户端,n为大于等于2的整数。可选地,所述装置还包括:总量获取模块640,用于获取所述缓存服务器中缓存的推送消息的总量;分配模块650,用于根据所述总量获取模块640获取到的所述总量分配所述n个进程。可选地,所述装置还包括:设置模块660,用于根据所述总量获取模块640获取到的所述总量设置所述缓存队列的最大容量。综上所述,本实施例提供的消息推送装置,通过在缓存队列满足预设条件时,从缓存服务器中获取推送消息,缓存服务器中缓存有业务服务器生成并发送的推送消息;缓存获取到的推送消息至缓存队列,并推送缓存队列中的推送消息至客户端;解决了现有技术中当推送消息的数量较大时,推送服务器可能会堵塞甚至宕机的问题;达到了即使待推送的推送消息数量较大,那么由于推送消息先在缓存服务器中缓存,而推送服务器只有在缓存队列满足预设条件时,才会从缓存服务器中获取推送消息,也即达到了可以避免推送服务器被大量推送消息冲垮进而宕机的效果。通过根据缓存服务器中的推送消息的总量来分配进程,使得,在待推送的推送消息的总量较多时,可以分配更多的进程来推送消息,提高了推送消息的效率的效果。需要说明的是:上述实施例提供的消息推送装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的消息推送装置和消息推送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行上述消息推送方法。请参考图7,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的消息推送方法。具体来讲:所述服务器700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。根据本发明的各种实施例,所述服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述消息推送方法的指令。应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1