信息推送方法及装置、通讯系统与流程

文档序号:11590366阅读:149来源:国知局
信息推送方法及装置、通讯系统与流程

本申请涉及通讯技术领域,尤其涉及一种信息推送方法及装置、通讯系统。



背景技术:

在一些包括客户端设备和服务器的通讯系统中,需要通过一个或多个连接管理(connectionmanager,cm)设备来维持与客户端设备的长连接。

目前,当客户端设备与连接管理设备之间建立连接后,需要将所述客户端设备的登录信息写入到数据缓存层中,所述登录信息一般包括:与客户端设备建立连接的连接管理设备的标识。这样,当服务器需要向某个目标客户端设备推送消息时,服务器可以从所述数据缓存层中,查找到与上述目标客户端设备建立连接的连接管理设备的标识,并将所需推送的消息推送至指定的连接管理设备,再由该连接管理设备转发到所述目标客户端设备上。

在上述过程中,连接管理设备难免需要进行重启,而当某一连接管理设备发生重启之后,可能会造成服务器向某一连接管理设备投递消息失败的问题,造成不必要的资源消耗。举例而言,假设客户端设备a与正常工作的连接管理设备a建立连接之后,需要在数据缓存层中存储与所述客户端设备a对应的登录信息是:客户端设备a与连接管理设备a建立连接;此后,若上述连接管理设备a发生一次重启,假如重启之后上述数据缓存层中存储的登录信息仍是:客户端设备a与连接管理设备a建立连接,那么,服务器在查找到这一登录信息之后,便仍会向连接管理设备a投递消息。然而,往往在上述连接管理设备a重启之后,客户端设备a并没有与连接管理设备a建立连接,从而造成消息投递失败。



技术实现要素:

有鉴于此,本申请提供一种信息推送方法及装置、通讯系统,以避免在连接管理设备发生重启之后,服务器向连接管理设备投递消息失败的问题。

为实现上述目的,本申请提供技术方案如下:

根据本申请的第一方面,提出了一种信息推送方法,包括:

查找目标客户端设备的登录信息,所述登录信息包括:与所述目标客户端设备建立连接的连接管理设备的标识,及所述连接管理设备的第一时间戳;其中所述第一时间戳用以标识在所述目标客户端设备与所述连接管理设备建立连接的时刻之前所述连接管理设备最近一次启动的时刻;

根据所述标识,获取服务器记录的与所述标识对应的第二时间戳;其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻;

当所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送用于发送至所述目标客户端设备上的待推送信息。

根据本申请的第二方面,提出了一种信息推送装置,包括:

查找单元,用于查找目标客户端设备的登录信息,所述登录信息包括:与所述目标客户端设备建立连接的连接管理设备的标识,及所述连接管理设备的第一时间戳;其中所述第一时间戳用以标识在所述目标客户端设备与所述连接管理设备建立连接的时刻之前所述连接管理设备最近一次启动的时刻;

获取单元,用于根据所述标识,获取服务器记录的与所述标识对应的第二时间戳;其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻;

拒绝推送单元,用于当所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送用于发送至所述目标客户端设备上的待推送信息。

根据本申请的第三方面,提出了一种通讯系统,包括:服务器、数据缓存层及与所述服务器通讯的若干连接管理设备,其中所述服务器用于:

从数据缓存层查找目标客户端设备的登录信息,所述登录信息包括:与所述目标客户端设备建立连接的连接管理设备的标识,及所述连接管理设备的第一时间戳;其中所述第一时间戳用以标识在所述目标客户端设备与所述连接管理设备建立连接的时刻之前所述连接管理设备最近一次启动的时刻;

根据所述标识,获取服务器记录的与所述标识对应的第二时间戳;其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻;

当所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送用于发送至所述目标客户端设备上的待推送信息。

由以上技术方案可见,本申请通过在数据缓存层存储目标客户端设备的登录信息以及在服务器上记录与所述连接管理设备对应的第二时间戳,所述登录信息包含与所述目标客户端设备建立连接的所述连接管理设备的第一时间戳。其中,由于本申请在进行将消息投递到连接管理设备之前,需要判断上述第一时间戳和第二时间戳是否一致,并在所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送相应的待推送信息,从而避免在连接管理设备发生重启之后,服务器错误地向连接管理设备投递消息,造成消息投递失败的问题,降低了不必要的资源消耗。

附图说明

图1是相关技术中的一种通讯系统的架构示意图;

图2是本申请一实施例中的一种信息推送方法的流程图;

图3、图4示出了本申请一实施例中针对连接管理设备的启动时刻进行记录和变更的过程;

图5是本申请一示例性实施例的一种电子设备的结构示意图;

图6是本申请一示例性实施例的一种信息推送装置的框图。

具体实施方式

图1是相关技术中的一种c/s架构的通讯系统的示意图。该通讯系统可以包括:服务器10、若干客户端设备30、若干连接管理设备(或称“前端机器”、“cm设备”、“前端处理机”)20以及数据缓存层40。其中,所述服务器10可以是负责各类业务运营的服务器,如:支付平台服务器、即时通讯平台服务器等。为便于描述,本文将上述通讯系统中的各个连接管理设备组成的集群称为“cm集群”。在上述通讯系统中,各个客户端设备30与服务器10之间的通讯过程是由cm集群负责维持,这样,服务器10就不会不断地被客户端设备30打扰,从而释放服务器10的处理资源,提升系统性能。在上述系统,cm集群中所包含的连接管理设备的数量,每一连接管理设备可维持的客户端设备的数量均可根据系统实际需求来调整。上述数据缓存层40用于存储每一客户端设备登录某一连接管理设备之后生成的登录信息,即,“cm集群”的所有连接管理设备上的登录信息均可以存储在该数据缓存层40中。数据缓存层40可用于通过在内存中缓存数据来减少读取数据库的次数,从而提高系统性能,该数据缓存层40可以是系统单独开辟的一块存储空间,也可以是集成于某一服务器或子系统中的内存空间,本申请不作限制。需说明的是,上述数据缓存层40中的数据可以按照预定的自动超时时长进行更新,即每一笔数据存在于上述数据缓存层40的持续时长通常不超过上述自动超时时长,该自动超时时长可以按照系统实际需求进行设定。

在运行过程中,当某一客户端设备需要与服务器之间进行交互时,该客户端设备可先登录某一连接管理设备(可根据每一连接管理设备的实际负载情况来选取),以与某一连接管理设备建立连接。当客户端设备成功与某一连接管理设备建立连接之后,该连接管理设备需要生成当前客户端设备的登录信息并存储到数据缓存层40中,以便于服务器10后续需要向客户端设备推送消息时,可以通过从上述数据缓存层40中查找相应的登录信息,来找到与该客户端设备建立连接的指定连接管理设备,并通过该指定连接管理设备进行消息投递。在一种示例中,登录信息可包括:客户端设备id(如:客户端设备上登录的用户账号)及与客户端设备建立连接的连接管理设备的标识(如:“001”),例如,{客户端设备a登录连接管理设备a}。

在相关技术中,“cm集群”中的连接管理设备难免因各种因素(如:机器故障、宕机、应用更新等)需要重启,当某一连接管理设备发生重启之后,容易导致服务器10从数据缓存层40查找到的登录信息是不正确的,进而导致服务器10按照查找的错误登录信息,向指定的连接管理设备投递消息失败的问题,带来不必要的资源浪费,给系统性能造成不良影响。举例而言,假设某一连接管理设备a在t1时刻启动,并维持正常工作状态至t2时刻发生宕机,此后在t3时刻再一次启动并恢复正常工作状态。在上述过程中,假设某一客户端设备a在t1时刻~t2时刻之间的某个时间点登录该连接管理设备a并与其建立连接,则在数据缓存层40中针对该客户端设备a的登录信息可例如是:{客户端设备a登录连接管理设备a}。基于上述例子,可能会出现如下情况:

①服务器10在t3时刻之后的某个时间点需要向客户端设备a推送一则消息,此时服务器10从数据缓存层查找到的针对客户端设备a的登录信息如果是:{客户端设备a登录连接管理设备a}。然而,实际上,由于连接管理设备a在t2时刻发生宕机并在t3时刻重启,在此过程之后,客户端设备a可能已不再与连接管理设备a建立连接(或通过连接管理设备a进行登录),例如:客户端设备a已经下线、或客户端设备a与cm集群中的另一连接管理设备b建立连接但还没有对登录信息进行更新,等等。针对这一情况,若服务器10仍然按照上述登录信息如果是:{客户端设备a登录连接管理设备a},向连接管理设备a投递用于转发到客户端设备a上的消息,则势必造成消息投递失败。

②服务器10在t2和t3时刻之间的某个时间点需要向客户端设备a推送一则消息,此时服务器10从数据缓存层查找到的针对客户端设备a的登录信息如果是:{客户端设备a登录连接管理设备a}。然而,实际上,由于连接管理设备a在t2时刻发生宕机,导致在t2到t3时刻之间无法正常工作,所以即便服务器10向连接管理设备a投递用于转发到客户端设备a上的消息,也会造成消息投递失败。

对于上述两种情况,由于连接管理设备的重启,均会造成服务器10向被重启的连接管理设备投递消息的失败,造成不必要的资源消耗,本申请技术方案正是为解决上述问题而提出。

图2是本申请一实施例中的一种信息推送方法的流程图,图3、图4示出了本申请一实施例中针对连接管理设备的启动时刻进行记录和变更的过程,以下将结合图2~图4来对本方案进行叙述。参图2所示,该信息推送方法可以应用于上述服务器10,包括下述步骤101~103,其中:

在步骤101中,查找目标客户端设备的登录信息,其中所述登录信息包括:与所述目标客户端设备建立连接的连接管理设备的标识,及所述连接管理设备的第一时间戳;其中所述第一时间戳用以标识在所述目标客户端设备与所述连接管理设备建立连接的时刻之前,所述连接管理设备最近一次启动的时刻。

在一实施例中,为便于描述,假定目标客户端设备的标识为a,与该客户端设备a建立连接的连接管理设备的标识为cm-a。在客户端设备a与连接管理设备cm-a建立连接之后,需要在数据缓存层中存储客户端设备a的登录信息,例如是:

{在cm-a上登录,cm-a的启动时刻是t1};

其中,假定客户端设备a与连接管理设备cm-a建立连接的时刻是t0,则t1是在t0时刻之前的所述连接管理设备最近一次启动的时刻。连接管理设备在每次启动之后,可以记录自身每一次启动的时刻,这样,在有客户端设备a与之建立连接之后,便可获得相应最近一次启动的时刻并生成与该时刻对应的第一时间戳,再存储到数据缓存层中。此后,当服务器需要向客户端设备a推送消息时,则可以基于数据缓存层中存储的数据,从数据缓存层中查找目标客户端设备的登录信息,并进行消息投递过程。需说明的是,在其他可行实施例中,登录信息并不限于存储到上述数据缓存层中,也可以被存储到其他存储空间中。

在步骤102中,根据所述标识,获取服务器记录的与所述标识对应的第二时间戳;其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻。

本实施例中,除了需要在数据缓存层中存储包含第一时间戳(用以标识cm设备的启动时刻)的登录信息之外,还需要服务器通过监听“cm集群”中的每一个连接管理设备的工作状态(如:启动、宕机、故障、重启等),来记录每一连接管理设备的第二时间戳,其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻。

配合参照图3-图4,以某一连接管理设备cm-a发生宕机并重启的场景为例来说明。其中图3所示的是连接管理设备cm-a发生宕机之前的信息存储情况,图4所示的是连接管理设备cm-a发生宕机并重启之后的信息存储情况。假定连接管理设备cm-a在t1时刻启动一次,并维持正常工作至t2时刻发生宕机,此后在t3时刻恢复启动状态。如图3所示,假定在t1时刻和t2时刻之间的某个时间点,客户端设备a与连接管理设备cm-a建立连接,则需要在数据缓存层内存储客户端设备a的登录信息:{在连接管理设备cm-a上登录,cm-a的启动时刻是t1},于此同时,由于服务器监听到连接管理设备cm-a在t1时刻启动一次,且在建立连接完成的当前时刻,本次启动是服务器最近一次监听到cm-a的启动时刻,则服务器需记录:{cm-a的启动时刻为t1}。如图4所示,当服务器监听到cm-a在t2时刻发生宕机之后,可以将原本记录的信息:{cm-a的启动时刻为t1}进行删除,并在服务器监听到cm-a在t3时刻重启之后,可以记录:{cm-a的启动时刻为t3}。可见,服务器通过不断监听每一连接管理设备的状态,将最近一次监听到的连接管理设备的启动时刻确定为第二时间戳,并进行记录。

在一实施例中,当所述连接管理设备重启时,重启的连接管理设备需要在服务器上进行重新注册,即服务器可以接收到所述连接管理设备发送的包含所述第二时间戳的注册指令。其中所述第二时间戳是根据所述连接管理设备重启的时刻确定的。当所述连接管理设备注册成功后,将所述第二时间戳与所述标识(如:cm-a)对应并记录。当然,服务器也可以通过监听连接管理设备的状态,获得其最近一次启动的时刻,并确定为所述第二时间戳并记录。

在步骤103中,当所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送用于发送至所述目标客户端设备上的待推送信息。

基于以上图3和图4的过程,当服务器需要向某一客户端设备a投递消息时,可以通过查找上述第一时间戳和第二时间戳并比对这两个时间戳是否一致,在不一致时,则拒绝向相应的连接管理设备推送上述待推送消息;若一致,则向相应的连接管理设备推送上述待推送消息。

一般地,造成上述第一时间戳和第二时间戳不一致的情况主要包括:

客户端设备a在cm-a宕机重启之前的某时间点与cm-a建立连接,当cm-a在t3时刻重启完成之后,客户端设备a实际上已经断开与cm-a的连接,然而,数据缓存层中仍然存储着客户端设备a的登录信息是:{在连接管理设备cm-a上登录,cm-a的启动时刻是t1},而此时服务器记录的信息是:{cm-a的启动时刻为t3}。

针对上述情况,可以看出,若服务器仍然向cm-a投递用于转发至客户端设备a上的待推送消息,则势必会投递失败,造成不必要的资源消耗。

在一实施例中,所述方法还可以包括:

当监听到所述连接管理设备宕机或关闭时,删除所述服务器上记录的与所述标识对应的第二时间戳。

继续沿用上述例子,由于在cm-a宕机到重启完成的t2~t3时间段内,所述服务器上记录的与所述标识cm-a对应的信息为空(被删除),所以在这段时间段内,如果服务器需要通过cm-a向客户端设备a推送消息,由于服务器未获取到与所述标识对应的第二时间戳,则拒绝向所述连接管理设备推送所述待推送信息,从而避免消息投递失败造成的不必要资源消耗。同样地,在某些情况下,当未查找到所述目标客户端设备的登录信息(通常表明目标客户端设备下线)时,也拒绝向所述连接管理设备推送所述待推送信息。

基于以上内容可见,本申请通过在数据缓存层存储目标客户端设备的登录信息以及在服务器上记录与所述连接管理设备对应的第二时间戳,所述登录信息包含与所述目标客户端设备建立连接的所述连接管理设备的第一时间戳。其中,由于本申请在进行将消息投递到连接管理设备之前,需要判断上述第一时间戳和第二时间戳是否一致,并在所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送相应的待推送信息,从而避免在连接管理设备发生重启之后,服务器错误地向连接管理设备投递消息,造成消息投递失败的问题,本申请可以有效减少服务器不必要的消息投递,降低了服务器不必要的资源消耗。

图5示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图5,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成信息推送装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图6,在软件实施方式中,该信息推送装置可以包括查找单元201、获取单元202和拒绝推送单元203。其中:

查找单元201,用于查找目标客户端设备的登录信息。所述登录信息包括:与所述目标客户端设备建立连接的连接管理设备的标识,及所述连接管理设备的第一时间戳;其中所述第一时间戳用以标识在所述目标客户端设备与所述连接管理设备建立连接的时刻之前所述连接管理设备最近一次启动的时刻;

获取单元202,用于根据所述标识,获取服务器记录的与所述标识对应的第二时间戳;其中所述第二时间戳用以标识所述服务器最近一次监听到所述连接管理设备启动的时刻。

拒绝推送单元203,用于当所述第一时间戳和所述第二时间戳不一致时,拒绝向所述连接管理设备推送用于发送至所述目标客户端设备上的待推送信息。

可选的,所述查找单元201可用于:

从数据缓存层查找目标客户端设备的登录信息;其中所述登录信息在所述目标客户端设备与所述连接管理设备建立连接时被写入所述数据缓存层。

可选的,所述装置还可包括:

时间戳记录单元204,用于当监听到所述连接管理设备重启时,获得与所述连接管理设备重启的时刻对应的第二时间戳并与所述标识对应。

可选的,所述装置还可包括:

时间戳删除单元205,用于当监听到所述连接管理设备宕机或关闭时,删除所述服务器上记录的与所述标识对应的第二时间戳。

可选的,上述时间戳记录单元204可具体包括:

接收单元2041,用于当所述连接管理设备重启时,接收所述连接管理设备发送的包含所述第二时间戳的注册指令;其中所述第二时间戳是根据所述连接管理设备重启的时刻确定的;

对应单元2042,用于当所述连接管理设备注册成功后,将所述第二时间戳与所述标识对应并记录。

可选的,所述拒绝推送单元203还可用于:

当未获取到与所述标识对应的第二时间戳时,拒绝向所述连接管理设备推送所述待推送信息。

可选的,所述拒绝推送单元203还可用于:

当未查找到所述目标客户端设备的登录信息时,拒绝向所述连接管理设备推送所述待推送信息。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1