CN105306383A - 一种消息的推送方法和终端以及推送服务器 - Google Patents
一种消息的推送方法和终端以及推送服务器 Download PDFInfo
- Publication number
- CN105306383A CN105306383A CN201410256325.6A CN201410256325A CN105306383A CN 105306383 A CN105306383 A CN 105306383A CN 201410256325 A CN201410256325 A CN 201410256325A CN 105306383 A CN105306383 A CN 105306383A
- Authority
- CN
- China
- Prior art keywords
- push server
- message
- server
- push
- buffer queue
- 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
Links
Landscapes
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种消息的推送方法和终端以及推送服务器,用于提高消息的推送效率。本发明实施例提供的一种方法包括:终端获取需要推送的消息;所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;所述终端将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种消息的推送方法和终端以及推送服务器。
背景技术
苹果推送通知服务(ApplePushNotificationService,APNS)的服务器分布在国外,终端上产生的消息需要推送到APNS服务器时可以通过运营商的服务器出口到达国外的APNS服务器,由于各个运营商出国带宽的不稳定性,经常会出现整个机房的连接拥塞问题。当连接拥塞时终端产生的消息推送不出去或者推送的速率很低,导致大量消息推送不出去而滞留在本终端的缓冲区里面,通常会耗费较长的时间才能将消息推送出去,导致消息的推送效率较低。
发明内容
本发明实施例提供了一种消息的推送方法和终端以及推送服务器,用于提高消息的推送效率。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种消息的推送方法,包括:
终端获取需要推送的消息;
所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
所述终端将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
第二方面,本发明实施例还提供一种消息的推送方法,包括:
第一推送服务器接收终端发送的需要推送的消息,所述第一推送服务器为所述终端从多个推送服务器中确定出用于发送所述需要推送的消息的推送服务器;
所述第一推送服务器将所述需要推送的消息压入缓存队列中;
所述第一推送服务器将从所述缓存队列中取出的消息发送给目的服务器。
第三方面,本发明实施例提供一种终端,包括:
获取模块,用于获取需要推送的消息;
推送服务器确定模块,用于根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
发送模块,用于将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
第四方面,本发明实施例提供一种推送服务器,所述推送服务器具体为第一推送服务器,所述第一推送服务器包括:
接收模块,用于接收终端发送的需要推送的消息,所述第一推送服务器为所述终端从多个推送服务器中确定出用于发送所述需要推送的消息的推送服务器;
压入模块,用于将所述需要推送的消息压入缓存队列中;
发送模块,用于将从所述缓存队列中取出的消息发送给目的服务器。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,终端首先获取需要推送的消息,然后终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,其中,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,终端将需要推送的消息发送给确定出的第一推送服务器,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种消息的推送方法的流程方框示意图;
图2为本发明实施例提供的另一种消息的推送方法的流程方框示意图;
图3为本发明实施例提供的消息的推送方法应用的一种场景示意图;
图4-a为本发明实施例提供的一种终端的组成结构示意图;
图4-b为本发明实施例提供的一种推送服务器确定模块的组成结构示意图;
图4-c为本发明实施例提供的另一种推送服务器确定模块的组成结构示意图;
图4-d为本发明实施例提供的另一种推送服务器确定模块的组成结构示意图;
图4-e为本发明实施例提供的另一种终端的组成结构示意图;
图5-a为本发明实施例提供的一种推送服务器的组成结构示意图;
图5-b为本发明实施例提供的另一种推送服务器的组成结构示意图;
图5-c为本发明实施例提供的另一种推送服务器的组成结构示意图;
图5-d为本发明实施例提供的另一种推送服务器的组成结构示意图;
图6为本发明实施例提供的消息的推送方法应用于终端的组成结构示意图。
具体实施方式
本发明实施例提供了一种消息的推送方法和终端以及推送服务器,用于提高消息的推送效率。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、***、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
以下分别进行详细说明。
本发明消息的推送方法的一个实施例,具体可以应用于终端中,该方法可以包括如下步骤:终端获取需要推送的消息;终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,其中,终端设置有至少两个推送服务器,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器;终端将需要推送的消息发送给第一推送服务器,由第一推送服务器将需要推送的消息推送给目的服务器。
请参阅图1所示,本发明一个实施例提供的一种消息的推送方法,可以包括如下步骤:
101、终端获取需要推送的消息。
在本发明实施例中,终端首先获取到需要推送的消息,其中终端获取到的消息可以为信令,也可以为通知,还可以具体指的是多媒体数据,具体可以按照终端中加载的应用来决定,例如,终端上装载有QQ应用,用户使用终端可以获取到QQ消息,包括好友消息,群消息,讨论组消息等,例如终端上的QQ应用生成了消息之后可以存储到终端的内存之中,终端通过读取内存获取到需要推送的消息。终端获取到的消息就是后续实施例中所述的需要推送的消息,终端将获取到的消息推送到目的服务器,由目的服务器将消息再发送到目的终端,从而可以实现终端和目的终端的通信。
在本发明的一些实施例中,步骤101具体可以包括如下步骤:终端获取所有需要推送的消息。
其中,终端获取到所有需要推送的消息指的是终端通过一次获取,得到了多个消息,所有需要推送的消息具体可以指的是来自于终端上装载的同一个应用的多个消息,这些所有需要推送的消息都需要被推送到同一个目的服务器,目的服务器可以根据终端发送消息的需要确定将哪个消息推送到哪个目的终端。
102、终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器。
其中,终端设置有至少两个推送服务器,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器。
在本发明实施例中,终端为了实现与目的服务器的通信,终端选择通过推送服务器来实现消息的中转,终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,第一推送服务器用于特指终端从多个推送服务器中选择出的用于发送需要推送的消息的特定推送服务器。
需要说明的是,在本发明实施例中,终端与多个推送服务器建立有通信连接,终端设置的至少两个推送服务器都可以用于为终端推送消息,具体的,在本发明的一些应用场景中,终端设置的多个推送服务器分别为来自不同运营商的服务器,在这种场景下,终端可以使用多个不同运营商提供的消息推送服务,终端可以根据来自不同运营商的推送服务器对应的缓存队列信息确定使用哪个运营商的推送服务器来推送消息,由于各个运营商出国带宽的不稳定,经常会出现一整个机房的网络连接拥塞的问题,本发明实施例中终端可以通过各个运营商的缓存队列信息获取到哪个运营商的推送服务器出现了拥塞,以及各个运营商的推送服务器的具体拥塞程度,从而可以选择不拥塞或拥塞程度较轻的推送服务器作为第一推送服务器,用于推送消息到目的服务器。在现有技术中,当终端连接拥塞时终端产生的消息推送不出去或者推送的速率很低,导致大量消息推送不出去而滞留在本终端的缓冲区里面,通常会耗费较长的时间才能将消息推送出去,导致消息的推送效率较低。本发明实施例中,终端获取到需要推送的消息之后,终端并不是直接发送消息,而是从终端设置的多个推送服务器中根据各个推送服务器对应的缓存队列信息确定出各个推送服务器是否产生拥塞以及拥塞的程度,终端可以从不拥塞或拥塞程度较轻的推送服务器中确定出第一推送服务器,以此可以避免消息发送失败或者大量拥挤在本终端缓存区中的问题。
在本发明实施例中,终端使用推送服务器对应的缓存队列信息确定将哪个推送服务器作为第一推送服务器,终端通过缓存队列信息获知各个推送服务器的网络连接状况,从而可以选择网络通畅的推送服务器作为第一推送服务器。其中每个推送服务器都对应有一个缓存队列,缓存队列中保存的是推送服务器需要发送的消息,推送服务器实时维护自己的缓存队列,当有新的消息压入到缓存队列时,推送服务器及时更新缓存队列信息,当推送服务器成功的将消息从缓存队列中取出发送到目的服务器后,推送服务器也及时的更新缓存队列信息,另外,当缓存队列中存储时间超过存储阈值的消息被清除时,推送服务器也实时的更新缓存队列信息。具体的,在本发明的一些应用场景中,缓存队列信息可以为缓存队列的队列长度,在缓存队列中每压入一个消息,缓存队列的队列长度就会增加,当缓存队列中每删除一个消息,缓存队列的队列长度就会减少,缓存队列的队列长度可以用推送服务器中待发送的消息数量来表征,在本发明的另一些应用场景中,缓存队列信息还可以指的是缓存队列的属性参数,例如可以是缓存队列所属推送服务器发送消息采用的协议格式、帧字段的结构特征等,缓存队列信息还可以指的是缓存队列中保存消息的特定属性,例如消息的标识号的优先级排序等,具体可以结合应用场景来对缓存队列信息进行具体赋值。
在本发明的一些实施例中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体可以包括如下步骤:
A1、终端接收多个推送服务器按照上报周期定时各自上报的缓存队列信息;
A2、终端根据定时各自上报的缓存队列信息从多个推送服务器中确定出第一推送服务器。
其中,步骤A1中终端和各个推送服务器建立有连接,终端连接的多个推送服务器可以按照预先设定的上报周期定时的向终端上报自己的缓存队列信息,终端直接从各个推送服务器接收到各个推送服务器分别对应的缓存队列信息,终端对接收到的各个推送服务器分别对应的缓存队列信息进行解析,从而可以判断出各个推送服务器的网络拥塞情况。步骤A2终端从定时各自上报的缓存队列信息中判断出各个推送服务器的网络拥塞情况,基于网络拥塞情况选择网络通畅的推送服务器作为第一推送服务器。
在本发明的另一些实施例中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体可以包括如下步骤:
B1、终端接收数据统计服务器发送的多个推送服务器各自对应的缓存队列信息,数据统计服务器定时接收多个推送服务器按照上报周期各自上报的缓存队列信息;
B2、终端根据数据统计服务器发送的多个推送服务器的缓存队列信息从多个推送服务器中确定出第一推送服务器。
其中,步骤B1中终端和数据统计服务器建立有连接,数据统计服务器连接的多个推送服务器可以按照预先设定的上报周期定时的向数据统计服务器上报自己的缓存队列信息,数据统计服务器接收到多个缓存队列信息之后,数据统计服务器可以定时的将接收到的多个缓存队列信息发送给终端,终端通过数据统计服务器从各个推送服务器接收到各个推送服务器分别对应的缓存队列信息,终端对接收到的各个推送服务器分别对应的缓存队列信息进行解析,从而可以判断出各个推送服务器的网络拥塞情况,在终端和推送服务器之间还设置有数据统计服务器,数据统计服务器用于实现定时接收各个推送服务器按照上报周期上报的缓存队列信息,以减轻终端直接接收各个推送服务器发送的缓存队列信息的负荷,有利于终端的节能和休眠,步骤B2终端从数据统计服务器定时发送的缓存队列信息中判断出各个推送服务器的网络拥塞情况,基于网络拥塞情况选择网络通畅的推送服务器作为第一推送服务器。
在本发明的另一些实施例中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体可以包括如下步骤:
终端根据多个推送服务器各自上报的缓存队列的队列长度从多个推送服务器中确定队列长度最短的推送服务器为第一推送服务器。
也就是说,缓存队列信息具体可以指的是推送服务器的队列长度,即推送服务器需要定时的按照上报周期上报自己的队列长度,其中,队列长度可以用于表示各个推送服务器中待发送的消息数量,若推送服务器的队列长度越长,该推送服务器的待处理消息的数量越多,该推送服务器的负荷越大,该推送服务器和目的服务器之间的网络通道就越拥塞,相反的,若推送服务器的队列长度越短,该推送服务器的待处理消息的数量越少,该推送服务器的负荷越小,该推送服务器和目的服务器之间的网络通道就越通畅,通常为了保证消息的及时性和可靠性,终端可以选择队列长度越短的推送服务器作为第一推送服务器。终端通过各个推送服务器对应的队列长度获知各个推送服务器中待发送的消息数量,从而可以选择一个待发送消息数量最少的推送服务器作为用于发送消息的第一推送服务器。
需要说明的是,在本发明实施例中,“第一推送服务器”用于特指终端从多个推送服务器中选择出的用于发送需要推送的消息的特定推送服务器,“第一推送服务器”并不是指的某个固定不变的推送服务器,而是用于发送步骤101中终端获取到的消息的推送服务器,由于终端为选择第一推送服务器是基于各个推送服务器对应的缓存队列信息进行的,而根据前述内容的描述可知,各个推送服务器对应的缓存队列信息可能实时变化的,则针对于终端获取到的不同消息缓存队列信息可能也是不同的,终端基于这个可能实时变化的缓存队列信息确定出的第一推送服务器也可能是不同的推送服务器。
在本发明的另一些实施例中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体可以包括如下步骤:
C1、终端分别判断每个推送服务器的缓存队列的队列长度是否大于预置的第一门限值;
C2、终端从多个推送服务器中除队列长度大于第一门限值的推送服务器以外的其它推送服务器中随机挑选一个推送服务器作为第一推送服务器。
其中,终端可以设置第一门限值,终端在获取到各个推送服务器的缓存队列的队列长度之后,终端将每个推送服务器的缓存队列的队列长度与设置的第一门限值进行比较,从所有推送服务器中挑选出队列长度大于第一门限值的推送服务器,然后从剩下的推送服务器中随机的挑选一个推送服务器作为第一推送服务器,也就是说,终端可以从网络连接较为通畅的多个推送服务器中随机的挑选推送服务器用于发送消息,其中队列长度小于或者等于第一门限值的推送服务器和目的服务器之间的网络连接较为通畅,终端可以进行任意指定网络连接通畅的推送服务器作为第一推送服务器。
在本发明的一些实施例中,前述步骤101终端获取需要推送的消息,具体可以包括:终端获取所有需要推送的消息。在这种应用场景中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体包括如下步骤:
终端根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的优先级高低依次为每个需要推送的消息确定出第一推送服务器。
也就是说,终端获取到所有需要推送的消息指的是终端通过一次获取,得到了多个消息,所有需要推送的消息具体可以指的是来自于终端上装载的同一个应用的多个消息,这些所有需要推送的消息都需要被推送到同一个目的服务器,若终端一次性获取到了多个需要推送的消息,终端可以按照所有消息的优先级高低依次为每个消息确定出第一推送服务器,由于终端是根据缓存队列信息确定出第一推送服务器,可能为优先级不同的各个消息确定出的是不同的第一推送服务器。
在本发明的一些实施例中,前述步骤101终端获取需要推送的消息,具体可以包括:终端获取所有需要推送的消息。在这种应用场景中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体包括如下步骤:
终端根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息确定出第一推送服务器。
也就是说,终端获取到所有需要推送的消息指的是终端通过一次获取,得到了多个消息,所有需要推送的消息具体可以指的是来自于终端上装载的同一个应用的多个消息,这些所有需要推送的消息都需要被推送到同一个目的服务器,若终端一次性获取到了多个需要推送的消息,终端可以按照所有消息的消息类型为每个消息确定出第一推送服务器,由于终端是根据缓存队列信息确定出第一推送服务器,可能为消息类型不同的各个消息确定出的是不同的第一推送服务器,其中消息的消息类型可以指的是信令,也可以是通知,还可以具体指的是多媒体数据,基于消息类型与推送服务器的匹配关系可以为各个消息确定出用于发送消息的第一推送服务器。
103、终端将需要推送的消息发送给第一推送服务器,由第一推送服务器将需要推送的消息推送给目的服务器。
在本发明实施例中,通过步骤102终端确定出了哪个推送服务器作为第一推送服务器,在确定出第一推送服务器之后,终端可以将需要推送的消息发送给第一推送服务器,推送服务器与目的服务器之间建立有通信连接,第一推送服务器可以将从终端接收到的消息继续向目的服务器推送,以实现终端和目的服务器之间的通信。在本发明的一些应用场景中,目的服务器可以为苹果推送通知服务(ApplePushNotificationService,APNS)服务器。
在本发明的一些实施例中,前述步骤101终端获取需要推送的消息,具体可以包括:终端获取所有需要推送的消息。在这种应用场景中,步骤102终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,具体包括如下步骤:终端根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息确定出第一推送服务器。步骤103终端将所述需要推送的消息发送给第一推送服务器,具体可以包括如下步骤:
终端按照消息优先级高低依次向第一推送服务器发送需要推送的消息。
也就是说,终端获取到所有需要推送的消息指的是终端通过一次获取,得到了多个消息,所有需要推送的消息具体可以指的是来自于终端上装载的同一个应用的多个消息,这些所有需要推送的消息都需要被推送到同一个目的服务器,若终端一次性获取到了多个需要推送的消息,终端可以按照优先级高低依次向第一推送服务器发送需要推送的消息。
在这种应用场景下,终端获取所有需要推送的消息之后,本发明实施例提供的消息的推送方法还可以包括如下步骤:
终端将获取到的所有需要推送的消息存储到终端的数据存储器中。
在这种应用场景下,终端按照消息优先级高低依次向第一推送服务器发送需要推送的消息,具体可以包括如下步骤:
终端从数据存储器中按照消息优先级高低依次取出各个需要推送的消息;
终端将依次取出的各个需要推送的消息发送给第一推送服务器。
也就是说,本发明实施例中,终端中还可以设置有数据存储器,用于暂时存储终端获取到的多个消息,以防止消息的丢失,若终端获取到消息之后存储到了数据存储器中,则终端需要先从数据存储器中取出需要发送的数据再发送给第一推送服务器。
通过以上对本发明实施例的描述可知,终端首先获取需要推送的消息,然后终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,其中,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,终端将需要推送的消息发送给确定出的第一推送服务器,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
以上实施例从终端的角度对消息的推送方法进行了详细说明,接下来从推送服务器的角度来描述本发明实施例提供的消息的推送方法,其中,以本发明实施例中终端确定出的推送服务器的角度进行具体说明,本发明消息的推送方法的一个实施例,具体可以应用于第一推送服务器中,该方法可以包括如下步骤:第一推送服务器接收终端发送的需要推送的消息,第一推送服务器为终端从多个推送服务器中确定出用于发送需要推送的消息的推送服务器;第一推送服务器将需要推送的消息压入缓存队列中;第一推送服务器将从缓存队列中取出的消息发送给目的服务器。
请参阅图2所示,本发明一个实施例提供的一种消息的推送方法,可以包括如下步骤:
201、第一推送服务器接收终端发送的需要推送的消息。
其中,第一推送服务器为终端从多个推送服务器中确定出用于发送需要推送的消息的推送服务器。
在本发明实施例中,第一推送服务器从终端接收到需要推送的消息,其中第一推送服务器接收到的消息可以为信令,也可以为通知,还可以具体指的是多媒体数据,具体可以按照终端中加载的应用来决定,例如,终端上装载有QQ应用,用户使用终端可以获取到QQ消息,包括好友消息,群消息,讨论组消息等。第一推送服务器将接收到的消息推送到目的服务器,由目的服务器将消息再发送到目的终端,从而可以实现终端和目的终端的通信。
在本发明实施例中,终端确定出了哪个推送服务器作为第一推送服务器,在确定出第一推送服务器之后,终端可以将需要推送的消息发送给第一推送服务器,第一推送服务器与终端之间建立有通信连接,第一推送服务器可以将从终端接收到的消息。
在本发明的一些应用场景中,终端设置的多个推送服务器分别为来自不同运营商的服务器,第一推送服务器具体可以指的是来自某个运营商的推送服务器,例如可以使来自电信或联通或移动的推送服务器。在这种场景下,终端可以使用多个不同运营商提供的消息推送服务,终端可以根据来自不同运营商的推送服务器对应的缓存队列信息确定使用哪个运营商的推送服务器来推送消息,由于各个运营商出国带宽的不稳定,经常会出现一整个机房的网络连接拥塞的问题,本发明实施例中终端可以通过各个运营商的缓存队列信息获取到哪个运营商的推送服务器出现了拥塞,以及各个运营商的推送服务器的具体拥塞程度,从而可以选择不拥塞或拥塞程度较轻的推送服务器作为第一推送服务器,用于推送消息到目的服务器。在现有技术中,当终端连接拥塞时终端产生的消息推送不出去或者推送的速率很低,导致大量消息推送不出去而滞留在本终端的缓冲区里面,通常会耗费较长的时间才能将消息推送出去,导致消息的推送效率较低。本发明实施例中,终端获取到需要推送的消息之后,终端并不是直接发送消息,而是从终端设置的多个推送服务器中根据各个推送服务器对应的缓存队列信息确定出各个推送服务器是否产生拥塞以及拥塞的程度,终端可以从不拥塞或拥塞程度较轻的推送服务器中确定出第一推送服务器,以此可以避免消息发送失败或者大量拥挤在本终端缓存区中的问题。
在本发明的一些实施例中,本发明实施例提供的消息的推送方法还可以包括如下步骤:
第一推送服务器按照上报周期定时向终端上报自己的缓存队列信息。
其中,终端和各个推送服务器建立有连接,终端连接的多个推送服务器可以按照预先设定的上报周期定时的向终端上报自己的缓存队列信息,终端直接从各个推送服务器接收到各个推送服务器分别对应的缓存队列信息,终端对接收到的各个推送服务器分别对应的缓存队列信息进行解析,从而可以判断出各个推送服务器的网络拥塞情况。
在本发明的另一些实施例中,本发明实施例提供的消息的推送方法还可以包括如下步骤:
第一推送服务器按照上报周期定时向数据统计服务器上报自己的缓存队列信息,由数据统计服务器将接收到的缓存队列信息发送给终端。
其中,终端和数据统计服务器建立有连接,数据统计服务器连接的多个推送服务器可以按照预先设定的上报周期定时的向数据统计服务器上报自己的缓存队列信息,数据统计服务器接收到多个缓存队列信息之后,数据统计服务器可以定时的将接收到的多个缓存队列信息发送给终端,终端通过数据统计服务器从各个推送服务器接收到各个推送服务器分别对应的缓存队列信息,终端对接收到的各个推送服务器分别对应的缓存队列信息进行解析,从而可以判断出各个推送服务器的网络拥塞情况,在终端和推送服务器之间还设置有数据统计服务器,数据统计服务器用于实现定时接收各个推送服务器按照上报周期上报的缓存队列信息,以减轻终端直接接收各个推送服务器发送的缓存队列信息的负荷,有利于终端的节能和休眠,终端从数据统计服务器定时发送的缓存队列信息中判断出各个推送服务器的网络拥塞情况,基于网络拥塞情况选择网络通畅的推送服务器作为第一推送服务器。
202、第一推送服务器将需要推送的消息压入缓存队列中。
在本发明实施例中,第一推送服务器从终端接收到需要推送的消息之后,第一推送服务器将需要推送的消息压入到缓存队列中,此时终端发送的需要推送的消息作为第一推送服务器中待发送的消息保存到缓存队列中。
在本发明实施例中,每个推送服务器都对应有一个缓存队列,缓存队列中保存的是推送服务器需要发送的消息,推送服务器实时维护自己的缓存队列,当有新的消息压入到缓存队列时,推送服务器及时更新缓存队列信息,当推送服务器成功的将消息从缓存队列中取出发送到目的服务器后,推送服务器也及时的更新缓存队列信息。具体的,在本发明的一些应用场景中,缓存队列信息可以为缓存队列的队列长度,缓存队列信息具体为第一推送服务器的缓存队列的队列长度。在缓存队列中每压入一个消息,缓存队列的队列长度就会增加,当缓存队列中每删除一个消息,缓存队列的队列长度就会减少,缓存队列的队列长度可以用推送服务器中待发送的消息数量来表征,在本发明的另一些应用场景中,缓存队列信息还可以指的是缓存队列的属性参数,例如可以是缓存队列所属推送服务器发送消息采用的协议格式、帧字段的结构特征等,缓存队列信息还可以指的是缓存队列中保存消息的特定属性,例如消息的标识号的优先级排序等,具体可以结合应用场景来对缓存队列信息进行具体赋值。
203、第一推送服务器将从缓存队列中取出的消息发送给目的服务器。
在本发明实施例中,通过步骤202第一推送服务器将终端发送的需要推送的消息压入到了缓存队列中,第一推送服务器与目的服务器之间建立有通信连接,第一推送服务器可以从缓存队列中取出消息,将从终端接收到的消息继续向目的服务器推送,以实现终端和目的服务器之间的通信。在本发明的一些应用场景中,目的服务器可以为苹果推送通知服务APNS服务器。
在本发明的一些实施例中,步骤203第一推送服务器将从缓存队列中取出的消息发送给目的服务器之后,本发明实施例提供的消息的推送方法可以还包括如下步骤:
第一推送服务器将缓存队列中存储时间超过存储阈值的消息删除。
也就是说,当缓存队列中存储时间超过存储阈值的消息被清除时,推送服务器也实时的更新缓存队列信息,以保证推送服务器发送消息的效率,对于超时的无效消息进行及时删除,可以使缓存队列保持正常的运转。
通过以上对本发明实施例的描述可知,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,第一推送服务器从终端接收到需要推送的消息,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。请参阅如图3所示,图3为本发明实施例提供的消息的推送方法应用的一种场景示意图,以终端设置有三个推送服务器为例进行说明,分别是推送服务器1、推送服务器2、推送服务器3,这3个推送服务器分别来自不同运营商的服务器,其中,推送服务器1为来自联通机房的服务器,推送服务器2为来自移动机房的服务器,推送服务器3为来自电信机房的服务器,推送服务器1、推送服务器2、推送服务器3分别通过外网连接到APNS服务器。
具体执行过程如下:
S01、终端(client)获取到需要发送的消息,并根据推送服务器1、推送服务器2、推送服务器3各自对应的缓存队列大小确定出第一推送服务器,终端可以将需要推送的消息发送到后台的第一推送服务器。
S02、第一推送服务器将接收到的消息压入到缓存队列中,若终端确定出的第一推送服务器为推送服务器1,则推送服务器1会接收到终端发送的消息,并压入到自己的缓存队列中,这样终端就可以通过联通机房的推送服务器将消息发送到APNS服务器。
S03、第一推送服务器再从缓存队列里面取出消息推送到APNS服务器。
S04、每个推送服务器定时向数据统计服务器上报缓存队列的大小,从而终端可以通过数据统计服务器获取到各个推送服务器的缓存队列大小。
当外网产生拥塞时,推送服务器向APNS服务器推送消息的动作会阻塞,这个时候后台的推送服务器的缓存队列就会逐渐变大。终端根据后台推送服务器上报的缓存队列大小可以感知到外网的拥塞情况,如果发现缓存队列变大,则降低往这一台推送服务器推送消息的数量,并且当队列满的时候则不再往这一台推送服务器推送消息,以避免消息的推送失败。当某个机房的机器产生外网拥塞时,普遍的情况是一整个机房的所有机器都产生拥塞,这个时候通过这个机房的消息就不能及时推送给用户了,并且如果后台的推送服务器的缓存队列满了以后,会丢掉更多的消息,通过本发明实施例提供的消息的推送方法可以明显改善这个情况。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图4-a所示,本发明实施例提供的一种终端400,可以包括:获取模块401、推送服务器确定模块402、发送模块403,其中,
获取模块401,用于获取需要推送的消息;
推送服务器确定模块402,用于根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
发送模块403,用于将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
在本发明的一些实施例中,请参阅如图4-b所示,所述推送服务器确定模块402,包括:
第一接收子模块4021,用于接收所述多个推送服务器按照上报周期定时各自上报的缓存队列信息;
第一确定子模块4022,用于根据所述定时各自上报的缓存队列信息从所述多个推送服务器中确定出所述第一推送服务器。
在本发明的一些实施例中,请参阅如图4-c所示,所述推送服务器确定模块402,包括:
第二接收子模块4023,用于接收数据统计服务器发送的所述多个推送服务器各自对应的缓存队列信息,所述数据统计服务器定时接收所述多个推送服务器按照上报周期各自上报的缓存队列信息;
第二确定子模块4024,用于根据所述数据统计服务器发送的所述多个推送服务器的缓存队列信息从所述多个推送服务器中确定出第一推送服务器。
在本发明的一些实施例中,所述推送服务器确定模块402,具体用于根据所述多个推送服务器各自上报的缓存队列的队列长度从所述多个推送服务器中确定队列长度最短的推送服务器为所述第一推送服务器。
在本发明的一些实施例中,请参阅如图4-d所示,所述推送服务器确定模块402,包括:
判断子模块4025,用于分别判断每个推送服务器的缓存队列的队列长度是否大于预置的第一门限值;
第三确定子模块4026,用于从所述多个推送服务器中除队列长度大于所述第一门限值的推送服务器以外的其它推送服务器中随机挑选一个推送服务器作为所述第一推送服务器。
在本发明的一些实施例中,所述获取模块401,具体用于获取所有需要推送的消息;
所述推送服务器确定模块402,具体用于根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的优先级高低依次为每个需要推送的消息确定出第一推送服务器;
所述发送模块403,具体用于按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息。
在本发明的一些实施例中,请参阅如图4-e所示,相对于如图4-a所示的终端,所述终端400还包括:存储模块404,其中,
所述存储模块404,用于所述获取模块401获取所有需要推送的消息之后,将获取到的所有需要推送的消息存储到所述终端的数据存储器中;
所述发送模块403,具体用于从所述数据存储器中按照消息优先级高低依次取出各个需要推送的消息;将依次取出的各个需要推送的消息发送给所述第一推送服务器。
在本发明的一些实施例中,所述获取模块401,具体用于获取所有需要推送的消息;
所述推送服务器确定模块402,具体用于根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息分别确定出第一推送服务器。
通过以上对本发明实施例的描述可知,终端首先获取需要推送的消息,然后终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,其中,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,终端将需要推送的消息发送给确定出的第一推送服务器,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
请参阅图5-a所示,本发明实施例提供的一种推送服务器500,所述推送服务器500具体为第一推送服务器,所述第一推送服务器可以包括:接收模块501、压入模块502、发送模块503,其中,
接收模块501,用于接收终端发送的需要推送的消息,所述第一推送服务器为所述终端从多个推送服务器中确定出用于发送所述需要推送的消息的推送服务器;
压入模块502,用于将所述需要推送的消息压入缓存队列中;
发送模块503,用于将从所述缓存队列中取出的消息发送给目的服务器。
在本发明的一些实施例中,请参阅如图5-b所示,所述推送服务器500还包括:第一上报模块504,用于按照上报周期定时向所述终端上报自己的缓存队列信息。
在本发明的一些实施例中,请参阅如图5-c所示,所述推送服务器500还包括:第二上报模块505,用于按照上报周期定时向数据统计服务器上报自己的缓存队列信息,由所述数据统计服务器将接收到的缓存队列信息发送给所述终端。
在本发明的一些实施例中,所述缓存队列信息具体为所述第一推送服务器的缓存队列的队列长度。
在本发明的一些实施例中,请参阅如图5-d所示,所述推送服务器500还包括:队列维护模块506,用于所述发送模块503将从所述缓存队列中取出的消息发送给目的服务器之后,将所述缓存队列中存储时间超过存储阈值的消息删除。
通过以上对本发明实施例的描述可知,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,第一推送服务器从终端接收到需要推送的消息,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
以下主要以本发明实施例的消息的推送方法应用于终端中来举例说明,该终端可以包括智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(MovingPictureExpertsGroupAudioLayerIII,MP3)播放器、动态影像专家压缩标准音频层面4(MovingPictureExpertsGroupAudioLayerIV,MP4)播放器、膝上型便携计算机和台式计算机等等。
请参考图6,其示出了本发明实施例所涉及的终端的结构示意图,具体来讲:
终端可以包括射频(RadioFrequency,RF)电路20、包括有一个或一个以上计算机可读存储介质的存储器21、输入单元22、显示单元23、传感器24、音频电路25、无线保真(wirelessfidelity,WiFi)模块26、包括有一个或者一个以上处理核心的处理器27、以及电源28等部件。本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路20可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器27处理;另外,将涉及上行的数据发送给基站。通常,RF电路20包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LowNoiseAmplifier,LNA)、双工器等。此外,RF电路20还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(GlobalSystemofMobilecommunication,GSM)、通用分组无线服务(GeneralPacketRadioService,GPRS)、码分多址(CodeDivisionMultipleAccess,CDMA)、宽带码分多址(WidebandCodeDivisionMultipleAccess,WCDMA)、长期演进(LongTermEvolution,LTE)、电子邮件、短消息服务(ShortMessagingService,SMS)等。
存储器21可用于存储软件程序以及模块,处理器27通过运行存储在存储器21的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器21还可以包括存储器控制器,以提供处理器27和输入单元22对存储器21的访问。
输入单元22可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元22可包括触敏表面221以及其他输入设备222。触敏表面221,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面221上或在触敏表面221附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面221可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器27,并能接收处理器27发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面221。除了触敏表面221,输入单元22还可以包括其他输入设备222。具体地,其他输入设备222可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元23可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成,该显示单元23可包括前述实施例中描述的显示屏幕。显示单元23可包括显示面板231,可选的,可以采用液晶显示器(LiquidCrystalDisplay,LCD)、有机发光二极管(OrganicLight-EmittingDiode,OLED)等形式来配置显示面板231。进一步的,触敏表面221可覆盖显示面板231,当触敏表面221检测到在其上或附近的触摸操作后,传送给处理器27以确定触摸事件的类型,随后处理器27根据触摸事件的类型在显示面板231上提供相应的视觉输出。虽然在图6中,触敏表面221与显示面板231是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面221与显示面板231集成而实现输入和输出功能。
终端还可包括至少一种传感器24,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板231的亮度,接近传感器可在终端移动到耳边时,关闭显示面板231和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路25、扬声器251,传声器252可提供用户与终端之间的音频接口。音频电路25可将接收到的音频数据转换后的电信号,传输到扬声器251,由扬声器251转换为声音信号输出;另一方面,传声器252将收集的声音信号转换为电信号,由音频电路25接收后转换为音频数据,再将音频数据输出处理器27处理后,经RF电路20以发送给比如另一终端,或者将音频数据输出至存储器21以便进一步处理。音频电路25还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块26可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块26,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器27是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器21内的软件程序和/或模块,以及调用存储在存储器21内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器27可包括一个或多个处理核心;优选的,处理器27可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器27中。
终端还包括给各个部件供电的电源28(比如电池),优选的,电源可以通过电源管理***与处理器27逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源28还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端的存储器21与上述数据库类似,可以存储采样时间段、采样时间间隔、帧率统计值。
且本实施例的终端中一个或者一个以上程序存储于存储器21中,且经配置以由一个或者一个以上处理器27执行上述一个或者一个以上程序所包含的以下操作指令:
获取需要推送的消息;
根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
具体的,根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
接收所述多个推送服务器按照上报周期定时各自上报的缓存队列信息;
根据所述定时各自上报的缓存队列信息从所述多个推送服务器中确定出所述第一推送服务器。
具体的,根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
接收数据统计服务器发送的所述多个推送服务器各自对应的缓存队列信息,所述数据统计服务器定时接收所述多个推送服务器按照上报周期各自上报的缓存队列信息;
根据所述数据统计服务器发送的所述多个推送服务器的缓存队列信息从所述多个推送服务器中确定出第一推送服务器。
具体的,根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
根据所述多个推送服务器各自上报的缓存队列的队列长度从所述多个推送服务器中确定队列长度最短的推送服务器为所述第一推送服务器。
具体的,根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
分别判断每个推送服务器的缓存队列的队列长度是否大于预置的第一门限值;
从所述多个推送服务器中除队列长度大于所述第一门限值的推送服务器以外的其它推送服务器中随机挑选一个推送服务器作为所述第一推送服务器。
具体的,获取需要推送的消息,包括:
获取所有需要推送的消息;
根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的优先级高低依次为每个需要推送的消息确定出第一推送服务器;
将所述需要推送的消息发送给所述第一推送服务器,包括:
按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息。
具体的,获取所有需要推送的消息之后,还执行如下指令:
将获取到的所有需要推送的消息存储到所述终端的数据存储器中;
按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息,包括:
从所述数据存储器中按照消息优先级高低依次取出各个需要推送的消息;
将依次取出的各个需要推送的消息发送给所述第一推送服务器。
具体的,获取需要推送的消息,包括:
获取所有需要推送的消息;
根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息分别确定出第一推送服务器。
通过以上对本发明实施例的描述可知,终端首先获取需要推送的消息,然后终端根据多个推送服务器各自对应的缓存队列信息从多个推送服务器中确定出第一推送服务器,其中,第一推送服务器为终端确定的用于发送需要推送的消息的推送服务器,终端将需要推送的消息发送给确定出的第一推送服务器,由该第一推送服务器将需要推送的消息推送给目的服务器。由于终端可以根据推送服务器的缓存队列信息从多个推送服务器中选择用于发送需要推送的消息的推送服务器,故终端可以通过各个推送服务器的缓存队列信息获知各个推送服务器与外网连接的拥塞程度,终端通过缓存队列信息可以确定出能够发送消息的第一推送服务器,从而可以保证通过该第一推送服务器发送出去的消息能够被第一推送服务器顺利的推送给目的服务器,避免消息推送不出去而滞留在本终端的缓冲区里面,提高消息的推送效率。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (29)
1.一种消息的推送方法,其特征在于,包括:
终端获取需要推送的消息;
所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
所述终端将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
2.根据权利要求1所述的方法,其特征在于,所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端接收所述多个推送服务器按照上报周期定时各自上报的缓存队列信息;
所述终端根据所述定时各自上报的缓存队列信息从所述多个推送服务器中确定出所述第一推送服务器。
3.根据权利要求1所述的方法,其特征在于,所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端接收数据统计服务器发送的所述多个推送服务器各自对应的缓存队列信息,所述数据统计服务器定时接收所述多个推送服务器按照上报周期各自上报的缓存队列信息;
所述终端根据所述数据统计服务器发送的所述多个推送服务器的缓存队列信息从所述多个推送服务器中确定出第一推送服务器。
4.根据权利要求1所述的方法,其特征在于,所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端根据所述多个推送服务器各自上报的缓存队列的队列长度从所述多个推送服务器中确定队列长度最短的推送服务器为所述第一推送服务器。
5.根据权利要求1所述的方法,其特征在于,所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端分别判断每个推送服务器的缓存队列的队列长度是否大于预置的第一门限值;
所述终端从所述多个推送服务器中除队列长度大于所述第一门限值的推送服务器以外的其它推送服务器中随机挑选一个推送服务器作为所述第一推送服务器。
6.根据权利要求1所述的方法,其特征在于,所述终端获取需要推送的消息,包括:
所述终端获取所有需要推送的消息;
所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的优先级高低依次为每个需要推送的消息确定出第一推送服务器;
所述终端将所述需要推送的消息发送给所述第一推送服务器,包括:
所述终端按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息。
7.根据权利要求6所述的方法,其特征在于,所述终端获取所有需要推送的消息之后,所述方法还包括:
所述终端将获取到的所有需要推送的消息存储到所述终端的数据存储器中;
所述终端按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息,包括:
所述终端从所述数据存储器中按照消息优先级高低依次取出各个需要推送的消息;
所述终端将依次取出的各个需要推送的消息发送给所述第一推送服务器。
8.根据权利要求1所述的方法,其特征在于,所述终端获取需要推送的消息,包括:
所述终端获取所有需要推送的消息;
所述终端根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,包括:
所述终端根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息分别确定出第一推送服务器。
9.根据权利要求1所述的方法,其特征在于,所述多个推送服务器分别为来自不同运营商的服务器。
10.根据权利要求1所述的方法,其特征在于,所述目的服务器为苹果推送通知服务APNS服务器。
11.一种消息的推送方法,其特征在于,包括:
第一推送服务器接收终端发送的需要推送的消息,所述第一推送服务器为所述终端从多个推送服务器中确定出用于发送所述需要推送的消息的推送服务器;
所述第一推送服务器将所述需要推送的消息压入缓存队列中;
所述第一推送服务器将从所述缓存队列中取出的消息发送给目的服务器。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述第一推送服务器按照上报周期定时向所述终端上报自己的缓存队列信息。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述第一推送服务器按照上报周期定时向数据统计服务器上报自己的缓存队列信息,由所述数据统计服务器将接收到的缓存队列信息发送给所述终端。
14.根据权利要求11或12所述的方法,其特征在于,所述缓存队列信息具体为所述第一推送服务器的缓存队列的队列长度。
15.根据权利要求11所述的方法,其特征在于,所述第一推送服务器将从所述缓存队列中取出的消息发送给目的服务器之后,还包括:
所述第一推送服务器将所述缓存队列中存储时间超过存储阈值的消息删除。
16.根据权利要求11所述的方法,其特征在于,所述目的服务器为苹果推送通知服务APNS服务器。
17.一种终端,其特征在于,包括:
获取模块,用于获取需要推送的消息;
推送服务器确定模块,用于根据多个推送服务器各自对应的缓存队列信息从所述多个推送服务器中确定出第一推送服务器,其中,所述终端设置有至少两个推送服务器,所述第一推送服务器为所述终端确定的用于发送所述需要推送的消息的推送服务器;
发送模块,用于将所述需要推送的消息发送给所述第一推送服务器,由所述第一推送服务器将所述需要推送的消息推送给目的服务器。
18.根据权利要求17所述的终端,其特征在于,所述推送服务器确定模块,包括:
第一接收子模块,用于接收所述多个推送服务器按照上报周期定时各自上报的缓存队列信息;
第一确定子模块,用于根据所述定时各自上报的缓存队列信息从所述多个推送服务器中确定出所述第一推送服务器。
19.根据权利要求17所述的终端,其特征在于,所述推送服务器确定模块,包括:
第二接收子模块,用于接收数据统计服务器发送的所述多个推送服务器各自对应的缓存队列信息,所述数据统计服务器定时接收所述多个推送服务器按照上报周期各自上报的缓存队列信息;
第二确定子模块,用于根据所述数据统计服务器发送的所述多个推送服务器的缓存队列信息从所述多个推送服务器中确定出第一推送服务器。
20.根据权利要求17所述的终端,其特征在于,所述推送服务器确定模块,具体用于根据所述多个推送服务器各自上报的缓存队列的队列长度从所述多个推送服务器中确定队列长度最短的推送服务器为所述第一推送服务器。
21.根据权利要求17所述的终端,其特征在于,所述推送服务器确定模块,包括:
判断子模块,用于分别判断每个推送服务器的缓存队列的队列长度是否大于预置的第一门限值;
第三确定子模块,用于从所述多个推送服务器中除队列长度大于所述第一门限值的推送服务器以外的其它推送服务器中随机挑选一个推送服务器作为所述第一推送服务器。
22.根据权利要求17所述的终端,其特征在于,
所述获取模块,具体用于获取所有需要推送的消息;
所述推送服务器确定模块,具体用于根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的优先级高低依次为每个需要推送的消息确定出第一推送服务器;
所述发送模块,具体用于按照消息优先级高低依次向所述第一推送服务器发送需要推送的消息。
23.根据权利要求22所述的终端,其特征在于,所述终端还包括:存储模块,其中,
所述存储模块,用于所述获取模块获取所有需要推送的消息之后,将获取到的所有需要推送的消息存储到所述终端的数据存储器中;
所述发送模块,具体用于从所述数据存储器中按照消息优先级高低依次取出各个需要推送的消息;将依次取出的各个需要推送的消息发送给所述第一推送服务器。
24.根据权利要求17所述的终端,其特征在于,所述获取模块,具体用于获取所有需要推送的消息;
所述推送服务器确定模块,具体用于根据多个推送服务器各自对应的缓存队列信息,按照所有需要推送的消息的消息类型为每个需要推送的消息分别确定出第一推送服务器。
25.一种推送服务器,其特征在于,所述推送服务器具体为第一推送服务器,所述第一推送服务器包括:
接收模块,用于接收终端发送的需要推送的消息,所述第一推送服务器为所述终端从多个推送服务器中确定出用于发送所述需要推送的消息的推送服务器;
压入模块,用于将所述需要推送的消息压入缓存队列中;
发送模块,用于将从所述缓存队列中取出的消息发送给目的服务器。
26.根据权利要求25所述的推送服务器,其特征在于,所述推送服务器还包括:第一上报模块,用于按照上报周期定时向所述终端上报自己的缓存队列信息。
27.根据权利要求25所述的推送服务器,其特征在于,所述推送服务器还包括:第二上报模块,用于按照上报周期定时向数据统计服务器上报自己的缓存队列信息,由所述数据统计服务器将接收到的缓存队列信息发送给所述终端。
28.根据权利要求26或27所述的推送服务器,其特征在于,所述缓存队列信息具体为所述第一推送服务器的缓存队列的队列长度。
29.根据权利要求25所述的推送服务器,其特征在于,所述第一推送服务器,还包括:队列维护模块,用于所述发送模块将从所述缓存队列中取出的消息发送给目的服务器之后,将所述缓存队列中存储时间超过存储阈值的消息删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410256325.6A CN105306383B (zh) | 2014-06-10 | 2014-06-10 | 一种消息的推送方法和终端以及推送服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410256325.6A CN105306383B (zh) | 2014-06-10 | 2014-06-10 | 一种消息的推送方法和终端以及推送服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105306383A true CN105306383A (zh) | 2016-02-03 |
CN105306383B CN105306383B (zh) | 2019-11-19 |
Family
ID=55203150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410256325.6A Active CN105306383B (zh) | 2014-06-10 | 2014-06-10 | 一种消息的推送方法和终端以及推送服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105306383B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656861A (zh) * | 2016-12-15 | 2017-05-10 | 咪咕数字传媒有限公司 | 一种电子图书推送方法及装置 |
CN106936828A (zh) * | 2017-03-10 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种广播接收者队列调整方法、装置及终端 |
CN107395697A (zh) * | 2017-07-06 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 推送渠道选择、消息推送方法、装置及设备、可读介质 |
CN107749861A (zh) * | 2017-11-16 | 2018-03-02 | 平安科技(深圳)有限公司 | 信息推送方法、装置、终端设备及存储介质 |
CN107786623A (zh) * | 2016-09-20 | 2018-03-09 | 平安科技(深圳)有限公司 | 消息异步处理方法和装置 |
CN108306923A (zh) * | 2017-08-21 | 2018-07-20 | 北京潘达互娱科技有限公司 | 一种直播视频上传方法、装置、电子设备以及存储介质 |
CN108616459A (zh) * | 2016-11-30 | 2018-10-02 | 天津易遨在线科技有限公司 | 一种能够提升消息发送速度的消息队列*** |
CN108683529A (zh) * | 2018-04-26 | 2018-10-19 | 昆明俊云科技有限公司 | 数据加速传输方法及装置 |
CN109766347A (zh) * | 2017-07-21 | 2019-05-17 | 腾讯科技(深圳)有限公司 | 一种数据更新方法、装置、***、计算机设备及存储介质 |
CN112464095A (zh) * | 2020-12-01 | 2021-03-09 | Oppo(重庆)智能科技有限公司 | 消息推送方法、装置、终端及存储介质 |
CN113422808A (zh) * | 2021-05-27 | 2021-09-21 | 天翼物联科技有限公司 | 物联网平台http信息推送方法、***、装置及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223381A (zh) * | 2011-07-07 | 2011-10-19 | 莫雅静 | 一种消息推送方法、服务器、客户端及*** |
CN102571885A (zh) * | 2010-12-31 | 2012-07-11 | 上海博泰悦臻电子设备制造有限公司 | 车载信息推送服务***和方法 |
US20120295617A1 (en) * | 2011-05-18 | 2012-11-22 | Qualcomm Incorporated | Selectively extending a waiting period before an originating user equipment fails a call based on network information of one or more target user equipments |
CN103580988A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 消息接收、推送、传输的方法、装置、服务器组及*** |
US20140066063A1 (en) * | 2012-08-30 | 2014-03-06 | Samsung Electronics Co., Ltd. | Heartbeat period determination method and apparatus for push service in wireless network |
CN103685396A (zh) * | 2012-09-14 | 2014-03-26 | 北京神州泰岳软件股份有限公司 | 一种实现消息推送的方法和*** |
CN103731476A (zh) * | 2013-12-10 | 2014-04-16 | 乐视网信息技术(北京)股份有限公司 | 一种提高信息推送速度的方法和装置 |
KR20140060637A (ko) * | 2012-11-12 | 2014-05-21 | 인포뱅크 주식회사 | 부하 분산 방법, 시스템 및 장치 |
-
2014
- 2014-06-10 CN CN201410256325.6A patent/CN105306383B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571885A (zh) * | 2010-12-31 | 2012-07-11 | 上海博泰悦臻电子设备制造有限公司 | 车载信息推送服务***和方法 |
US20120295617A1 (en) * | 2011-05-18 | 2012-11-22 | Qualcomm Incorporated | Selectively extending a waiting period before an originating user equipment fails a call based on network information of one or more target user equipments |
CN102223381A (zh) * | 2011-07-07 | 2011-10-19 | 莫雅静 | 一种消息推送方法、服务器、客户端及*** |
CN103580988A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 消息接收、推送、传输的方法、装置、服务器组及*** |
US20140066063A1 (en) * | 2012-08-30 | 2014-03-06 | Samsung Electronics Co., Ltd. | Heartbeat period determination method and apparatus for push service in wireless network |
CN103685396A (zh) * | 2012-09-14 | 2014-03-26 | 北京神州泰岳软件股份有限公司 | 一种实现消息推送的方法和*** |
KR20140060637A (ko) * | 2012-11-12 | 2014-05-21 | 인포뱅크 주식회사 | 부하 분산 방법, 시스템 및 장치 |
CN103731476A (zh) * | 2013-12-10 | 2014-04-16 | 乐视网信息技术(北京)股份有限公司 | 一种提高信息推送速度的方法和装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786623A (zh) * | 2016-09-20 | 2018-03-09 | 平安科技(深圳)有限公司 | 消息异步处理方法和装置 |
CN108616459A (zh) * | 2016-11-30 | 2018-10-02 | 天津易遨在线科技有限公司 | 一种能够提升消息发送速度的消息队列*** |
CN106656861B (zh) * | 2016-12-15 | 2019-03-01 | 咪咕数字传媒有限公司 | 一种电子图书推送方法及装置 |
CN106656861A (zh) * | 2016-12-15 | 2017-05-10 | 咪咕数字传媒有限公司 | 一种电子图书推送方法及装置 |
CN106936828A (zh) * | 2017-03-10 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种广播接收者队列调整方法、装置及终端 |
CN106936828B (zh) * | 2017-03-10 | 2020-01-14 | Oppo广东移动通信有限公司 | 一种广播接收者队列调整方法、装置及终端 |
CN107395697A (zh) * | 2017-07-06 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 推送渠道选择、消息推送方法、装置及设备、可读介质 |
CN109766347A (zh) * | 2017-07-21 | 2019-05-17 | 腾讯科技(深圳)有限公司 | 一种数据更新方法、装置、***、计算机设备及存储介质 |
CN108306923A (zh) * | 2017-08-21 | 2018-07-20 | 北京潘达互娱科技有限公司 | 一种直播视频上传方法、装置、电子设备以及存储介质 |
CN107749861A (zh) * | 2017-11-16 | 2018-03-02 | 平安科技(深圳)有限公司 | 信息推送方法、装置、终端设备及存储介质 |
CN108683529A (zh) * | 2018-04-26 | 2018-10-19 | 昆明俊云科技有限公司 | 数据加速传输方法及装置 |
CN112464095A (zh) * | 2020-12-01 | 2021-03-09 | Oppo(重庆)智能科技有限公司 | 消息推送方法、装置、终端及存储介质 |
CN112464095B (zh) * | 2020-12-01 | 2024-05-14 | Oppo(重庆)智能科技有限公司 | 消息推送方法、装置、终端及存储介质 |
CN113422808A (zh) * | 2021-05-27 | 2021-09-21 | 天翼物联科技有限公司 | 物联网平台http信息推送方法、***、装置及介质 |
CN113422808B (zh) * | 2021-05-27 | 2022-06-17 | 天翼物联科技有限公司 | 物联网平台http信息推送方法、***、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105306383B (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105306383A (zh) | 一种消息的推送方法和终端以及推送服务器 | |
CN104142862B (zh) | 服务器的过载保护方法及装置 | |
CN104834529A (zh) | 一种应用的性能优化的方法及装置 | |
CN104735671A (zh) | 一种识别恶意电话的方法和装置 | |
CN103501333A (zh) | 一种下载文件的方法、装置和终端设备 | |
CN104967634A (zh) | 文件上传方法及装置 | |
CN103501482A (zh) | 网络接入方法、装置及终端 | |
CN104618222A (zh) | 一种匹配表情图像的方法及装置 | |
CN104519485A (zh) | 一种终端之间的通信方法、装置和*** | |
CN103501259A (zh) | 一种丢包检测的方法及检测装置 | |
CN104837042A (zh) | 数字多媒体数据的编码方法和装置 | |
CN103368828B (zh) | 一种消息暂存方法及*** | |
CN103177217B (zh) | 一种文件扫描方法、***及客户端和服务器 | |
CN104133757A (zh) | 一种获取内存信息的方法及终端 | |
CN103338145B (zh) | 控制语音数据传输的方法、装置及*** | |
CN105227890A (zh) | 视频通话方法和装置 | |
CN104518945A (zh) | 一种发送、接收社交网络信息的方法、装置和*** | |
CN105491135A (zh) | 建立数据连接的方法及装置 | |
CN111698719A (zh) | 测量上报控制方法及相关产品 | |
CN103312907B (zh) | 语音通道分配管理方法、语音服务器及通信*** | |
CN103200077B (zh) | 一种语音通话时数据交互的方法、装置及*** | |
CN105245432A (zh) | 未读消息计数方法、装置及终端 | |
CN103561155B (zh) | 发送短信的方法、装置及终端 | |
CN104853193A (zh) | 视频压缩方法、装置及电子设备 | |
CN105430035A (zh) | 一种上传网络数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |