CN102447631A - 一种心跳连接方法,相关装置以及*** - Google Patents
一种心跳连接方法,相关装置以及*** Download PDFInfo
- Publication number
- CN102447631A CN102447631A CN2011104486049A CN201110448604A CN102447631A CN 102447631 A CN102447631 A CN 102447631A CN 2011104486049 A CN2011104486049 A CN 2011104486049A CN 201110448604 A CN201110448604 A CN 201110448604A CN 102447631 A CN102447631 A CN 102447631A
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- terminal
- push server
- address
- load
- 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.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种心跳连接方法,相关装置以及***,用于push服务器与终端建立心跳连接时,避免push服务器负荷超载。本发明实施例方法包括:push服务器与第一终端建立心跳连接;所述push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;所述push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
Description
技术领域
本发明涉及通信领域,尤其涉及一种心跳连接方法,相关装置以及***。
背景技术
基于因特网协议(IP,Internet Protocol)的心跳消息推送机制在移动终端中的应用开始在不断的被发掘,应用前景十分广阔。基于IP的Push消息推送的基础是建立移动终端与Push服务器的长连接。由于有终端与服务器的长连接存在,通过这个连接就可以从网络侧实时地向终端推送Push消息。
由于终端与推送(Push)服务器之间的网络防火墙设置了超时时间,终端与Push服务器建立连接后,若该心跳连接的链路上在网络的超时时间内没有数据的传送,网络防火墙会更新路由表,从而删除这条心跳连接的链路。因此长期保活这条心跳连接的链路是Push消息实时推送的前提条件。这一点,是靠终端周期性的向服务器发送心跳包做到的。只要终端向push服务器发送心跳包的时间间隔(心跳值)小于或等于该心跳连接链路上的防火墙超时时间,就可以维持终端与Push服务器的心跳连接不断开。
在现有技术中,终端跟Push服务器建立连接后,终端尝试搜索该链路上网络防火墙的最短超时时间,终端根据该最短超时时间确定心跳值,并使用该心跳值向Push服务器发送心跳包。由于在终端与push服务器进行心跳连接的过程中没有考虑push服务器的负载情况,因此,push服务器会不断的与新的终端建立心跳连接,导致push服务器负荷超载。
发明内容
本发明实施例提供了一种心跳连接方法,相关装置以及***,用于push服务器与终端建立心跳连接时,避免push服务器负荷超载。
本发明提供的心跳连接方法,包括:推送push服务器与第一终端建立心跳连接;所述push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;所述push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
本发明提供的心跳连接方法,包括:终端获取需要进行心跳连接的push服务器的地址;所述终端根据所述push服务器的地址与所述push服务器建立心跳连接;所述终端根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的心跳负载,当所述心跳负载大于所述push服务器的心跳负载阈值,则所述push服务器根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
本发明提供的push服务器,包括:心跳连接单元,用于push服务器与第一终端建立心跳连接;心跳接收单元,用于接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;负载计算单元,用于push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;终端确定单元,用于若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端;负载处理单元,用于在确定所述第二终端之后,对所述第二终端执行减小心跳负载的操作。
本发明提供的终端,包括:地址获取单元,用于获取需要进行心跳连接的push服务器的地址;连接单元,用于根据所述push服务器的地址与所述push服务器建立心跳连接;心跳包发送单元,用于在建立所述心跳连接之后,根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的心跳负载,当所述心跳负载大于所述push服务器的心跳负载阈值,则所述push服务器根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
本发明提供的心跳连接***,其特征在于,包括如上所述的push服务器,如上所述的终端,以及心跳管理服务器;所述心跳管理服务器用于接收终端发送的地址查询消息,根据所述地址查询消息中携带的入网信息和位置信息查询所述终端需要进行心跳连接的push服务器的地址;向所述终端返回查询到的push服务器的地址。
从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例中的push服务器在接收到终端发送的心跳包之后,根据所述心跳包中携带的所述终端的当前心跳值计算与所述终端建立心跳连接之后的心跳负载,并判断所述心跳负载是否大于所述push服务器的心跳负载阈值,从而在所述心跳负载大于所述心跳负载阈值时,可以根据预置规则确定出需要调整的终端,对所述终端执行减小心跳负载的操作,从而确保push服务器的心跳负载在其负荷范围之内,避免了push服务器超载所造成的不利影响。
附图说明
图1是本发明实施例中心跳连接方法的一个流程示意图;
图2是本发明实施例中心跳连接方法的另一个流程示意图;
图3是本发明实施例中心跳连接方法的另一个流程示意图;
图4是本发明实施例中心跳连接方法的另一个流程示意图;
图5是本发明实施例中心跳连接方法的另一个流程示意图;
图6是本发明实施例中心跳连接方法的另一个流程示意图;
图7是本发明实施例中push服务器的逻辑结构示意图;
图8是本发明实施例中终端的逻辑结构示意图;
图9是本发明实施例中心跳连接***的逻辑结构示意图。
具体实施方式
本发明实施例提供了一种心跳连接方法,相关装置以及***,用于push服务器与终端建立心跳连接时,避免push服务器负荷超载。
请参阅图1,本发明实施例中心跳连接方法的一个实施例包括:
101、push服务器与第一终端建立心跳连接;
push服务器与第一终端建立心跳连接。具体的,在终端需要与push服务器建立心跳连接时,所述终端会向所述push服务器发送心跳连接请求,当push服务器接受了所述心跳连接请求之后,所述push服务器与所述终端的心跳连接建立成功。在实际应用中,push服务器可以为心跳服务器。
102、push服务器接收所述第一终端发送的心跳包;
push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值,所述当前心跳值为第一终端当前发送两次心跳包之间的间隔时间。
具体的,在第一终端向push服务器发送了心跳连接请求之后,若在预置时间内第一终端未收到所述push服务器返回的连接失败响应,第一终端则可以确定所述心跳连接建立成功,第一终端就可以向push服务器发送心跳包,保持与push服务器建立的心跳连接。
103、push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载。所述心跳负载为push服务器在单位时间内处理终端发送的心跳包请求总次数,如,push服务器在1s内需要处理的终端心跳包请求总数为100万次,则心跳负载为100万次/秒。在本发明实施例中,心跳负载的计算方法可以为:
其中,HeartBeat1为当前时间之前的T/2时间内已经产生的心跳总次数,HeartBeat2为当前时间之后的T/2时间内预计产生的总心跳次数,在获取到所述当前心跳值之后,可以根据之前建立连接的心跳值和所述当前心跳值估算出HeartBeat2。
在实际应用中,一台push服务器可以与多个终端建立心跳连接,所建立的心跳连接越多,push服务器所承受的心跳负载就越大,在计算所述心跳负载的算法中,所述当前心跳值越大,则所述心跳负载越小。
104、push服务器判断心跳负载是否大于push服务器的心跳负载阈值;
push服务器判断所述心跳负载是否大于所述push服务器的心跳负载阈值,若是,则触发步骤105根据预置规则确定需要进行减小心跳负载操作的第二终端;若否,则触发步骤106,保持push服务器当前的心跳连接状态不变。
在实际应用中,管理员会综合考虑push服务器的软硬件配置设置以及push服务器的其它负载情况,确定push服务器的心跳负载阈值;该心跳负载阈值具体可以为push服务器在一个小时内可以接收的最大心跳包的请求数。
105、push服务器对所述第二终端执行减小心跳负载的操作;
当push服务器确定所述心跳负载大于所述push服务器的心跳负载阈值之后,push服务器根据预置的规则确定第二终端,并对所述第二终端执行减小push服务器的心跳负载的操作。
具体的,第二终端的确定预置规则可以为以最新建立心跳连接的终端作为第二终端,也可以通过相关的参数计算确定出第二终端(详细方法在后续的实施例中描述),第二终端还可以通过其他规则进行确定,具体根据实际情况而定,此处不作限定。
减小push服务器的心跳负载的操作可以为断开与第二终端的心跳连接,也可以指示第二终端调整心跳值,使得push服务器的心跳负载减小,具体的操作内容可以根据实际情况而定,此处不作限定。
106、push服务器保持当前的心跳连接状态不变。
push服务器保持当前的心跳连接状态不变,即push服务器保持所有已经建立的心跳连接。
在本发明实施例中,第一终端指的是当前与push服务器建立心跳连接的终端,而第二终端指的是需要进行减小心跳负载操作的终端,在实际应用中,第一终端和第二终端可以为同一个终端(如,当push服务器确定最新建立心跳连接的终端为第二终端时)。
在现有技术中,由于在终端与push服务器进行心跳连接的过程中没有考虑push服务器的负载情况,因此,push服务器会不断的与新的终端建立心跳连接,导致push服务器负荷超载,进而可能出现宕机,或者出现性能下降,处理超时的问题。
本发明实施例中的push服务器在接收到终端发送的心跳包之后,根据所述心跳包中携带的所述终端的当前心跳值计算与所述终端建立心跳连接之后的心跳负载,并判断所述心跳负载是否大于所述push服务器的心跳负载阈值,从而在所述心跳负载大于所述心跳负载阈值时,可以根据预置规则确定出需要调整的终端,对所述终端执行减小心跳负载的操作,从而确保push服务器的心跳负载在其负荷范围之内,避免了push服务器超载所造成的不利影响。
在实际应用中,在push服务器收到心跳连接请求之前,可能心跳负载可能已经不适于再建立心跳连接,本发明实施例提供了相应的处理方案,请参阅图2,本发明实施例中心跳连接方法的另一个实施例包括:
201、push服务器接收第一终端发送的心跳连接请求;
push服务器接收第一终端发送的心跳连接请求。在第一终端需要与push服务器建立心跳连接时,会向所述push服务器发送心跳连接请求。
202、push服务器判断当前的状态是否适于建立心跳连接;
在接收得到心跳连接请求之后,push服务器判断当前的状态是否适于建立心跳连接,若否,则触发步骤203,向所述第一终端返回连接失败响应,使得第一终端向心跳管理服务器查询新的push服务器的地址;若是,则触发步骤204,与第一终端建立心跳连接的步骤。
具体的,push服务器可以根据当前的心跳负载判断是否适于建立心跳连接,若当前的心跳负载大于某个阈值,则当前的push服务器不适于建立心跳连接,否则,则适于建立心跳连接。
203、push服务器向所述第一终端返回连接失败响应;
在确定push服务器当前的不适于建立心跳连接之后,push服务器向所述第一终端返回连接失败响应,使得所述第一终端向心跳管理服务器查询新的push服务器的地址。
具体的,第一终端在接收到所述连接失败响应之后,可以向心跳管理服务器发送地址查询消息,该地址查询消息中携带有第一终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述第一终端建立心跳连接的push服务器的地址,从而与新的push服务器建立心跳连接。
204、push服务器与第一终端建立心跳连接;
在确定push服务器当前的适于建立心跳连接之后,push服务器与第一终端建立心跳连接。
205、push服务器接收所述第一终端发送的心跳包;
push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值,所述当前心跳值为第一终端当前发送两次心跳包之间的间隔时间。
具体的,在第一终端向push服务器发送了心跳连接请求之后,若在预置时间内第一终端未收到所述push服务器返回的连接失败响应,第一终端则可以确定所述心跳连接建立成功,第一终端就可以向push服务器发送心跳包,保持与push服务器建立的心跳连接。
206、push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载。在实际应用中,一台push服务器可以与多个终端建立心跳连接,所建立的心跳连接越多,push服务器所承受的心跳负载就越大,在计算所述心跳负载的算法中,所述当前心跳值越大,则所述心跳负载越小。
207、push服务器判断心跳负载是否大于push服务器的心跳负载阈值;
push服务器判断所述心跳负载是否大于所述push服务器的心跳负载阈值,若是,则触发步骤208根据预置规则确定需要断开连接的第二终端;若否,则触发步骤210,保持push服务器当前的心跳连接状态不变。
在实际应用中,管理员会综合考虑push服务器的软硬件配置设置以及push服务器的其它负载情况,确定push服务器的心跳负载阈值;该心跳负载阈值具体可以为push服务器在一个小时内可以接收的最大心跳包的请求数。
208、push服务器断开与所述第二终端的心跳连接;
当push服务器确定所述心跳负载大于所述push服务器的心跳负载阈值之后,push服务器根据预置的规则确定第二终端,并断开与所述第二终端的心跳连接。
具体的,第二终端的确定预置规则可以为以最新建立心跳连接的终端作为第二终端,也可以通过相关的参数计算确定出第二终端(详细方法在后续的实施例中描述),第二终端还可以通过其他规则进行确定,具体根据实际情况而定,此处不作限定。
209、push服务器向所述第二终端发送负荷超载消息;
在push服务器与所述第二终端断开心跳连接之后,push服务器向所述第二终端发送负荷超载消息,通知所述第二终端所述push服务器已经与所述第二终端断开心跳连接,使得所述第二终端向心跳管理服务器查询新的push服务器的地址。所述负荷超载消息用于通知终端,push服务器负荷超载,已经与所述终端断开心跳连接。
具体的,在第二终端接到所述push服务器发送的负荷超载消息之后,获知所述push服务器已经与本地断开心跳连接,此时,第二终端可以向心跳管理服务器发送地址查询消息,该地址查询消息中携带有第一终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述第一终端建立心跳连接的push服务器的地址,从而与新的push服务器建立心跳连接。
210、push服务器保持当前的心跳连接状态不变。
本实施例中的步骤210的内容与前述图1所示的实施例中步骤106的内容相同,此处不再赘述。
在实际应用中,push服务器可以通过计算与各个终端的匹配度来确定执行减小心跳负载操作的终端,使得终端与push服务器的连接布局更加合理,请参阅图3,本发明实施例中心跳连接方法的另一个实施例包括:
301、push服务器接收第一终端发送的心跳连接请求;
push服务器接收第一终端发送的心跳连接请求。在第一终端需要与push服务器建立心跳连接时,会向所述push服务器发送心跳连接请求。
302、push服务器判断当前的状态是否适于建立心跳连接;
在接收得到心跳连接请求之后,push服务器判断当前的状态是否适于建立心跳连接,若否,则触发步骤303,向所述第一终端返回连接失败响应,使得第一终端向心跳管理服务器查询新的push服务器的地址;若是,则触发步骤304,与第一终端建立心跳连接的步骤。
具体的,push服务器可以根据当前的心跳负载判断是否适于建立心跳连接,若当前的心跳负载大于某个阈值,则当前的push服务器不适于建立心跳连接,否则,则适于建立心跳连接。
303、push服务器向所述第一终端返回连接失败响应;
在确定push服务器当前的不适于建立心跳连接之后,push服务器向所述第一终端返回连接失败响应,使得所述第一终端向心跳管理服务器查询新的push服务器的地址。
具体的,第一终端在接收到所述连接失败响应之后,可以向心跳管理服务器发送地址查询消息,该地址查询消息中携带有第一终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述第一终端建立心跳连接的push服务器的地址,从而与新的push服务器建立心跳连接。
304、push服务器与第一终端建立心跳连接;
在确定push服务器当前的适于建立心跳连接之后,push服务器与第一终端建立心跳连接。
305、push服务器接收所述第一终端发送的心跳包;
push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值,所述当前心跳值为第一终端当前发送两次心跳包之间的间隔时间。所述心跳包中还可以携带有所述第一终端的入网信息和位置信息,该入网信息具体可以为移动国家码(MCC,Mobil Country Code)和移动网络码(MNC,Mobil Network Code)。
306、push服务器根据所述入网信息和位置信息计算第一终端与push服务器的匹配度;
在接收到所述心跳包之后,push服务器提取所述心跳包中携带的第一终端的入网信息和位置信息,并根据所述入网信息和位置信息计算第一终端与push服务器的匹配度。
匹配度为根据预设的参数和算法计算出来的终端与某一台Push服务器的匹配程度的值。预设算法的输入参数可以为终端MCC、MNC、位置信息、心跳等,输出为该终端与Push服务器的匹配度。其中,算法可以是MCC、MNC、位置信息等每一项与Push服务器的参数匹配度(预设权值)的乘积,然后累加各项参数匹配度的乘积,得到该终端与Push服务器的匹配度(类似于为没想输入参数预设权重的加权运算)。匹配度越高,说明该终端更适合与这台Push服务器维持长连接;反之,则认为该终端更不适合与这台Push服务器维持长连接,当Push服务器过载时可以优先选择将匹配度低终端转移至其他的Push服务器。
在实际应用中,push服务器可以在本地建立一种与各个终端的匹配度列表,其中,各个终端以匹配度的大小排列优先级关系,每当push服务器与一种终端建立心跳连接,即计算与该终端的匹配度,并把计算的结果更新仅该匹配度列表中。
可选的,在计算得到第一终端和push服务器的匹配度之后,push服务器可以将所述匹配度发送给心跳管理服务器。因为在实际应用中,心跳管理服务器负责统筹管理各个终端与push服务器的心跳连接,即心跳管理服务器记录了各个push服务器的配置信息;心跳管理服务器可以根据终端与各个push服务器的匹配度为终端查询其需要连接的push服务器,因此,为了减小心跳管理服务器计算匹配度时产生的负荷,push服务器可以将自身计算得到的与相应终端的匹配度发送给心跳管理服务器,从而实现匹配度计算的负荷均摊,优化了网络间的资源配置。
307、push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载。在实际应用中,一台push服务器可以与多个终端建立心跳连接,所建立的心跳连接越多,push服务器所承受的心跳负载就越大,在计算所述心跳负载的算法中,所述当前心跳值越大,则所述心跳负载越小。
在本发明实施例中,步骤306和步骤307没有严格的时序关系,即可以先执行根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载的步骤,再执行根据所述入网信息和位置信息计算第一终端与push服务器的匹配度的步骤,此处不作限定。
308、push服务器判断心跳负载是否大于push服务器的心跳负载阈值;
push服务器判断所述心跳负载是否大于所述push服务器的心跳负载阈值,若是,则触发步骤309,确定与所述push服务器的匹配度最低的终端为第二终端;若否,则触发步骤311,保持push服务器当前的心跳连接状态不变。
在实际应用中,管理员会综合考虑push服务器的软硬件配置设置以及push服务器的其它负载情况,确定push服务器的心跳负载阈值;该心跳负载阈值具体可以为push服务器在一个小时内可以接收的最大心跳包的请求数。
309、push服务器确定匹配度最低的终端为第二终端;
当push服务器确定所述心跳负载大于所述push服务器的心跳负载阈值之后,push服务器查询所述匹配度列表,将与本地push服务器的匹配度最低的终端确定为第二终端。
310、push服务器向所述第二终端发送心跳值调整消息;
push服务器向所述第二终端发送心跳值调整消息,使得所述第二终端进行心跳值的调整,并使用调整后的心跳值再次向所述push服务器发送心跳包。
具体的,由于终端的心跳值越小,对push服务器产生的心跳负载就越大,因此,所述第二终端在接到到所述心跳值调整消息之后,可以对增大所述心跳值,然后使用增大后的心跳值再次向所述push服务器发送心跳包。
push服务器收到携带有调整后心跳值的心跳包后,再次根据新的心跳值进行计算,若计算得到的心跳负载仍超过push服务器的心跳负载阈值,则push服务器继续向所述第二终端发送心跳值调整消息,直到所述第二终端将心跳值调整到所述第二终端的最优心跳值为止,若此时仍无法满足所述push服务器的心跳负载的要求,所述第二终端与所述push服务器就断开心跳连接,所述第二终端向心跳管理服务器查询新的push服务器的地址。
311、push服务器保持当前的心跳连接状态不变。
本实施例中的步骤311的内容与前述图1所示的实施例中步骤106的内容相同,此处不再赘述。
本发明实施例引入了心跳管理服务器的应用,实现了push服务器间的资源共享,在push服务器之间平衡了负载的分配,减少push服务器宕机,处理超时等问题发生的概率;并且,对于终端来说,则避免因push服务器负荷超载的原因引起终端的连接异常或请求超时的问题,减少了终端的重连次数,使得长连接更稳定,使终端的功耗减小。
上面是从push服务器的角度对本发明实施例中的心跳连接方法进行的描述,下面从终端的角度对本发明实施例中的心跳连接方法再进行描述,请参阅图4,本发明实施例中的心跳连接方法另一实施例包括:
401、终端获取需要进行心跳连接的push服务器的地址;
终端获取需要进行心跳连接的push服务器的地址。可选的,在实际应用中,为了提高终端进行心跳连接的效率,终端可以在本地存储自身的心跳状态,该心跳状态中包括有当前心跳值,push服务器的地址,最优心跳标识和位置信息,还可以包括有心跳最大值,心跳最小值等参数;终端在进行心跳连接时,若该心跳状态中存储有push服务器的地址(该push服务器为之前连接的最优的push服务器),可以将心跳状态中push服务器的地址作为需要进行心跳连接的push服务器的地址。若心跳状态中没有存储push服务器的地址,则终端可以向心跳管理服务器查询需要进行心跳连接的push服务器的地址。
402、终端根据所述push服务器的地址与所述push服务器建立心跳连接;
终端根据所述push服务器的地址与所述push服务器建立心跳连接;具体的,在终端需要与push服务器建立心跳连接时,所述终端会向所述push服务器发送心跳连接请求,若收到所述push服务器返回的连接成功响应,或在预置时间内终端未收到所述push服务器返回的连接失败响应,则终端可以确定所述心跳连接建立成功。
403、终端根据所述push服务器的地址向所述push服务器发送心跳包。
终端根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的负载情况。当前心跳值为终端当前发送两次心跳包之间的间隔时间。
具体的,所述push服务器接收到所述终端发送的心跳包之后,提取所述心跳包中携带的当前心跳值,并根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载。所述push服务器可以根据所述心跳负载判断当前所述push服务器是否处于负荷超载的状态,若是,则可以执行相应的减小小心跳负载的操作。
本发明实施例引入了心跳管理服务器的应用,实现了push服务器间的资源共享,在push服务器之间平衡了负载的分配,减少push服务器宕机,处理超时等问题发生的概率;并且,对于终端来说,则避免因push服务器负荷超载的原因引起终端的连接异常或请求超时的问题,减少了终端的重连次数。,使得长连接更稳定,使终端的功耗减小。
在实际应用中,终端还可以向push服务器提供终端本地的参数信息,使得push服务器可以通过该终端的参数信息计算与终端的匹配度,使得终端与push服务器的连接布局更加合理,请参阅图5,本发明实施例中心跳连接方法的另一个实施例包括:
501、终端判断本地是否存储有push服务器的地址;
在需要建立心跳连接时,终端判断本地的心跳状态中是否存储有push服务器的地址,若有,则触发步骤502,提取存储的push服务器的地址;若没有,则触发步骤503,则向心跳管理服务器发送地址查询消息。
502、终端提取心跳状态中存储的push服务器的地址;
终端提取心跳状态中存储的push服务器的地址,将该地址作为需要进行心跳连接的push服务器的地址。
心跳状态中存储的push服务器的地址为所述终端曾经连接的最优push服务器的地址,终端直接使用该push服务器的地址进行心跳连接可以避免再次进行最优push服务器的地址的查询,提高终端进行心跳连接的效率。
503、终端向心跳管理服务器发送地址查询消息;
终端向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述终端建立心跳连接的push服务器的地址。
在实际应用中,心跳管理服务器负责统筹管理各个终端与push服务器的心跳连接,即心跳管理服务器记录了各个push服务器的配置信息;心跳管理服务器可以根据终端与各个push服务器的匹配度为终端查询其需要连接的push服务器。
504、终端接收所述心跳管理服务器返回的push服务器的地址;
终端接收所述心跳管理服务器返回的push服务器的地址。具体的,心跳管理服务器接收到所述地址查询消息之后,可以根据所述入网信息和位置信息计算终端与各个push服务器的匹配度,再综合考虑各个push服务器的负载状态,查询合适与所述终端建立心跳连接的push服务器的地址。在心跳管理服务器查询到合适与所述终端建立心跳连接的push服务器的地址之后,向所述终端返回所述push服务器的地址。
505、终端根据所述push服务器的地址与所述push服务器建立心跳连接;
在终端获取到push服务器的地址之后,根据所述push服务器的地址向所述push服务器发送心跳连接请求,请求与所述push服务器建立心跳连接。
506、终端判断心跳连接是否成功;
在终端向所述push服务器发送心跳连接请求之后,若收到所述push服务器返回的连接成功响应,或在预置时间内终端未收到所述push服务器返回的连接失败响应,则终端可以确定所述心跳连接建立成功,并触发步骤507;若终端在预置时间内收到所述push服务器返回的连接失败响应,则终端可以确定所述心跳连接建立失败,并再次触发步骤503以及504,查询新的push服务器的地址。
507、终端向心跳连接成功的push服务器发送心跳包;
终端向心跳连接成功的push服务器发送心跳包,所述心跳包携带有当前心跳值,终端的入网信息和位置信息;使得所述push服务器可以根据所述当前心跳值计算心跳连接的负载情况,并根据所述入网信息和位置信息计算出所述终端与所述push服务器的匹配度。
可选的,在终端向所述push服务器发送心跳包之后,更新并存储所述终端的心跳状态,具体的,更新心跳状态可以包括:更新push服务器的地址、当前心跳值和终端当前的位置信息,并且,当终端确认所述当前心跳值为最优心跳值时,为所述当前心跳值添加最优心跳标识。
在实际应用中,若终端首次发起心跳连接的流程,则所述当前心跳值为本地预设的初始心跳值;若终端的心跳状态中存储有当前心跳值(前一次进行心跳连接存储下来的),则直接使用所述心跳状态中存储的当前心跳值发送心跳包,避免重复进行最优心跳值得调整。
508、终端接收所述push服务器发送的负荷超载消息;
终端接收所述push服务器发送的负荷超载消息,并触发步骤503以及504,查询新的push服务器的地址,以再次建立新的心跳连接。
具体的,若push服务器在管理心跳连接状态的过程中,确定需要断开与本地终端的心跳连接,则所述push服务器会向本地终端发送负荷超载消息,以通知本地终端与所述push服务器的心跳连接已经断开,使得本地终端可以再次向心跳管理服务器查询新的push服务器的地址。
在实际应用中,当push服务器确定了需要执行减小心跳负载操作的终端后,可以不必直接断开与所述终端的心跳连接,可以先指示所述终端先进行心跳值得调整,具体请参阅图6,本发明实施例中心跳连接方法的另一个实施例包括:
601、终端接收push服务器发送的心跳值调整消息;
本发明实施例发生在与push服务器建立心跳连接之后,具体建立心跳连接的过程可以参考前述图4和图5实施例,此处不再赘述。
终端接收push服务器发送的心跳值调整消息。具体的,当push服务器根据预置规则确定本地终端为需要执行减小心跳负载操作的终端之后,向所述终端发生心跳值调整消息,指示所述终端进行心跳值调整。
602、终端根据心跳值调整消息使用预置的心跳算法调整当前心跳值;
终端根据心跳值调整消息使用预置的心跳算法调整向所述push服务器发送的心跳包所携带的当前心跳值。
具体的,预置的心跳算法可以为步径法,终端预设有心跳最小值和步长;终端以所述心跳最小值作为初始的当前心跳值进行心跳包的发送,若当前心跳值不能满足push服务器的要求时,则当前心跳值加上一个步长再进行心跳包的发送。
603、终端判断调整后心跳值是否大于所述终端的最优心跳值;
终端判断调整后心跳值是否大于所述终端的最优心跳值,若是,则触发步骤605,向所述push服务器发送携带有所述最优心跳值的心跳包;若否,则触发步骤604,向所述push服务器发送携带有调整后心跳值的心跳包;
所述最优心跳值为最接近防火墙超时时间,且小于或等于防火墙超时时间的心跳值。因此,若所述整后心跳值大于所述终端的最优心跳值,则所述整后心跳值有可能大于防火墙超时时间,若根据所述整后心跳值发送心跳包的话,push服务器就会因为长时间没有接到终端的心跳包而断开与所述终端的心跳连接,因此,当调整后心跳值大于所述终端的最优心跳值时,则使用最优心跳值所述push服务器发送心跳包。
604、终端向所述push服务器发送携带有所述调整后心跳值的心跳包;
当终端确认所述调整后心跳值小于或等于所述终端的最优心跳值时,向所述push服务器发送携带有所述调整后心跳值的心跳包。
605、终端向所述push服务器发送携带有所述最优心跳值的心跳包;
当终端确认所述调整后心跳值大于所述终端的最优心跳值时,向所述push服务器发送携带有所述最优心跳值的心跳包。
606、终端向心跳管理服务器发送地址查询消息;
若向push服务器发送携带有所述最优心跳值的心跳包之后,仍接收到所述push服务器返回的心跳值调整消息,则终端与所述心跳服务断开的心跳连接,所述终端可以向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述终端建立心跳连接的push服务器的地址。
在实际应用中,心跳管理服务器负责统筹管理各个终端与push服务器的心跳连接,即心跳管理服务器记录了各个push服务器的配置信息;心跳管理服务器可以根据终端与各个push服务器的匹配度为终端查询其需要连接的push服务器。
607、终端接收所述心跳管理服务器返回的push服务器的地址。
终端接收所述心跳管理服务器返回的push服务器的地址。具体的,心跳管理服务器接收到所述地址查询消息之后,可以根据所述入网信息和位置信息计算终端与各个push服务器的匹配度,再综合考虑各个push服务器的负载状态,查询合适与所述终端建立心跳连接的push服务器的地址。在心跳管理服务器查询到合适与所述终端建立心跳连接的push服务器的地址之后,向所述终端返回所述push服务器的地址。
下面对用于执行上述心跳连接方法的本发明push服务器的实施例进行说明,其逻辑结构请参考图7,本发明实施例中push服务器的一个实施例包括:
心跳连接单元701,用于push服务器与第一终端建立心跳连接;
心跳接收单元702,用于接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;
负载计算单元703,用于push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
终端确定单元704,用于若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端;
负载处理单元705,用于在确定所述第二终端之后,对所述第二终端执行减小心跳负载的操作。
本发明实施例中的push服务器还可以进一步包括:
请求接收单元706,用于接收第一终端发送的心跳连接请求;
连接判断单元707,用于判断所述push服务器是否适于建立心跳连接,若是,则触发失败响应单元708;若否,则触发所述心跳连接单元701;
失败响应单元708,用于向所述第一终端返回连接失败响应。
匹配度计算单元709,用于在接收第一终端发送的心跳包之后,根据所述心跳包携带的入网信息和位置信息计算所述第一终端与push服务器的匹配度;
匹配度发送单元710,用于在根据入网信息和位置信息计算所述第一终端与所述push服务器的匹配度之后,向心跳管理服务器发送所述第一终端与所述push服务器的匹配度。
本发明实施例中的负载处理单元705可以包括:连接断开模块7051和超载通知模块7052,或调整通知模块7053;
所述连接断开模块7051用于在确定所述第二终端之后,断开与所述第二终端的心跳连接;
所述超载通知模块7052用于在断开与所述第二终端的心跳连接之后,通过负荷超载消息通知所述第二终端所述push服务器与所述第二终端断开心跳连接,使得所述第二终端向心跳管理服务器查询新的push服务器的地址;
所述调整通知模块7053用于在确定所述第二终端之后,向所述第二终端发送心跳值调整消息,使得所述第二终端进行心跳值的调整,并使用调整后的心跳值再次向所述push服务器发送心跳包。
本发明实施例中的终端确定单元704可以包括:
第一确定模块7041,用于若所述心跳负载大于所述push服务器的心跳负载阈值,则确定最新建立心跳连接的终端为第二终端;
或,第二确定模块7042,用于若所述心跳负载大于所述push服务器的心跳负载阈值,则确定与所述push服务器的匹配度最低的终端为第二终端。
本发明实施例push服务器中各个单元具体的交互过程如下:
请求接收单元706接收第一终端发送的心跳连接请求。在第一终端需要与push服务器建立心跳连接时,会向所述push服务器发送心跳连接请求。
在接收得到心跳连接请求之后,连接判断单元707判断当前的状态是否适于建立心跳连接,若否,则触发失败响应单元708向所述第一终端返回连接失败响应,使得第一终端向心跳管理服务器查询新的push服务器的地址;具体的,第一终端在接收到所述连接失败响应之后,可以向心跳管理服务器发送地址查询消息,该地址查询消息中携带有第一终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述第一终端建立心跳连接的push服务器的地址,从而与新的push服务器建立心跳连接。若是,则触发心跳连接单元701与第一终端建立心跳连接。
在与第一终端建立心跳连接之后,心跳接收单元702接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值,所述当前心跳值为第一终端当前发送两次心跳包之间的间隔时间。具体的,在第一终端向push服务器发送了心跳连接请求之后,若在预置时间内第一终端未收到所述push服务器返回的连接失败响应,第一终端则可以确定所述心跳连接建立成功,第一终端就可以向push服务器发送心跳包,保持与push服务器建立的心跳连接。
可选的,若所述心跳包中携带有所述第一终端的入网信息(该入网信息具体可以为MCC和MNC)和位置信息,则可以触发匹配度计算单元709根据所述心跳包携带的入网信息和位置信息计算所述第一终端与push服务器的匹配度;具体的,push服务器可以为所述入网信息和位置信息等各个参数预设相应的权重,然后通过加权运算得到第一终端与push服务器的匹配度。在实际应用中,push服务器可以在本地建立一种与各个终端的匹配度列表,其中,各个终端以匹配度的大小排列优先级关系,每当push服务器与一种终端建立心跳连接,即计算与该终端的匹配度,并把计算的结果更新仅该匹配度列表中。
可选的,在计算得到第一终端和push服务器的匹配度之后,还可以触发匹配度发送单元710可以将所述匹配度发送给心跳管理服务器。因为在实际应用中,心跳管理服务器负责统筹管理各个终端与push服务器的心跳连接,即心跳管理服务器记录了各个push服务器的配置信息;心跳管理服务器可以根据终端与各个push服务器的匹配度为终端查询其需要连接的push服务器,因此,为了减小心跳管理服务器计算匹配度时产生的负荷,push服务器可以将自身计算得到的与相应终端的匹配度发送给心跳管理服务器,从而实现匹配度计算的负荷均摊,优化了网络间的资源配置。
在接收到所述心跳包之后,负载计算单元703根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载。在实际应用中,一台push服务器可以与多个终端建立心跳连接,所建立的心跳连接越多,push服务器所承受的心跳负载就越大,在计算所述心跳负载的算法中,所述当前心跳值越大,则所述心跳负载越小。
在计算得到所述心跳负载之后,终端确定单元704判断所述心跳负载是否大于所述push服务器的心跳负载阈值,若是,则根据预置规则确定需要断开连接的第二终端;若否,则保持push服务器当前的心跳连接状态不变。可选的,在确定需要断开连接的第二终端时,可以由第一确定模块7041确定最新建立心跳连接的终端为第二终端;或由第二确定模块7042确定与所述push服务器的匹配度最低的终端为第二终端。
在确定了第二终端之后,负载处理单元705,对所述第二终端执行减小心跳负载的操作。具体的,可以由连接断开模块7051断开与所述第二终端的心跳连接,并由超载通知模块7052通过负荷超载消息通知所述第二终端所述push服务器与所述第二终端断开心跳连接,使得所述第二终端向心跳管理服务器查询新的push服务器的地址;也可以由调整通知模块7053向所述第二终端发送心跳值调整消息,使得所述第二终端进行心跳值的调整,由于终端的心跳值越小,对push服务器产生的心跳负载就越大,因此,所述第二终端在接到到所述心跳值调整消息之后,可以对增大所述心跳值,然后使用增大后的心跳值再次向所述push服务器发送心跳包。在实际应用中,具体使用哪种减小心跳负载的操作可以根据实际情况而定,此处不作限定。
下面对用于执行上述心跳连接方法的本发明终端的实施例进行说明,其逻辑结构请参考图8,本发明实施例中终端的一个实施例包括:
地址获取单元801,用于获取需要进行心跳连接的push服务器的地址;
连接单元802,用于根据所述push服务器的地址与所述push服务器建立心跳连接;
心跳包发送单元803,用于在建立所述心跳连接之后,根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的心跳负载,当所述心跳负载大于所述push服务器的心跳负载阈值,则所述push服务器根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
本发明实施例中的终端还可以进一步包括:
地址查询单元804,用于向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息;
地址接收单元805,用于接收所述心跳管理服务器根据所述入网信息和位置信息查询到的需要进行心跳连接的push服务器的地址;
状态更新单元806,用于在根据push服务器的地址向所述push服务器发送心跳包之后,更新并存储所述终端的心跳状态,使得所述终端再次发起心跳连接时,根据所述心跳状态进行心跳连接;所述心跳状态包括:当前心跳值,push服务器的地址,最优心跳标识和位置信息。
失败重连单元807,用于若所述终端与所述push服务器建立心跳连接失败,则触发所述地址查询单元804和地址接收单元805,并根据所述地址接收单元接收到的push服务器的地址再次触发所述连接单元802。
超载消息接收单元808,用于接收所述push服务器发送的负荷超载消息,并触发所述地址查询单元804和地址接收单元805,并根据所述地址接收单元接收到的push服务器的地址再次触发所述连接单元802。
调整消息接收单元809,用于接收所述push服务器发送的心跳值调整消息;
调整单元810,用于根据心跳值调整消息使用预置的心跳算法调整所述当前心跳值;
心跳值判断单元811,用于判断调整后心跳值是否大于所述终端的最优心跳值,若是,则触发所述心跳包发送单元803向所述push服务器发送携带有所述最优心跳值的心跳包;若否,则触发触发所述心跳包发送单元803向所述push服务器发送携带有调整后心跳值的心跳包;
所述调整消息接收单元809还用于若向所述push服务器发送携带有所述最优心跳值的心跳包之后,仍接收到所述push服务器返回的心跳值调整消息,则触发失败重连单元807。
本发明实施例中的地址获取单元801还可以包括:地址判断模块8011和地址提取模块8012;
所述地址判断模块8011用于判断所述终端是否存储有push服务器的地址,若有,则触发地址提取模块8012;若没有,触发地址查询单元804;
所述地址提取模块8012用于提取终端存储的push服务器的地址。
本发明实施例push服务器中各个单元具体的交互过程如下:
在需要建立心跳连接时,地址获取单元801获取需要进行心跳连接的push服务器的地址。
可选的,可以由地址获取单元801的地址判断模块8011判断本地的心跳状态中是否存储有push服务器的地址;若有,则触发地址提取模块8012提取终端存储的push服务器的地址;若没有,触发地址查询单元804向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息,使得心跳管理服务器根据所述入网信息和位置信息查询合适与所述终端建立心跳连接的push服务器的地址;在向所述push服务器发送了地址查询消息之后,地址接收单元805接收所述心跳管理服务器返回的push服务器的地址。具体的,心跳管理服务器接收到所述地址查询消息之后,可以根据所述入网信息和位置信息计算终端与各个push服务器的匹配度,再综合考虑各个push服务器的负载状态,查询合适与所述终端建立心跳连接的push服务器的地址。在心跳管理服务器查询到合适与所述终端建立心跳连接的push服务器的地址之后,向所述终端返回所述push服务器的地址。
在终端获取到push服务器的地址之后,连接单元802根据所述push服务器的地址向所述push服务器发送心跳连接请求,请求与所述push服务器建立心跳连接;在向所述push服务器发送心跳连接请求之后,若收到所述push服务器返回的连接成功响应,或在预置时间内终端未收到所述push服务器返回的连接失败响应,则可以确定所述心跳连接建立成功,并触发心跳包发送单元803;若终端在预置时间内收到所述push服务器返回的连接失败响应,则可以确定所述心跳连接建立失败,则触发失败重连单元807。
在终端与push服务器的心跳连接建立成功之后,心跳包发送单元803向心跳连接成功的push服务器发送心跳包,所述心跳包携带有当前心跳值,终端的入网信息和位置信息;使得所述push服务器可以根据所述当前心跳值计算心跳连接的负载情况,并根据所述入网信息和位置信息计算出所述终端与所述push服务器的匹配度。
可选的,在向所述push服务器发送心跳包之后,可以触发状态更新单元806更新并存储所述终端的心跳状态,使得所述终端再次发起心跳连接时,根据所述心跳状态进行心跳连接;所述心跳状态包括:当前心跳值,push服务器的地址,最优心跳标识和位置信息。在实际应用中,若终端首次发起心跳连接的流程,则所述当前心跳值为本地预设的初始心跳值;若终端的心跳状态中存储有当前心跳值(前一次进行心跳连接存储下来的),则直接使用所述心跳状态中存储的当前心跳值发送心跳包,避免重复进行最优心跳值得调整。
根据实际情况可选的,若终端的超载消息接收单元808接收到所述push服务器发送的负荷超载消息,则触发所述地址查询单元804和地址接收单元805,并根据所述地址接收单元接收到的push服务器的地址再次触发所述连接单元802。具体的,若push服务器在管理心跳连接状态的过程中,确定需要断开与本地终端的心跳连接,则所述push服务器会向本地终端发送负荷超载消息,以通知本地终端与所述push服务器的心跳连接已经断开,使得本地终端可以再次向心跳管理服务器查询新的push服务器的地址。
根据实际情况可选的,若终端的调整消息接收单元809接收到push服务器发送的心跳值调整消息,则触发调整单元810使用预置的心跳算法调整向所述push服务器发送的心跳包所携带的当前心跳值。具体的,预置的心跳算法可以为步径法,终端预设有心跳最小值和步长;终端以所述心跳最小值作为初始的当前心跳值进行心跳包的发送,若当前心跳值不能满足push服务器的要求时,则当前心跳值加上一个步长再进行心跳包的发送。
在得到调整后心跳值之后,心跳值判断单元811判断调整后心跳值是否大于所述终端的最优心跳值,若是,则触发所述心跳包发送单元803向所述push服务器发送携带有所述最优心跳值的心跳包;若否,则触发触发所述心跳包发送单元803向所述push服务器发送携带有调整后心跳值的心跳包。
根据实际情况可选的,若向所述push服务器发送携带有所述最优心跳值的心跳包之后,调整消息接收单元809还接收到所述push服务器返回的心跳值调整消息,则触发失败重连单元807。
下面对用于执行上述心跳连接方法的本发明心跳连接***的实施例进行说明,其逻辑结构请参考图9,本发明实施例中心跳连接***的一个实施例包括:
push服务器901,终端902和心跳管理服务器903;
所述终端902用于判断所述终端是否存储有push服务器的地址,若有,则提取存储的push服务器的地址;若没有,则向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息;接收所述心跳管理服务器根据所述入网信息和位置信息查询到的需要进行心跳连接的push服务器的地址;根据所述push服务器的地址与所述push服务器建立心跳连接;若所述终端与所述push服务器建立心跳连接失败,则所述心跳管理服务器查询新的push服务器的地址;若所述终端与所述push服务器建立心跳连接成功,则根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的负载情况;
所述push服务器901用于接收终端发送的心跳连接请求;判断所述push服务器是否适于建立心跳连接,若是,则向所述终端返回连接失败响应;若否,则与所述终端建立心跳连接;建立心跳连接之后,接收所述终端发送的心跳包;根据所述当前心跳值计算与所述终端建立心跳连接之后的心跳负载;若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定需要调整的终端,对所述需要调整的终端执行减小心跳负载的操作;
所述心跳管理服务器903用于接收所述终端发送的地址查询消息,根据所述地址查询消息中携带的入网信息和位置信息查询所述终端需要进行心跳连接的push服务器的地址;向所述终端返回查询到的push服务器的地址。
所述终端根据push服务器的地址向所述push服务器发送的心跳包中还携带有所述终端的入网信息和位置信息;
所述push服务器还用于根据所述终端的入网信息和位置信息计算所述终端与所述push服务器的匹配度,并向所述心跳管理服务器发送所述匹配度;
所述根据预置规则确定需要调整的终端,还包括:确定与所述push服务器的匹配度最低的终端为需要调整的终端;
所述心跳管理服务器还用于根据所述终端和各个push服务器的匹配度查询所述终端需要进行心跳连接的push服务器的地址。
本发明实施例中心跳连接***的具体操作流程可以参阅上述方法实施例,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (21)
1.一种心跳连接方法,其特征在于,包括:
推送push服务器与第一终端建立心跳连接;
所述push服务器接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;
所述push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
2.根据权利要求1所述的方法,其特征在于,所述push服务器与第一终端建立心跳连接之前,包括:
push服务器接收第一终端发送的心跳连接请求;
判断所述push服务器是否适于建立心跳连接,若否,则向所述第一终端返回连接失败响应;若是,则触发所述与第一终端建立心跳连接的步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述对第二终端执行减小心跳负载的操作,包括:
断开与所述第二终端的心跳连接,并通过负荷超载消息通知所述第二终端所述push服务器与所述第二终端断开心跳连接,使得所述第二终端向心跳管理服务器查询新的push服务器的地址;
或,向所述第二终端发送心跳值调整消息,使得所述第二终端进行心跳值的调整,并使用调整后的心跳值再次向所述push服务器发送心跳包。
4.根据权利要求1-3任一项所述的方法,其特征在于,
所述心跳包中还携带有所述第一终端的入网信息和位置信息;
所述接收所述第一终端发送的心跳包之后,还包括:
所述push服务器根据所述入网信息和位置信息计算所述第一终端与所述push服务器的匹配度;
所述根据预置规则确定第二终端具体包括:
确定与所述push服务器的匹配度最低的终端为第二终端。
5.一种心跳连接方法,其特征在于,包括:
终端获取需要进行心跳连接的push服务器的地址;
所述终端根据所述push服务器的地址与所述push服务器建立心跳连接;
所述终端根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的心跳负载,当所述心跳负载大于所述push服务器的心跳负载阈值,则所述push服务器根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
6.根据权利要求5所述的方法,其特征在于,所述获取需要进行心跳连接的push服务器的地址,包括:
判断所述终端是否存储有push服务器的地址;
若所述终端存储有push服务器的地址,则提取存储的push服务器的地址;
若所述终端没有存储push服务器的地址,则向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息;接收所述心跳管理服务器根据所述入网信息和位置信息查询到的需要进行心跳连接的push服务器的地址。
7.根据权利要求5或6所述的方法,其特征在于,所述心跳包还携带有所述终端的入网信息和位置信息,使得所述push服务器根据所述入网信息和位置信息计算所述终端与所述push服务器的匹配度。
8.根据权利要求5至7任意一项所述的方法,其特征在于,所述方法还包括:
若所述终端与所述push服务器建立心跳连接失败,则所述终端向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息;
所述终端接收所述心跳管理服务器根据所述入网信息和位置信息查询到的需要进行心跳连接的push服务器的地址;
所述终端根据所述心跳管理服务器返回的push服务器的地址再次建立心跳连接。
9.根据权利要求5至8任意一项所述的方法,其特征在于,所述根据所述push服务器的地址向所述push服务器发送心跳包之后,包括:
接收所述push服务器发送的负荷超载消息;
接收到所述负荷超载消息后,与所述push服务器断开心跳连接,并向所述心跳管理服务器查询新的push服务器的地址。
10.根据权利要5至8任意一项所述的方法,其特征在于,所述根据所述push服务器的地址向所述push服务器发送心跳包之后,还包括:
接收所述push服务器发送的心跳值调整消息;
根据心跳值调整消息使用预置的心跳算法调整所述当前心跳值;
判断调整后心跳值是否大于所述终端的最优心跳值,若是,则向所述push服务器发送携带有所述最优心跳值的心跳包;若否,则向所述push服务器发送携带有调整后心跳值的心跳包。
11.根据权利要求10所述的方法,其特征在于,所述根据向所述push服务器发送携带有调整后心跳值的心跳包之后,包括:
若向所述push服务器发送携带有所述最优心跳值的心跳包之后,仍接收到所述push服务器返回的心跳值调整消息,则向所述心跳管理服务器查询新的push服务器的地址。
12.一种push服务器,其特征在于,包括:
心跳连接单元,用于push服务器与第一终端建立心跳连接;
心跳接收单元,用于接收所述第一终端发送的心跳包,所述心跳包中携带有所述第一终端的当前心跳值;
负载计算单元,用于push服务器根据所述当前心跳值计算与所述第一终端建立心跳连接之后的心跳负载;
终端确定单元,用于若所述心跳负载大于所述push服务器的心跳负载阈值,则根据预置规则确定第二终端;
负载处理单元,用于在确定所述第二终端之后,对所述第二终端执行减小心跳负载的操作。
13.根据权利要求12所述的push服务器,其特征在于,所述push服务器还包括:
请求接收单元,用于接收第一终端发送的心跳连接请求;
连接判断单元,用于判断所述push服务器是否适于建立心跳连接,若是,则触发失败响应单元;若否,则触发所述心跳连接单元;
失败响应单元,用于向所述第一终端返回连接失败响应。
14.根据权利要求12或13所述的push服务器,其特征在于,所述负载处理单元包括:连接断开模块和超载通知模块,或调整通知模块;
所述连接断开模块用于在确定所述第二终端之后,断开与所述第二终端的心跳连接;
所述超载通知模块用于在断开与所述第二终端的心跳连接之后,通过负荷超载消息通知所述第二终端所述push服务器与所述第二终端断开心跳连接,使得所述第二终端向心跳管理服务器查询新的push服务器的地址;
所述调整通知模块用于在确定所述第二终端之后,向所述第二终端发送心跳值调整消息,使得所述第二终端进行心跳值的调整,并使用调整后的心跳值再次向所述push服务器发送心跳包。
15.根据权利要求14所述的push服务器,其特征在于,所述push服务器还包括:
匹配度计算单元,用于在接收第一终端发送的心跳包之后,根据所述心跳包携带的入网信息和位置信息计算所述第一终端与push服务器的匹配度;
若所述总心跳负载大于所述心跳服务器的心跳负载阈值,则所述确定单元还用于确定与所述心跳服务器的匹配度最低的终端为第二终端。
16.一种终端,其特征在于,包括:
地址获取单元,用于获取需要进行心跳连接的push服务器的地址;
连接单元,用于根据所述push服务器的地址与所述push服务器建立心跳连接;
心跳包发送单元,用于在建立所述心跳连接之后,根据所述push服务器的地址向所述push服务器发送心跳包,所述心跳包携带有当前心跳值,使得所述push服务器根据所述当前心跳值计算心跳连接的心跳负载,当所述心跳负载大于所述push服务器的心跳负载阈值,则所述push服务器根据预置规则确定第二终端,对所述第二终端执行减小心跳负载的操作。
17.根据权利要求16所述的终端,其特征在于,
所述终端还包括:地址查询单元和地址接收单元;
地址查询单元,用于向心跳管理服务器发送地址查询消息,所述地址查询消息中携带有所述终端的入网信息和位置信息;
地址接收单元,用于接收所述心跳管理服务器根据所述入网信息和位置信息查询到的需要进行心跳连接的push服务器的地址;
所述地址获取单元包括:地址判断模块和地址提取模块;
所述地址判断模块用于判断所述终端是否存储有push服务器的地址,若有,则触发地址提取模块;若没有,触发地址查询单元;
所述地址提取模块用于提取终端存储的push服务器的地址。
18.根据权利要求16或17所述的终端,其特征在于,所述终端还包括:
超载消息接收单元,用于接收所述push服务器发送的负荷超载消息,并触发所述地址查询单元和地址接收单元,并根据所述地址接收单元接收到的push服务器的地址再次触发所述连接单元。
19.根据权利要求16或17所述的终端,其特征在于,所述终端还包括:
调整消息接收单元,用于接收所述push服务器发送的心跳值调整消息;
调整单元,用于根据心跳值调整消息使用预置的心跳算法调整所述当前心跳值;
心跳值判断单元,用于判断调整后心跳值是否大于所述终端的最优心跳值,若是,则触发所述心跳包发送单元向所述push服务器发送携带有所述最优心跳值的心跳包;若否,则触发触发所述心跳包发送单元向所述push服务器发送携带有调整后心跳值的心跳包。
20.根据权利要求19所述的终端,其特征在于,若向所述push服务器发送携带有所述最优心跳值的心跳包之后,所述调整消息接收单元还接收到所述push服务器返回的心跳值调整消息,则进行心跳连接的失败重连。
21.一种心跳连接***,其特征在于,包括如权利要求12至15任一项所述的push服务器,如权利要求16至20任一项所述的终端,以及心跳管理服务器;
所述心跳管理服务器用于接收终端发送的地址查询消息,根据所述地址查询消息中携带的入网信息和位置信息查询所述终端需要进行心跳连接的push服务器的地址;向所述终端返回查询到的push服务器的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104486049A CN102447631A (zh) | 2011-12-28 | 2011-12-28 | 一种心跳连接方法,相关装置以及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104486049A CN102447631A (zh) | 2011-12-28 | 2011-12-28 | 一种心跳连接方法,相关装置以及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102447631A true CN102447631A (zh) | 2012-05-09 |
Family
ID=46009732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104486049A Pending CN102447631A (zh) | 2011-12-28 | 2011-12-28 | 一种心跳连接方法,相关装置以及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102447631A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856954A (zh) * | 2012-11-28 | 2014-06-11 | 中国电信股份有限公司 | 探测游牧终端心跳周期的方法、***、游牧终端与服务器 |
CN105025063A (zh) * | 2014-04-29 | 2015-11-04 | 刘广威 | 面向大规模终端设备的在线数据传输方法 |
CN106685748A (zh) * | 2015-11-05 | 2017-05-17 | 中移(杭州)信息技术有限公司 | 一种心跳信息发送方法、服务器及终端 |
CN108737142A (zh) * | 2017-04-21 | 2018-11-02 | 华为技术有限公司 | 一种调整节点检测参数的方法、节点和网状网络 |
CN110601914A (zh) * | 2019-08-05 | 2019-12-20 | 深圳市大拿科技有限公司 | 监测服务器存活状态的方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101098456A (zh) * | 2007-07-17 | 2008-01-02 | 包国君 | 基于互联网窄带信道实现可寻址多媒体播出的***及其播放方法 |
CN101115313A (zh) * | 2007-08-23 | 2008-01-30 | 中兴通讯股份有限公司 | 一种软心跳检测方法及*** |
CN102170396A (zh) * | 2011-05-06 | 2011-08-31 | 浙江大学 | 一种基于区分服务的云存储***QoS控制方法 |
-
2011
- 2011-12-28 CN CN2011104486049A patent/CN102447631A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101098456A (zh) * | 2007-07-17 | 2008-01-02 | 包国君 | 基于互联网窄带信道实现可寻址多媒体播出的***及其播放方法 |
CN101115313A (zh) * | 2007-08-23 | 2008-01-30 | 中兴通讯股份有限公司 | 一种软心跳检测方法及*** |
CN102170396A (zh) * | 2011-05-06 | 2011-08-31 | 浙江大学 | 一种基于区分服务的云存储***QoS控制方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856954A (zh) * | 2012-11-28 | 2014-06-11 | 中国电信股份有限公司 | 探测游牧终端心跳周期的方法、***、游牧终端与服务器 |
CN103856954B (zh) * | 2012-11-28 | 2017-11-28 | 中国电信股份有限公司 | 探测游牧终端心跳周期的方法、***、游牧终端与服务器 |
CN105025063A (zh) * | 2014-04-29 | 2015-11-04 | 刘广威 | 面向大规模终端设备的在线数据传输方法 |
CN106685748A (zh) * | 2015-11-05 | 2017-05-17 | 中移(杭州)信息技术有限公司 | 一种心跳信息发送方法、服务器及终端 |
CN108737142A (zh) * | 2017-04-21 | 2018-11-02 | 华为技术有限公司 | 一种调整节点检测参数的方法、节点和网状网络 |
CN110601914A (zh) * | 2019-08-05 | 2019-12-20 | 深圳市大拿科技有限公司 | 监测服务器存活状态的方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11076012B2 (en) | Server cluster and method for push notification service | |
US9313236B2 (en) | Determining an efficient keep-alive interval for a network connection | |
US9300534B2 (en) | Method for optimally utilizing a peer to peer network | |
CN103209089A (zh) | 心跳周期的获取方法及终端、服务器 | |
CN102447631A (zh) | 一种心跳连接方法,相关装置以及*** | |
CN105357246A (zh) | 基于信息中心网络的缓存方法和*** | |
US10693967B2 (en) | Data connection establishment method, server, and mobile terminal | |
CN104468852A (zh) | 客户端选择ip链接地址的方法、装置及*** | |
CN102387069A (zh) | 客户端与服务端的连接方法及***、客户端和服务端 | |
KR102001103B1 (ko) | 전자장치, 서버 및 시스템의 제어방법 | |
CN101778097B (zh) | 网络升级方法和***、实现网络升级的主服务端 | |
CN111327650A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN110380967B (zh) | 一种基于sse技术的服务器推送消息方法 | |
CN105072145A (zh) | 一种物联网的通信方法及*** | |
CN102790804A (zh) | 基于移动智能体的无结构对等网络负载均衡方法及*** | |
CN102882906A (zh) | 受限应用协议中数据通信的方法和装置 | |
US11405325B2 (en) | In-band-telemetry-based path MTU size determination system | |
CN112055347A (zh) | 一种多网关协同工作方法及*** | |
CN114422573B (zh) | 报文发送方法及装置、存储介质及电子装置 | |
CN110493095A (zh) | 一种vpn业务的处理方法、装置、服务器和存储介质 | |
CN111641703B (zh) | 一种确定终端设备tcp心跳周期的方法、终端设备及服务器 | |
CN102571880B (zh) | 一种服务分发方法和***以及一种服务分发节点 | |
US20090193104A1 (en) | Forwarding of device absence information in system with a dynamically changing set of devices | |
US10277700B2 (en) | Control plane redundancy system | |
CN114079637B (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120509 |