消息推送方法及装置制造方法及图纸

技术编号:16282589 阅读:32 留言:0更新日期:2017-09-23 02:04
本发明专利技术涉及通信技术领域,公开了一种消息推送方法及装置。本发明专利技术事先将针对客户端的待发送消息存储于共享内存中,推送消息时,多个进程同时从共享内存读取消息并将读取的消息发送至对应的客户端;共享内存的读取速度比数据库读取速度快,加之多个进程同时读取和发送消息,因而可以提升消息推送的效率。本发明专利技术为了提高从共享内存读取消息的速度,在往共享内存中存储消息时,已经将消息进行了分类,每个进程的每个客户端可从确定的共享内存块查询待发送的消息,这样可以缩小查找范围,避免每个客户端从所有的消息里查找所需要的消息。

Message push method and device

The invention relates to the field of communication technology, and discloses a message pushing method and a device. The invention will be sent to the client in advance of the message is stored in the shared memory, push message, multiple processes simultaneously from shared memory read messages and read messages to the corresponding client; shared memory read speed read faster than the database, coupled with multiple processes simultaneously read and send messages, so the efficiency can enhance the message push. The invention relates to a shared memory reads the message from the speed to the shared memory is stored in the message, the message has been classified, each client of each process can be ascertained from the shared memory block to send query messages, so you can narrow the search range, avoid each client from all the messages in the search required the news.

【技术实现步骤摘要】
消息推送方法及装置
本专利技术涉及通信
,特别涉及一种消息推送方法及装置。
技术介绍
消息推送技术随着移动互联网的迅速发展应运而生。消息推送技术是指,针对用户对信息的特定需求,有目的性的将信息主动推送到用户。通常采用服务器-客户机制,由服务器主动将信息推送给客户端。因此,推送技术实际上就是把信息自动送到用户面前的技术,即实现“信息找用户”。现有技术中,要实现某一时刻给所有在线用户推送彼此不同的实时消息,可以用单进程对所有用户进行遍历,通过实时计算得到针对每个用户需要发送的消息并发送,也可以事先计算好要发送给用户的消息并存储在数据库(Database)中,发送时针对每个用户从数据库中读取要发送的消息进行发送。现有的方案在性能上可以进一步提高,实时计算需要发送的消息内容,虽然可以免去存储所有用户待发送的消息内容的存储消耗,但需要耗费一定的时间,影响用户接收到消息的时效性。事先计算每个用户待发送的消息内容并存储于数据库中可以避免实时计算消息内容的时间消耗,但同时增加了从数据库读取消息内容的时间,对于用户接收消息时效性的影响取决于实时计算消息内容的时长和从数据库读取消息内容的时长。通过单进程遍历所有用户时,当用户数量很大时,遍历耗时将逐渐增大,后推送的消息达到用户的时效性越差。而终端用户对推送消息的准确性和及时性有着强烈的要求,但是现有技术中并不能实现对消息正常、及时地推送。
技术实现思路
本专利技术提供了一种消息推送方法及装置,基于共享内存及多进程技术,通过多进程同时从共享内存读取消息并推送给客户端,解决了消息推送不及时的问题,实现了高效、实时的消息推送。本专利技术为了提高从共享内存读取消息的速度,在往共享内存中存储消息时,已经将消息进行了分类,每个进程的每个客户端可从确定的共享内存块查询待发送的消息,这样可以缩小查找范围,避免每个客户端从所有的消息里查找所需要的消息。本专利技术的第一方面提供一种消息推送方法,包括:获取推送消息和客户端ID;确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;当到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。本专利技术的第二方面提供一种消息推送装置,包括:数据获取单元,用于获取推送消息和客户端ID;数据处理单元,用于确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;消息推送单元,用于在到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。本专利技术事先将针对客户端的待发送消息存储于共享内存中,推送消息时,多个进程同时从共享内存读取消息并将读取的消息发送至对应的客户端;共享内存的读取速度比数据库读取速度快,加之多个进程同时读取和发送消息,因而可以提升消息推送的效率。此外,在存储消息时,将连接同一进程的所有客户端的待发送消息存入该进程对应的共享内存块中,可以避免每个进程从所有的消息里遍历查找所需要的消息,缩小了消息查找范围,可以节省消息查找时间,实现高效的实时消息推送。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1是本专利技术实施例提供的消息推送方法及装置的示例性系统架构图;图2是本专利技术实施例提供的消息推送方法及装置的框架结构图;图3是本专利技术实施例提供的消息推送方法的流程图;图4是本专利技术实施例提供的消息推送方法的流程图;图5是本专利技术实施例提供的一种消息推送的方法的流程图;图6是本专利技术实施例提供的另一种消息推送的方法的流程图;图7是本专利技术实施例提供的消息推送装置的结构框图;图8是本专利技术实施例提供的用来实现本专利技术实施例的服务器的结构示意图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。图1是本专利技术实施例提供的消息推送方法及装置的示例性系统架构图。该该系统架构可以包括终端设备200、网络300和服务器100。网络300为用以在终端设备200和服务器100之间提供通信链路的介质。网络300可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。用户可以使用终端设备200通过网络300与服务器100交互,以接收或发送消息等。终端设备200上可以安装有各种客户端应用,例如,游戏类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。终端设备200可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携计算机和台式计算机等等。服务器100可以是提供各种服务的服务器,例如,对终端设备200上安装的应用提供云端数据支持和云端处理的服务器。云端服务器可以对对应终端的推送消息进行处理,并将推送消息反馈给终端设备。需要说明的是,本申请实施例所提供的消息推送方法可以由服务器100和终端设备200结合来执行。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。图2是本专利技术实施例提供的消息推送方法及装置的框架结构图,适用于要实现某一时刻给所有在线用户推送彼此不同的实时消息的应用场景。图中,110是共享内存,120是推送消息的多进程,130是用户客户端,每个进程上连接有多个用户客户端,共享内存被划分为多个共享内存块,每个进程配置一个共享内存块,进程上所有用户客户端的消息都存储于该进程对应的共享内存块中,这样,当需要向客户端推送消息时,各个进程在同一时间分别从各自对应的共享内存块中获取消息,然后发送给进程上的客户端,以此来节省消息推送时间,提高消息推送效率。实施例1请参见图3-5,本实施例提供一种消息推送方法。该方法包括:S301:获取推送消息和客户端ID。应用使用过程中,会涉及大量与服务器交互的消息,这些消息可以是客户端通过服务器发送给其他客户端的,例如游戏应用内各客户端之间的即时通讯,也可以是服务器根据客户端应用使用状况产生的,例如游戏应用内的名次排名。本实施例以推送服务器本文档来自技高网
...
消息推送方法及装置

【技术保护点】
一种消息推送方法,其特征在于,包括:获取推送消息和客户端ID;确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;当到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。

【技术特征摘要】
1.一种消息推送方法,其特征在于,包括:获取推送消息和客户端ID;确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中;当到达消息推送时间时,各进程同时从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端。2.根据权利要求1所述的方法,其特征在于,在所述获取推送消息和客户端ID之前,还包括:建立多个进程,每个进程连接多个客户端;获取连接在各进程上的客户端的客户端ID,建立客户端ID与该客户端ID所属进程的进程ID之间的映射关系;为每个进程分配一共享内存块;建立进程的进程ID与该进程对应的共享内存块的共享内存块ID之间的映射关系。3.根据权利要求1或2所述的方法,其特征在于,所述确定客户端ID所属进程,并将推送消息和客户端ID存入与该进程对应的共享内存块中,包括:根据客户端ID与进程ID的映射关系,查找所述客户端ID对应的进程ID;根据进程ID与共享内存块ID的映射关系,查找所述进程ID对应的共享内存块ID,将所述推送消息和客户端ID存入与该共享内存块ID对应的共享内存块中。4.根据权利要求1所述的方法,其特征在于,所述进程从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,包括:逐条读取共享内存块中的推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,直至将共享内存块中所有的推送消息都推送给相应的客户端。5.根据权利要求1所述的方法,其特征在于,所述进程从对应的共享内存块中读取推送消息,根据推送消息与客户端ID的对应关系,将推送消息发送至与所述客户端ID对应的客户端,包括:获取连接在进程上的客户端的客户端ID;从进程对应的共享内存块中读取与所述客户端ID对应的推送消息,将所述推送消息发送至与所述客户端ID对应的客户端;判断所述客户端ID是否为最后一个客户端ID,若是,结束推送消息的推送,若否,对下一个客户端进行推送消息的推送。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:如果从进程对应的共享内存块中没有读取到与所述客户端ID对应的推送消息,则判断所述客户端ID是否为最后一个客户端ID,若是,结束推送消息的推送,若否,对下...

【专利技术属性】
技术研发人员:张俊生
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1