CN107645517B - 数据推送方法及装置 - Google Patents
数据推送方法及装置 Download PDFInfo
- Publication number
- CN107645517B CN107645517B CN201610576366.2A CN201610576366A CN107645517B CN 107645517 B CN107645517 B CN 107645517B CN 201610576366 A CN201610576366 A CN 201610576366A CN 107645517 B CN107645517 B CN 107645517B
- Authority
- CN
- China
- Prior art keywords
- data
- long connection
- server
- pushing
- forwarding server
- 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
Abstract
本发明公开了一种数据推送方法及装置,属于通信领域。所述方法包括:建立与转发服务器之间的长连接;根据预设策略维护长连接,通过长连接向转发服务器推送数据,预设策略包括:重连策略和/或异常数据重置策略;解决了由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据而导致的数据丢失的问题;推送服务器通过重连策略和/或异常数据重置策略维护长连接,可以实现对长连接的连接或断开的状态进行控制,从而使长连接在推送服务器推送数据时是处于连接稳定的状态的,避免出现数据丢失的问题。
Description
技术领域
本发明实施例涉及通信领域,特别涉及一种数据推送方法及装置。
背景技术
用于为应用程序提供服务的推送服务器可以通过APNs(Apple PushNotification service,苹果推送通知服务)向IOS(Iphone OS)系统中的应用程序推送数据。
推送服务器与APNs建立有长连接,当推送服务器需要推送数据给应用程序时,通过该长连接将数据和应用程序所在终端设备的终端标识发送给APNs,由APNs根据终端标识将该数据推送给对应的终端设备,终端设备中的应用程序获取该数据。
在实现本发明实施例的过程中,发明人发现现有技术至少存在以下问题:
推送服务器与APNs建立的长连接通常会维持较长时间,推送服务器可以通过该长连接向APNs不断推送数据。然而在实际实现时,推送服务器在向APNs推送数据时,长连接可能处于断开等连接不稳定的状态,由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据的情况,导致数据的丢失。
发明内容
为了解决现有技术中推送服务器因无法控制长连接的断开的连接而导致的数据丢失的问题,本发明实施例提供了一种数据推送方法及装置。所述技术方案如下:
根据本发明实施例的第一方面,提供一种数据推送方法,该方法包括:
建立与转发服务器之间的长连接;
根据预设策略维护长连接,通过长连接向转发服务器推送数据,预设策略包括:重连策略和/或异常数据重置策略。
根据本发明实施例的第二方面,提供一种数据推送装置,该装置包括:
连接建立模块,用于建立与转发服务器之间的长连接;
处理模块,用于根据预设策略维护长连接,通过长连接向转发服务器推送数据,预设策略包括:重连策略和/或异常数据重置策略。
本发明实施例提供的技术方案带来的有益效果是:
通过推送服务器在建立与转发服务器之间的长连接后,根据重连策略和/或异常数据重置策略维护长连接,再通过长连接向转发服务器推送数据;解决了由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据而导致的数据丢失的问题;推送服务器通过重连策略和/或异常数据重置策略维护长连接,可以实现对长连接的连接或断开的状态进行控制,从而使长连接在推送服务器推送数据时是处于连接稳定的状态的,避免出现数据丢失的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明各个示例性实施例所涉及的实施环境的示意图;
图2是本发明一示例性实施例提供的数据推送方法的信息交互示意图;
图3是本发明另一示例性实施例提供的数据推送方法的信息交互示意图;
图4是本发明一示例性实施例提供的数据推送方法的流程图;
图5是本发明另一示例性实施例提供的数据推送方法的流程图;
图6是本发明另一示例性实施例提供的数据推送方法的流程图;
图7是本发明另一示例性实施例提供的数据推送方法的流程图;
图8是本发明另一示例性实施例提供的数据推送方法的推送示意图;
图9是本发明另一示例性实施例提供的数据推送方法的流程图;
图10是本发明另一示例性实施例提供的数据推送方法的流程图;
图11是本发明另一示例性实施例提供的数据推送方法的流程图;
图12是本发明另一示例性实施例提供的数据推送方法的推送示意图;
图13是本发明一示例性实施例提供的数据推送装置的框图;
图14是本发明另一示例性实施例提供的数据推送装置的框图;
图15是本发明另一示例性实施例提供的数据推送装置的框图;
图16是本发明另一示例性实施例提供的数据推送装置的框图;
图17是本发明另一示例性实施例提供的数据推送装置的框图;
图18是本发明另一示例性实施例提供的数据推送装置的框图;
图19是本发明另一示例性实施例提供的服务器的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明一示例性实施例示出的一种实施环境的示意图,该实施环境包括:推送服务器110、转发服务器120和终端设备130。
推送服务器110是用于为终端设备130中的应用程序140提供后台服务的后台服务器。实际实现时,推送服务器110可以向终端设备130中的应用程序140推送数据,不同的推送服务器用于向不同的应用程序推送数据。
实际实现时,推送服务器110可以是一台服务器,也可以是若干台服务器组成的服务器集群,或者是一个云计算服务中心。并且,推送服务器110可以通过无线网络方式或者有线网络方式与转发服务器110连接。比如:该连接可以是基于HTTP(HyperText TransferProtocol,超文本传输协议)、SSL(Secure Sockets Layer,安全套接层)协议和TCP(Transmission Control Protocol传输控制协议)等网络协议的长连接。
转发服务器120是用于接收推送服务器110推送的数据,并将数据转发给终端设备130的服务器。实际实现时,转发服务器120可以是一台服务器,也可以是若干台服务器组成的服务器集群,或者是一个云计算服务中心。并且,转发服务器120可以通过无线网络方式或者有线网络方式与终端设备130建立通信连接,该通信连接也可以为长连接。
终端设备130是诸如智能手机、平板电脑、便携式计算机和台式计算机之类的终端设备,终端设备130的操作系统可以是IOS系统、安卓系统、Windows系统或Mac OS系统等操作系统。终端设备130中安装有若干个应用程序140,图1中仅示出了终端设备130中的一个应用程序140。其中,终端设备130中的应用程序140可以为终端设备130中系统自带的应用程序,也可以为用户主动下载安装的应用程序,本实施例对此并不做限定。
在实际实现时,与转发服务器120相连的推送服务器110和终端设备130均可以有多个。比如,与转发服务器120相连的推送服务器包括推送服务器1和推送服务器2,与转发服务器120相连的终端设备包括终端设备a和终端设备b和终端设备c,则推送服务器1可以向终端设备a以及终端设备b中的应用程序1推送数据,推送服务器2可以向终端设备a、终端设备b和终端设备c中的应用程序2推送数据。
基于图1所示的实施环境,在本发明实施例中,终端设备130的操作系统为IOS系统,转发服务器120为APNs,则终端设备130在接收推送服务器110推送的数据之前,需要预先在APNs和推送服务器110中进行注册,包括如下几个步骤:
(1)、终端设备与APNs建立连接并发送终端标识至APNs。
其中,终端标识用于唯一的标识一个终端设备,终端标识可以是终端设备的序列号。
(2)、APNs根据接收到的终端标识生成终端标识对应的终端令牌,并将终端令牌返回给终端设备。
APNs将终端标识作为参数,根据预定算法生成终端令牌并存储终端标识与终端令牌之间的对应关系,不同的终端标识对应的终端令牌不相同。其中,预定算法可以是哈希算法、MD5算法(Message Digest Algorithm MD5,消息摘要算法第五版)、UUID(UniversallyUnique Identifier,通用唯一识别码)算法或其他算法,本实施例对此不作限定。
(3)、终端设备中的应用程序接收终端令牌,应用程序通过终端设备与推送服务器之间的连接向推送服务器发送该终端令牌。
推送服务器接收并存储终端令牌。
终端设备在向APNs和推送服务器进行注册时的信息交互示意图可以如图2所示。
终端设备在APNs和推送服务器中进行注册后,推送服务器可以根据终端令牌通过APNs向终端设备推送数据,包括以下几个步骤,如图3所示:
(1)、终端设备与APNs建立长连接。
当终端设备中的应用程序开启推送功能且终端设备存在网络连接时,终端设备向APNs发送连接请求,连接请求中携带有终端令牌,APNs对终端令牌进行认证,当认证成功时,与终端设备建立长连接。
APNs对终端令牌进行认证的一种方式是,查询预先存储的终端令牌中是否存在与接收到的终端令牌相同的终端令牌,若存在,则认证成功,否则认证失败,当认证失败时,流程结束。
(2)、推送服务器与APNs建立长连接。
(3)、推送服务器将待推送的数据和终端令牌发送给APNs。
(4)、APNs查询预先存储的对应关系,确定与接收到的终端令牌对应的终端标识。
(5)、APNs根据确定得到的终端标识向终端设备转发数据。
(6)、终端设备接收到推送服务器推送的数据后,传递给应用程序。
推送服务器和APNs向终端设备推送数据的信息交互示意图可以如图3所示。本发明实施例提供的数据推送方法主要用于实现成为上述步骤(2)和(3)。
图4是根据一示例性实施例示出的一种数据推送方法的流程图,本实施例以该数据推送方法应用于图1所示的实施环境中的推送服务器中进行举例说明,该方法可以包括如下几个步骤:
在步骤401中,建立与转发服务器之间的长连接。
推送服务器中预先安装有证书,该证书用于表示推送服务器具有连接转发服务器的权限,且证书与推送服务器提供推送服务的应用程序所对应。推送服务器向转发服务器发送长连接请求,长连接请求中携带有该证书,转发服务器解析长连接请求得到该证书后,与推送服务器建立长连接。可选的,推送服务器中预先安装的证书是SSL证书。
可选的,推送服务器与转发服务器之间并行地建立若干条长连接,本实施例提供的数据推送方法中所涉及的长连接可以是推送服务器与转发服务器之间的任意一条长连接。
在步骤402中,根据预设策略维护长连接,通过长连接向转发服务器推送数据。
其中,预设策略包括:重连策略和/或异常数据重置策略。
重连策略是推送服务器在检测到满足预设条件时重新建立与转发服务器之间的长连接的策略,预设条件包括当前时刻与连接有效时刻之间的时间间隔达到时间阈值、已经通过长连接推送的数据的个数达到个数阈值,以及通过长连接推送数据时的推送速率达到速率阈值中的至少一种,时间阈值、个数阈值和速率阈值都可以是系统预设值或由用户自定义。
异常数据重置策略是推送服务器在检测到待推送的数据为异常数据时,将待推送的异常数据进行重置,向转发服务器推送重置后的数据的策略。其中,重置后的数据是转发服务器能够正常接收且接收到后不会断开与推送服务器之间的长连接的数据。
综上所述,本发明实施例提供的数据推送方法,推送服务器在建立与转发服务器之间的长连接后,根据重连策略和/或异常数据重置策略维护长连接,再通过长连接向转发服务器推送数据;解决了由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据而导致的数据丢失的问题;推送服务器通过重连策略和/或异常数据重置策略维护长连接,可以实现对长连接的连接或断开的状态进行控制,从而使长连接在推送服务器推送数据时是处于连接稳定的状态的,避免出现数据丢失的问题。
可选的,基于图4所示的实施例,预设策略包括重连策略和/或异常数据重置策略,重连策略包括限时重连策略、限量重连策略和限速重连策略中的至少一种,在本实施例中,以预设策略包括重连策略,且重连策略包括限时重连策略为例进行说明,则上述步骤402包括如下几个步骤,如图5所示:
在步骤501中,确定当前时刻与连接有效时刻之间的时间间隔。
其中,连接有效时刻是最近一次通过长连接向转发服务器推送数据的时刻,或建立长连接的时刻;可选的,连接有效时刻是最近一次通过长连接向转发服务器推送数据的时刻和建立长连接的时刻中距离当前时刻较近的时刻。
比如,当前时刻为12:00,最近一次通过长连接向转发服务器推送数据的时刻为11:55,建立该长连接的时刻为11:50,则确定连接有效时刻为11:55和11:50中距离当前时刻12:00较近的时刻,即为11:55,并确定当前时刻与连接有效时刻之间的时间间隔为5分钟。
可选的,推送服务器实时地确定当前时刻与连接有效时刻之间的时间间隔。在上述示例性例子中,当前时刻为12:05时,推送服务器实时确定当前时刻与连接有效时刻之间的时间间隔为10分钟。
在步骤502中,当时间间隔达到时间阈值时,重新建立与转发服务器之间的长连接。其中,时间阈值是系统预设值或由用户自定义。
由于长时间不使用会导致推送服务器与转发服务器之间的长连接断开,此时若推送服务器再次推送数据,则会因为长连接断开而导致数据丢失。因此推送服务器在当前时刻与连接有效时刻之间的时间间隔达到时间阈值时重新建立长连接,可以有效的避免因长时间不使用而导致长连接断开引起的数据丢失的问题。
在步骤503中,通过重新建立的长连接向转发服务器推送数据。
在上述示例性的例子中,假设时间阈值为15分钟,推送服务器确定在11:50与转发服务器建立长连接,在11:55通过长连接向转发服务器推送数据,则在当前时刻为12:10时,推送服务器确定与连接有效时刻11:55的时间间隔达到15分钟,则在12:10重新建立长连接,假设重新建立长连接后,推送服务器一直没有通过重新建立的长连接向转发服务器推送数据,则在12:25时,推送服务器确定与连接有效时刻12:10的时间间隔达到15分钟,则推送服务器再次重新建立长连接。
综上所述,本发明实施例提供的数据推送方法,推送服务器在当前时刻与连接有效时刻之间的时间间隔大于时间阈值时重新建立长连接,避免了因长时间不使用而导致长连接断开引起的数据丢失的问题。
可选的,基于图4所示的实施例,在本实施例中,以预设策略包括重连策略,且重连策略包括限量重连策略为例进行说明,则上述步骤402包括如下几个步骤,如图6所示:
在步骤601中,确定已经通过长连接向转发服务器推送的数据的个数。
可选的,推送服务器实时地确定已经通过该长连接向转发服务器推送的数据的个数。推送服务器可以在建立长连接时,控制计数器从0开始计数,根据推送的数据的个数增加计数器的数值。
在步骤602中,当已经推送的数据的个数达到个数阈值时,重新建立与转发服务器之间的长连接。
其中,个数阈值是系统预设值或由用户自定义。
当推送服务器与转发服务器之间的长连接已经推送的数据过多时,容易引起长连接的不稳定而导致长连接断开,此时推送服务器若继续推送数据,则容易引起数据丢失,因此,在已经通过长连接向转发服务器推送的数据的个数达到个数阈值时,推送服务器重新建立长连接,可以有效的避免因推送数据过多造成的长连接不稳定而引起数据丢失的问题。
在步骤603中,通过重新建立的长连接向转发服务器推送数据。
当推送服务器重新建立与转发服务器之间的长连接后,推送服务器清空计数器,并重新从0开始计数,确定通过重新建立的长连接向转发服务器推送的数据的个数。
比如,假设个数阈值为5万,则推送服务器每向转发服务器推送5万个数据,就重新建立一次长连接。
综上所述,本发明实施例提供的数据推送方法,推送服务器在已经通过长连接向转发服务器推送的数据的个数大于个数阈值时重新建立长连接,避免了因推送数据过多造成的长连接不稳定而引起数据丢失的问题。
可选的,基于图4所示的实施例,在本实施例中,以预设策略包括重连策略,且重连策略包括限速重连策略为例进行说明,则上述步骤402包括如下几个步骤,如图7所示:
在步骤701中,确定通过长连接向转发服务器推送数据时的推送速率。
可选的,推送服务器实时地确定通过长连接向转发服务器推送数据时地推送速率。
在步骤702中,当推送速率达到第一速率阈值时,重新建立与转发服务器之间的长连接。
其中,第一速率阈值是系统预设值或由用户自定义。
当推送服务器通过长连接推送数据时的推送速率较高时,长连接的负荷较大,长连接容易断开,因此推送服务器在推送速率达到第一速率阈值时重新建立长连接,可以有效地避免过高的推送速率使长连接因负载过高而断开引起数据丢失的问题。
在步骤703中,降低推送速率。
推送服务器通过控制单位时间内推送的数据的个数来降低推送速率。假设第一速率阈值为8万/秒,则推送服务器可以在检测到推送速率达到8万/秒时,控制每秒推送的个数最多为8万个,当每秒需要推送的个数超过8万个时,可以将超过的数据暂存在队列中不推送或者分流给其他的分流服务器进行推送,比如可以控制每秒钟仅推送7万个数据,使推送速率下降至7万/秒。
在步骤704中,当推送速率小于第一速率阈值时,通过重新建立的长连接向转发服务器推送数据。
推送服务器重新建立与转发服务器之间的长连接后,仍然实时地确定推送速率,当确定推送速率已经下降至小于第一速率阈值时,通过重新建立地长连接继续推送数据;若推送速率仍然达到第一速率阈值,则再次重新建立与转发服务器之间的长连接并继续降低推送速率,即重新执行步骤702和步骤703。
综上所述,本发明实施例提供的数据推送方法,推送服务器在推送速率达到第一速率阈值时,重新建立长连接,并且降低推送速率,当推送速率小于第一速率阈值时才继续推送,避免了过高的推送速率使长连接因负载过高而断开引起数据丢失的问题。
系统中维护有推送服务器与转发服务器之间的长连接对应的接收缓冲区和发送缓冲区。当推送服务器通过长连接向转发服务器推送数据时,数据先进入该长连接对应的发送缓冲区等待推送,再推送给转发服务器。推送服务器通过长连接向转发服务器推送数据时的示意图可以如图8所示。
当转发服务器接收到一个异常数据时,转发服务器会断开与推送服务器之间的长连接,导致发送缓冲区中没有被转发服务器接收到的数据丢失。比如在图8中,当转发服务器接收到异常数据3时,转发服务器将长连接断开,则会导致数据4、5、6丢失。
因此,在本实施例中,可以通过将异常数据重置后再发送给转发服务器以避免长连接的频繁断开,则可选的,基于图4所示的实施例,当预设策略包括异常数据重置策略时,上述步骤402包括如下几个步骤,如图9所示:
在步骤901中,在通过长连接向转发服务器推送数据时,检测待推送的数据是否是异常数据。
其中,异常数据包括第一异常数据和/或第二异常数据,第一异常数据为从转发服务器中获取到的异常数据标识所对应的数据,或者,从转发服务器中直接获取到的数据,第二异常数据包括预先检测得到的使用频率小于预定阈值的数据和/或使用异常的数据。
其中,预定阈值是系统预设值或由用户自定义。
可选的,第一异常数据是推送服务器推送给转发服务器的,携带的终端令牌异常的数据。转发服务器在接收到推送服务器推送的数据以及终端令牌时,检测预先存储的终端令牌是否包括接收到的该终端令牌,若不包括,转发服务器确定接收到的数据为异常数据。
可选的,第一异常数据是推送服务器推送给转发服务器的,数据格式与预定格式不同的数据,预定格式由系统预设或用户自定义。推送服务器向转发服务器推送的数据具有预定格式,当转发服务器接收到的数据的格式与预定格式不同时,转发服务器确定接收到的数据为异常数据。
转发服务器可以将异常数据的异常数据标识发送给推送服务器,或者直接将异常数据发送给推送服务器。可选的,转发服务器在检测到异常数据后,将异常数据标识或异常数据发送给推送服务器,或者,转发服务器每隔预定时间间隔向推送服务器发送异常数据标识或异常数据,或者,推送服务器每隔预定时间间隔向推送服务器请求获取异常数据标识或异常数据,预定时间间隔的长度由系统预设或用户自定义,本实施例对此不作限定。
推送服务器检测自身存储的数据,获取使用频率小于预定阈值的数据;和/或,推送服务器检测数据的使用情况,获取使用异常的数据,使用异常的数据包括异常登陆时使用的数据和异常安装时使用的数据中的至少一种。
推送服务器在向转发服务器推送数据时,将待推送的数据与确定的异常数据进行匹配以检测待推送的数据是否是异常数据,若已存储的异常数据中存在与待推送的数据相同的数据,则待推送的数据为异常数据,否则,待推送的数据不是异常数据。
在步骤902中,当数据是异常数据时,将数据进行重置,并向转发服务器推送重置后的数据。
可选的,将数据进行重置包括将数据设置为预设内容的数据或者将数据内容设置为空,预设内容可由系统预设或用户自定义。重置后的数据是转发服务器能够正常接收且接收到后不会断开与推送服务器之间的长连接的数据,转发服务器在接收到重置后的数据时,可以根据该数据的内容为预设内容或空内容从而判断该数据为重置后的数据,则转发服务器不对重置后的数据进行转发。
在上述图8所示的示例性的例子中,以异常数据包括第一异常数据为例,推送服务器从转发服务器中获取第一异常数据为数据3,假设推送服务器在按照数据1-6的顺序推送数据,推送服务器在推送数据1时,判断数据1不是异常数据,则正常推送,同理,将数据2正常推送;当推送服务器推送数据3时,推送服务器确定数据3为异常数据,则推送服务器将3进行重置,转发服务器仍然正常接收重置后的数据3,而不会断开长连接,则转发服务器仍可以继续正常的接收后续的数据4、5、6。
综上所述,本发明实施例提供的数据推送方法,推送服务器将异常数据重置为转发服务器可以正常接收的数据后再进行推送,避免了异常数据造成的长连接断开而引起数据丢失的问题。
可选的,在基于图4所示的实施例的其他可选实施例中,上述实施例只是以预设策略包括重连策略和异常数据重置策略为例,可选地,预设策略还包括及时连接策略,即推送服务器在检测到长连接断开时及时地再次建立连接,则上述图4所示的实施例中的步骤402包括如下几个步骤,如图10所示:
在步骤1001中,将待推送的数据采用异步非阻塞的方式向转发服务器进行推送。
推送服务器可以通过调用send函数或其他函数将数据推送至发送缓冲区,再推送至转发服务器。当长连接出现断开和阻塞等异常时,发送缓冲区的数据无法推送至转发服务器,因此会导致发送缓冲区没有多余的空间接收推送服务器推送的数据,推送服务器在调用send函数向发送缓冲区推送数据时会出现推送失败的情况。当推送服务器采用异步非阻塞的方式推送数据时,send函数会推送数据后立刻返回响应:当send函数成功将数据推送至发送缓冲区时,返回成功相应;当send函数出现上述推送失败的情况时,返回失败响应。
在步骤1002中,当接收到失败响应时,确定长连接出现异常,则再次建立与转发服务器之间的长连接。
当推送服务器接收到失败响应后,推送服务器确定与转发服务器之间的长连接已经断开,则推送服务器建立与转发服务器之间的长连接。
在步骤1003中,通过该长连接向转发服务器推送数据。
可选的,在基于上述实施例的其他可选实施例中,推送服务器在通过长连接向转发服务器推送数据时,可能存在长连接阻塞的问题,则可选地,预设策略还包括分流策略,则该方法还包括如下几个步骤,如图11所示:
在步骤1101中,确定通过长连接向转发服务器推送数据时的推送速率。
可选的,推送服务器实时地确定通过长连接向转发服务器推送数据时地推送速率。
在步骤1102中,当推送速率小于等于第二速率阈值时,向分流服务器发送分流请求,分流服务器用于在检测到自身推送速率大于第二速率阈值时返回确认信息。
其中,第二速率阈值是系统预设值或由用户自定义,通常来说,第二速率阈值是0个/秒,或接近0个/秒的速率极小值,当推送速率小于等于第二速率阈值时,推送服务器确定长连接发生阻塞。
其中,分流服务器也与转发服务器之间建立有长连接。可选的,分流服务器还用于在检测到自身推送速率大于第二速率阈值且小于第一速率阈值时返回确认信息,第一速率阈值的含义可以参考上述图7所示的实施例。
在其他可能的实现方式中,推送服务器检测发送队列中待推送的数据的个数,当检测到待推送的数据的个数大于预定阈值时向分流服务器发送分流请求,预定阈值是系统预设值或用户自定义值。可选的,分流服务器还用于在检测到自身发送队列中待推送的数据的个数小于预定阈值时返回确认信息。
在步骤1103中,当接收到分流服务器返回的确认信息时,向分流服务器发送数据,由分流服务器向转发服务器推送数据。
推送服务器可以将所有待推送的数据都发送给分流服务器,或者,将部分数据发送给分流服务器;当存在多个分流服务器时,推送服务器向每个分流服务器发送的数据的个数也可以由推送服务器进行配置。
在步骤1104中,当推送服务器没有接收到分流服务器返回的确认信息时,流程结束。
比如,如图12所示,当深圳机房的推送服务器检测到推送速率小于第二速率阈值时,向上海机房和香港机房的分流服务器发送分流请求,假设上海机房和香港机房的分流服务器均返回确认信息,则深圳机房的推送服务器向上海机房和香港机房的分流服务器发送数据,由上海机房和香港机房的分流服务器向转发服务器推送数据。
综上所述,本发明实施例提供的数据推送方法,推送服务器在检测到长连接阻塞时,将待推送的数据发送给分流服务器,由分流服务器进行推送,解决了因长连接阻塞而导致的推送周期过长、推送数据不及时等问题,达到了提高推送效率的效果。
图13是根据一示例性实施例示出的一种数据推送装置的框图,该数据推送装置可以通过软件或硬件或两者的结合实现成为图1所示的实施环境中的推送服务器的全部或者一部分,该装置至少包括:连接建立模块1310和处理模块1320。
连接建立模块1310,用于建立与转发服务器之间的长连接。
处理模块1320,用于根据预设策略维护长连接,通过长连接向转发服务器推送数据,预设策略包括:重连策略和/或异常数据重置策略。
综上所述,本发明实施例提供的数据推送装置,推送服务器在建立与转发服务器之间的长连接后,根据重连策略和/或异常数据重置策略维护长连接,再通过长连接向转发服务器推送数据;解决了由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据而导致的数据丢失的问题;推送服务器通过重连策略和/或异常数据重置策略维护长连接,可以实现对长连接的连接或断开的状态进行控制,从而使长连接在推送服务器推送数据时是处于连接稳定的状态的,避免出现数据丢失的问题。
图14是根据一示例性实施例示出的一种数据推送装置的框图,该数据推送装置可以通过软件或硬件或两者的结合实现成为图1所示的实施环境中的推送服务器的全部或者一部分,该装置至少包括:连接建立模块1410、处理模块1420、确定模块1430、请求发送模块1440和数据发送模块1450。
连接建立模块1410,用于建立与转发服务器之间的长连接。
处理模块1420,用于根据预设策略维护长连接,通过长连接向转发服务器推送数据,预设策略包括:重连策略和/或异常数据重置策略。
确定模块1430,用于确定通过长连接向转发服务器推送数据时的推送速率。
请求发送模块1440,用于当推送速率小于等于第二速率阈值时,向分流服务器发送分流请求,分流服务器用于在检测到自身推送速率大于第二速率阈值时返回确认信息。
数据发送模块1450,用于当接收到分流服务器返回的确认信息时,向分流服务器发送数据,由分流服务器向转发服务器推送数据。
可选的,当重连策略包括限时重连策略时,处理模块1420包括以下几个单元,如图15所示:
第一确定单元1421,用于确定当前时刻与连接有效时刻之间的时间间隔,连接有效时刻是最近一次通过长连接向转发服务器推送数据的时刻,或建立长连接的时刻。
第一处理单元1422,用于当时间间隔达到时间阈值时,重新建立与转发服务器之间的长连接。
推送单元1423,用于通过重新建立的长连接向转发服务器推送数据。
可选的,当重连策略包括限量重连策略时,处理模块1420包括以下几个单元,如图16所示:
第二确定单元1424,用于确定已经通过长连接向转发服务器推送的数据的个数。
第二处理单元1425,用于当已经推送的数据的个数达到个数阈值时,重新建立与转发服务器之间的长连接。
推送单元1423,用于通过重新建立的长连接向转发服务器推送数据。
可选的,当重连策略包括限速重连策略时,处理模块1420包括以下几个单元,如图17所示:
第三确定单元1426,用于确定通过长连接向转发服务器推送数据时的推送速率。
第三处理单元1427,用于当推送速率达到第一速率阈值时,重新建立与转发服务器之间的长连接。
控制单元1428,用于降低推送速率。
推送单元1423,用于当推送速率小于第一速率阈值时,通过重新建立的长连接向转发服务器推送数据。
可选的,预定策略包括异常数据重置策略时,处理模块1420包括以下几个单元,如图18所示:
检测单元1460,用于在通过长连接向转发服务器推送数据时,检测待推送的数据是否是异常数据;异常数据包括第一异常数据和/或第二异常数据,第一异常数据为从转发服务器中获取到的异常数据标识所对应的数据,或者,从转发服务器中直接获取到的数据,第二异常数据包括预先检测得到的使用频率小于预定阈值的数据和/或使用异常的数据。
第四处理单元1470,用于当数据是异常数据时,将数据进行重置,并向转发服务器推送重置后的数据。
综上所述,本发明实施例提供的数据推送装置,推送服务器在建立与转发服务器之间的长连接后,根据重连策略和/或异常数据重置策略维护长连接,再通过长连接向转发服务器推送数据;解决了由于长连接的断开没有规律且不是由推送服务器所控制的,因此会出现长连接已经断开但推送服务器仍在推送数据而导致的数据丢失的问题;推送服务器通过重连策略和/或异常数据重置策略维护长连接,可以实现对长连接的连接或断开的状态进行控制,从而使长连接在推送服务器推送数据时是处于连接稳定的状态的,避免出现数据丢失的问题。
请参考图19,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的数据推送方法。具体来讲:
服务器1900包括中央处理单元(CPU)1901、包括随机存取存储器(RAM)1902和只读存储器(ROM)1903的系统存储器1904,以及连接系统存储器1904和中央处理单元1901的系统总线1905。服务器1900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1906,和用于存储操作系统1913、应用程序1914和其他程序模块1915的大容量存储设备1907。
基本输入/输出系统1906包括有用于显示信息的显示器1908和用于用户输入信息的诸如鼠标、键盘之类的输入设备1909。其中显示器1908和输入设备1909都通过连接到系统总线1905的输入输出控制器1910连接到中央处理单元1901。基本输入/输出系统1906还可以包括输入输出控制器1910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1910还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1907通过连接到系统总线1905的大容量存储控制器(未示出)连接到中央处理单元1901。大容量存储设备1907及其相关联的计算机可读介质为服务器1900提供非易失性存储。也就是说,大容量存储设备1907可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1904和大容量存储设备1907可以统称为存储器。
根据本发明的各种实施例,服务器1900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1900可以通过连接在系统总线1905上的网络接口单元1911连接到网络1912,或者说,也可以使用网络接口单元1911来连接到其他类型的网络或远程计算机系统(未示出)。
存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述方法的指令。
需要说明的是:上述实施例提供的数据推送装置在推送数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将推送服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据推送装置与数据推送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据推送方法,其特征在于,所述方法包括:
建立与转发服务器之间的长连接;
根据预设策略维护所述长连接,通过所述长连接向所述转发服务器推送数据,所述预设策略包括:重连策略和异常数据重置策略,所述重连策略包括限量重连策略和限速重连策略中的至少一种;
当所述预设策略包括所述异常数据重置策略时,所述根据预设策略维护所述长连接,通过所述长连接向所述转发服务器推送数据,包括:
在通过所述长连接向所述转发服务器推送所述数据时,检测待推送的所述数据是否是异常数据;所述异常数据包括第一异常数据和/或第二异常数据,所述第一异常数据为从所述转发服务器中获取到的异常数据标识所对应的数据,或者,从所述转发服务器中直接获取到的数据,所述第二异常数据包括预先检测得到的使用频率小于预定阈值的数据和/或使用异常的数据;
当所述数据是所述异常数据时,将所述数据进行重置,并向所述转发服务器推送重置后的所述数据,其中将所述数据进行重置包括将所述数据设置为预设内容的数据,或者将数据内容设置为空。
2.根据权利要求1所述的方法,其特征在于,
所述重连策略还包括限时重连策略。
3.根据权利要求2所述的方法,其特征在于,当所述重连策略包括所述限时重连策略时,所述根据预设策略维护所述长连接,根据所述长连接向所述转发服务器推送数据,包括:
确定当前时刻与连接有效时刻之间的时间间隔,所述连接有效时刻是最近一次通过所述长连接向所述转发服务器推送数据的时刻,或建立所述长连接的时刻;
当所述时间间隔达到时间阈值时,重新建立与所述转发服务器之间的所述长连接;
通过重新建立的所述长连接向所述转发服务器推送所述数据。
4.根据权利要求2所述的方法,其特征在于,当所述重连策略包括所述限量重连策略时,所述根据预设策略维护所述长连接,根据所述长连接向所述转发服务器推送数据,包括:
确定已经通过所述长连接向所述转发服务器推送的数据的个数;
当已经推送的数据的个数达到个数阈值时,重新建立与所述转发服务器之间的所述长连接;
通过重新建立的所述长连接向所述转发服务器推送所述数据。
5.根据权利要求2所述的方法,其特征在于,当所述重连策略包括限速重连策略时,所述根据预设策略维护所述长连接,根据所述长连接向所述转发服务器推送数据,包括:
确定通过所述长连接向所述转发服务器推送数据时的推送速率;
当所述推送速率达到第一速率阈值时,重新建立与所述转发服务器之间的所述长连接;
降低所述推送速率;
当所述推送速率小于所述第一速率阈值时,通过重新建立的所述长连接向所述转发服务器推送所述数据。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
确定通过所述长连接向所述转发服务器推送数据时的推送速率;
当所述推送速率小于等于第二速率阈值时,向分流服务器发送分流请求,所述分流服务器用于在检测到自身推送速率大于所述第二速率阈值时返回确认信息;
当接收到所述分流服务器返回的所述确认信息时,向所述分流服务器发送所述数据,由所述分流服务器向所述转发服务器推送所述数据。
7.一种数据推送装置,其特征在于,所述装置包括:
连接建立模块,用于建立与转发服务器之间的长连接;
处理模块,用于根据预设策略维护所述长连接,通过所述长连接向所述转发服务器推送数据,所述预设策略包括:重连策略和异常数据重置策略,所述重连策略包括限量重连策略和限速重连策略中的至少一种;
当所述预设策略包括所述异常数据重置策略时,所述根据预设策略维护所述长连接,通过所述长连接向所述转发服务器推送数据,包括:
在通过所述长连接向所述转发服务器推送所述数据时,检测待推送的所述数据是否是异常数据;所述异常数据包括第一异常数据和/或第二异常数据,所述第一异常数据为从所述转发服务器中获取到的异常数据标识所对应的数据,或者,从所述转发服务器中直接获取到的数据,所述第二异常数据包括预先检测得到的使用频率小于预定阈值的数据和/或使用异常的数据;
当所述数据是所述异常数据时,将所述数据进行重置,并向所述转发服务器推送重置后的所述数据,其中将所述数据进行重置包括将所述数据设置为预设内容的数据,或者将数据内容设置为空。
8.根据权利要求7所述的装置,其特征在于,
所述重连策略还包括限时重连策略。
9.根据权利要求8所述的装置,其特征在于,当所述重连策略包括所述限时重连策略时,所述处理模块,包括:
第一确定单元,用于确定当前时刻与连接有效时刻之间的时间间隔,所述连接有效时刻是最近一次通过所述长连接向所述转发服务器推送数据的时刻,或建立所述长连接的时刻;
第一处理单元,用于当所述时间间隔达到时间阈值时,重新建立与所述转发服务器之间的所述长连接;
推送单元,用于通过重新建立的所述长连接向所述转发服务器推送所述数据。
10.根据权利要求8所述的装置,其特征在于,当所述重连策略包括所述限量重连策略时,所述处理模块,包括:
第二确定单元,用于确定已经通过所述长连接向所述转发服务器推送的数据的个数;
第二处理单元,用于当已经推送的数据的个数达到个数阈值时,重新建立与所述转发服务器之间的所述长连接;
推送单元,用于通过重新建立的所述长连接向所述转发服务器推送所述数据。
11.根据权利要求8所述的装置,其特征在于,当所述重连策略包括限速重连策略时,所述处理模块,包括:
第三确定单元,用于确定通过所述长连接向所述转发服务器推送数据时的推送速率;
第三处理单元,用于当所述推送速率达到第一速率阈值时,重新建立与所述转发服务器之间的所述长连接;
控制单元,用于降低所述推送速率;
推送单元,用于当所述推送速率小于所述第一速率阈值时,通过重新建立的所述长连接向所述转发服务器推送所述数据。
12.根据权利要求7至11任一所述的装置,其特征在于,所述装置还包括:
确定模块,用于确定通过所述长连接向所述转发服务器推送数据时的推送速率;
请求发送模块,用于当所述推送速率小于等于第二速率阈值时,向分流服务器发送分流请求,所述分流服务器用于在检测到自身推送速率大于所述第二速率阈值时返回确认信息;
数据发送模块,用于当接收到所述分流服务器返回的所述确认信息时,向所述分流服务器发送所述数据,由所述分流服务器向所述转发服务器推送所述数据。
13.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1-6任一项所述的数据推送方法所执行的操作。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1-6任一项所述的数据推送方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576366.2A CN107645517B (zh) | 2016-07-20 | 2016-07-20 | 数据推送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610576366.2A CN107645517B (zh) | 2016-07-20 | 2016-07-20 | 数据推送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107645517A CN107645517A (zh) | 2018-01-30 |
CN107645517B true CN107645517B (zh) | 2021-04-16 |
Family
ID=61108842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610576366.2A Active CN107645517B (zh) | 2016-07-20 | 2016-07-20 | 数据推送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107645517B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616429B (zh) * | 2018-05-14 | 2019-12-13 | 平安科技(深圳)有限公司 | 一种推送服务的重连方法及设备 |
CN110445834A (zh) * | 2019-07-03 | 2019-11-12 | 福建天泉教育科技有限公司 | 一种解决推送数据丢失的方法及系统 |
CN111770051B (zh) * | 2020-05-21 | 2021-10-26 | 中清龙图计算机科技(上海)有限公司 | 一种云游戏分享方法、装置、设备及介质 |
CN111770052B (zh) * | 2020-05-21 | 2021-10-15 | 中清龙图计算机科技(上海)有限公司 | 一种云游戏支付方法、装置、设备及介质 |
CN112235399B (zh) * | 2020-10-14 | 2024-01-02 | 腾讯科技(深圳)有限公司 | 内容推送方法、装置、计算机设备及存储介质 |
CN114584613A (zh) * | 2020-11-28 | 2022-06-03 | 华为技术有限公司 | 一种推送消息的方法、消息推送系统及电子设备 |
CN116827893B (zh) * | 2023-08-29 | 2023-11-10 | 四川中电启明星信息技术有限公司 | 一种面向多级组织的实时消息推送方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101925028A (zh) * | 2009-06-16 | 2010-12-22 | 中兴通讯股份有限公司 | 一种短消息网关及其短消息异网互通处理方法 |
CN102158847A (zh) * | 2010-12-01 | 2011-08-17 | 北京迅捷英翔网络科技有限公司 | 手机与服务器之间的通讯方法及系统 |
CN104426692A (zh) * | 2013-08-26 | 2015-03-18 | 联想(北京)有限公司 | 一种信息处理方法,一种装置及网络服务器 |
CN105763365A (zh) * | 2016-01-26 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种异常处理方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211626A1 (en) * | 2004-01-12 | 2010-08-19 | Foundry Networks, Inc. | Method and apparatus for maintaining longer persistent connections |
US8627479B2 (en) * | 2010-03-01 | 2014-01-07 | Emc Corporation | System and method for network security including detection of attacks through partner websites |
US9832183B2 (en) * | 2011-04-19 | 2017-11-28 | Early Warning Services, Llc | Key management using quasi out of band authentication architecture |
CN103369005B (zh) * | 2012-03-30 | 2016-12-14 | 北京百度网讯科技有限公司 | 数据推送方法、系统及移动终端 |
CN102868759B (zh) * | 2012-09-28 | 2016-07-06 | 方正国际软件有限公司 | 服务器控制浏览器界面数据刷新的系统及其方法 |
CN102938793B (zh) * | 2012-11-29 | 2015-04-01 | 深圳中兴网信科技有限公司 | 信息推送装置和信息推送方法 |
CN103874035B (zh) * | 2012-12-13 | 2018-10-02 | 中国移动通信集团公司 | 一种移动终端消息推送方法及设备 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送系统 |
WO2015103338A1 (en) * | 2013-12-31 | 2015-07-09 | Lookout, Inc. | Cloud-based network security |
-
2016
- 2016-07-20 CN CN201610576366.2A patent/CN107645517B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101925028A (zh) * | 2009-06-16 | 2010-12-22 | 中兴通讯股份有限公司 | 一种短消息网关及其短消息异网互通处理方法 |
CN102158847A (zh) * | 2010-12-01 | 2011-08-17 | 北京迅捷英翔网络科技有限公司 | 手机与服务器之间的通讯方法及系统 |
CN104426692A (zh) * | 2013-08-26 | 2015-03-18 | 联想(北京)有限公司 | 一种信息处理方法,一种装置及网络服务器 |
CN105763365A (zh) * | 2016-01-26 | 2016-07-13 | 杭州华三通信技术有限公司 | 一种异常处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107645517A (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107645517B (zh) | 数据推送方法及装置 | |
CN107645529B (zh) | 心跳包发送方法及装置 | |
US7747723B2 (en) | Communication system and communication management method | |
KR101891365B1 (ko) | 위트니스 서비스의 제공 | |
EP2454679B1 (en) | Management of an instant message session | |
WO2021134928A1 (zh) | 基于p2p网络的数据传输方法、设备、系统、装置及介质 | |
CN106685748B (zh) | 一种心跳信息发送方法、服务器及终端 | |
WO2020199686A1 (zh) | 一种提供边缘服务的方法、系统及计算设备 | |
WO2021057666A1 (zh) | 传输控制方法、网管服务器、基站及存储介质 | |
JP2018508072A (ja) | メッセージをプッシュするための方法および装置 | |
US20190342200A1 (en) | Methods, systems, and computer readable media for multiple bidirectional forwarding detection (bfd) session optimization | |
CN107508916B (zh) | 用于智能机器人的服务器链接管理方法 | |
US9749825B2 (en) | Connection-oriented messaging and signaling in mobile heath networks | |
EP2981043A1 (en) | Method for managing portal device, and portal device and system | |
US20140201376A1 (en) | Method and system for the handling of redundant long poll | |
US11444882B2 (en) | Methods for dynamically controlling transmission control protocol push functionality and devices thereof | |
US9261948B2 (en) | Image forming apparatus and control method for executing a proxy in response to a heartbeat | |
CN113411228B (zh) | 一种网络状况的确定方法及服务器 | |
US8683045B2 (en) | Intermediate network device for host-client communication | |
CN113132758B (zh) | 内容分发网络的控制方法、装置及计算机程序产品 | |
EP3346671B1 (en) | Service processing method and equipment | |
CN112866133B (zh) | 用于获取共用最大分段大小mss的方法及装置 | |
CN113420275A (zh) | 数据连接处理方法、相关装置及计算机程序产品 | |
CN113542324A (zh) | 一种消息推送方法和装置 | |
JP2015165349A (ja) | 一次応答装置、制御方法及びコンピュータプログラム |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221125 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518133 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |