专利名称:离线消息集中处理方法和系统的制作方法
技术领域:
本发明涉及通信技术领域,特别涉及一种离线消息集中处理方法和系统。
背景技术:
现有的网络应用中,如果用户离线,且设置为需要存储离线消息模式时,系统将为用户存储离线消息,待下次用户登录时,推送该离线消息给该用户。现有技术的离线消息多分布式存储在不同的离线消息服务器上,难以统一管理。现有技术的一种离线消息处理方法,包括离线消息的存储过程、离线消息的通知过程和离线消息的获取过程。在所述离线消息的存储过程中,当用户预先设置要求保存离线消息时,系统保存发送给用户的离线消息;在所述离线消息的通知过程中,当用户上线后,用户客户端所属即时消息(Instant Message, IM)服务器检测到系统中保存有该用户的离线消息时,则按照系统设置或用户订阅离线消息通知的设置,发送离线消息通知给该用户客户端;在所述离线消息的获取过程中,当用户客户端收到离线消息通知并请求获取离线消息后,其所属頂服务器将离线消息内容发送给用户客户端。然而,由于现有技术中的离线消息存储分散,较难系统地备份,在离线消息服务器出现故障或宕机时,会丢失离线消息数据,用户体验不好。
发明内容
针对现有技术的缺陷,本发明实施例提供一种离线消息集中处理方法和系统,以提供对离线消息的统一集中管理,避免数据丢失。为了实现上述目的,本发明实施例提供一种离线消息集中处理系统,所述系统包括:数据中心、消息转发器和负载均衡器;所述数据中心,接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;并根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;所述负载均衡器,根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器;所述消息转发器,当用户上线时,向所述数据中心发起获取离线消息的请求,接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。所述消息转发器,在成功发送所述离线消息给用户之后,向所述数据中心返回成功发送通知;所述数据中心,根据所述成功发送通知,删除已成功发送的离线消息。所述消息转发器,还用于将其当前的负载情况告知所述负载均衡器;所述负载均衡器,具体用于与首次登录的用户建立连接,根据链路状况以及所述消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器。所述消息转发器,还用于当用户登录时,根据用户的会话标识向认证服务器进行验证,验证通过则建立与该用户的连接,否则拒绝该用户登录。所述消息转发器,还用于更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心;所述数据中心,还用于维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状态对来自所述应用系统的消息进行处理。所述系统还包括:连接不同机房内的多个数据中心的代理托管模块;所述数据中心,还用于将存储的离线消息通过所述代理托管模块同步至其它机房;当用户当前的在线状态发生变化时,通知所述代理托管模块进行用户状态更新。为了实现上述目的,本发明实施例还提供一种离线消息集中处理方法,所述方法包括:数据中心接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器;当用户上线时,与该用户对应的消息转发器向所述数据中心发起获取离线消息的请求;所述数据中心根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;所述消息转发器接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。所述方法还包括:在成功发送所述离线消息给用户之后,所述消息转发器向所述数据中心返回成功发送通知;所述数据中心根据所述成功发送通知,删除已成功发送的离线消息。所述负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器具体包括:所述负载均衡器与首次登录的用户建立连接,根据链路状况以及消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器。所述方法还包括:所述消息转发器更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心;所述数据中心维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状态对来自所述应用系统的消息进行处理。本发明的有益效果在于:本发明实施例的离线消息集中处理方法与系统,通过对离线消息进行统一管理和备份,避免了现有技术中离线消息分散存储所带来的弊端,提升了用户的使用体验。
图1是本发明实施例离线消息集中处理系统的架构图;图2是本发明实施例离线消息集中处理方法的整体流程图;图3是本发明实施例的离线消息发送处理流程图;图4是本发明实施例的用户获取离线消息的处理流程图;图5是本发明实施例的用户登录流程图;图6是本发明实施例的跨系统结构原理图;图7是本发明实施例离线消息集中处理方法的详细流程图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明权利要求保护的范围。图1是本发明实施例离线消息集中处理系统的架构图。如图1所示,该系统包括三大部分:数据中心(Data Center, DC),消息转发器(Message Broker, MB)以及负载均衡器(Load Balance, LB)。数据中心连接应用系统(APP)和消息转发器;消息转发器连接数据中心、负载均衡器以及客户端;负载均衡器连接消息转发器和客户端。所述数据中心,接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;并根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;所述负载均衡器,根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器;所述消息转发器,当用户上线时,向所述数据中心发起获取离线消息的请求,接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。具体地,应用系统(APP)是产生即时消息的系统应用程序,比如快玩玩博;所述数据中心在判断用户在线时,直接通过与该用户连接的消息转发器将应用系统发送的在线消息推送给该用户;在判断用户离线、且用户设置了订阅离线消息时,将该用户的离线消息存储,并在消息转发器发出请求时,将该离线消息推送给该用户。具体地,所述消息转发器,在成功发送所述离线消息给用户之后,向所述数据中心返回成功发送通知;所述数据中心,根据所述成功发送通知,删除已成功发送的离线消息。具体地,所述消息转发器,还用于将其当前的负载情况告知所述负载均衡器;所述负载均衡器,具体用于与首次登录的用户建立连接,根据链路状况以及所述消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器。具体地,所述消息转发器,还用于当用户登录时,根据用户的会话标识(sessionid)向认证服务器进行验证,验证通过则建立与该用户的连接,否则拒绝该用户登录。具体地,所述消息转发器,还用于更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心;所述数据中心,还用于维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状态对来自所述应用系统的消息进行处理。可选地,所述系统还包括:连接不同机房内的多个数据中心的代理托管模块;所述数据中心,还用于将存储的离线消息通过所述代理托管模块同步至其它机房;当用户当前的在线状态发生变化时,通知所述代理托管模块进行用户状态更新。数据中心之间由代理托管模块(Proxy)对接,以完成数据跨系统处理。在实际网络应用中,数据中心可分为电信和网通两个,分别用两台服务器,保持总量200万以上的客户端并可继续扩充。可选地,本实施例中,App与DC之间采用基于TCP的字符串型通信协议,类似于http协议,分为消息头部和消息体。消息头和消息体使用CRLF(回车换行,carriagereturn/line feed)分割。消息头部中的字段名和值使用空格分割,字段之间使用CRLF分害I]。除App与DC之外,其它通信协议是二进制通信协议。其中Message Broker与DC及Load balance之间的通信是基于TCP传输协议,而与客户端有关的通信都是基于Μ)Ρ传输协议。当使用UDP传输协议,需要考虑可靠性,当数据包丢失时,需要重传,并且当数据包较大时(大于512字节),就需要分包。可选地,本实施例中,客户端的心跳包大小为16+46 = 62Byte。假设100万用户每隔30秒发送心跳包,那么Message Broker端总使用带宽大约为62Mbyte/30s*8 =16.5Mbit/s。消息转发器与客户端的通信数据都采用某种加密算法进行加密,如:AES。下面详细描述系统中各组件的功能。I)数据中心主要实现用户状态管理、离线消息管理和数据选路分发等功能。消息转发器通过定时心跳消息告知和更新当前在线的用户状态,数据中心维护整个系统的在线用户状态;应用系统(App)产生消息发送至数据中心,如果数据需要存储,那么数据中心存储该消息,然后将消息分发给相应的消息转发器。如果消息转发器发送成功那么提示数据中心删除该消息。当该用户上线时,消息转发器向数据中心发起获取离线消息的请求,然后数据中心根据消息的接受者将消息分发至相应的消息转发器,消息转发器转发消息成功与否的状态告知数据中心,成功则删除该离线消息。消息传送方式有一对一和一对多两种。比如回复消息为一对一的传送方式,广播消息和被订阅的消息则为一对多的传送方式。其中,一对多的消息可以分为两大类:定向和非定向的。确切知道是传送给哪些用户的一对多的消息定义为定向的消息,不明确知道需要传送给哪些用户的一对多的消息则为非定向的。根据以上定义,广播系统消息定义为非定向的;如果用户发布的消息被多人订阅了,那么该消息为定向的。本实施例中系统只会存储一对一的离线消息以及定向的一对多的离线消息,非定向的离线广播消息一般不存,但具有一定生命周期的离线广播消息除外,例如:给一定时间段内的登录用户发送的离线广播消息会被存储,直至生命周期结束后将被删除。2)消息转发器消息转发器的主要功能是将消息转发至指定的用户和检测用户的状态,以及进行用户认证。消息转发器需要维护的数据有:登陆客户端的“连接”信息和客户端的订阅列表。消息转发器通过心跳消息告知负载均衡器其当前的负载。当用户上线时,消息转发器向数据中心发起获取离线消息请求。数据中心查询是否有该用户的离线消息,如果有,那么推送离线消息给消息转发器,由消息转发器转发给用户。当用户登录时,消息转发器根据用户的session id(会话标识)向认证服务器进行验证,验证通过那么就建立与该用户的通信,否则拒绝该用户登录。3)负载均衡器主要功能是将客户端均衡分发至消息转发器和管理消息转发器。消息转发器向负载均衡器注册,和定时通报其自身的负载。客户端会向负载均衡器发送获取消息转发器请求,负载均衡器会选择一台消息转发器回复给客户端,然后客户端与相应的消息转发器进行通信。基于前述实施例的离线消息集中处理系统,本发明实施例还提供一种离线消息集中处理方法。图2是本发明实施例离线消息集中处理方法的整体流程图。如图2所示:该方法包括:S201、数据中心接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;S202、负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器;S202具体包括:所述负载均衡器与首次登录的用户建立连接,根据链路状况以及消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器;S203、当用户上线时,与该用户对应的消息转发器向所述数据中心发起获取离线消息的请求;S204、所述数据中心根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;S205、所述消息转发器接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。具体地,所述方法还包括:在成功发送所述离线消息给用户之后,所述消息转发器向所述数据中心返回成功发送通知;所述数据中心根据所述成功发送通知,删除已成功发送的离线消息。具体地,所述方法还包括:所述消息转发器更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心;所述数据中心维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状态对来自所述应用系统的消息进行处理。图3是本发明实施例的离线消息发送处理流程图。如图3所示,离线消息发送处理过程包括:App产生消息,发送至DC,DC回复App表示数据发送成功;当用户离线时,DC判断消息是否需要存储,如果是,那么存储离线消息至DC,否则进行下一步;当用户登录时,DC选路,将离线消息分发给与该登录用户连接的MB,对于非定向一对多广播消息,DC是将离线消息广播至所有的MB ;然后MB将离线消息发送给对应的登录用户,如果发送成功,那么MB通知DC删除存储的离线消息并结束该操作过程,否则丢弃该离线消息或不删除该离线消息,留待下次用户登录时发送并结束该过程。图4是本发明实施例的用户获取离线消息的处理流程图。如图4所示,离线消息处理过程包括:首先用户登录至为其分配的MB,然后MB向DC发送获取对应用户的离线消息请求;然后DC查询是否存在对应用户的离线消息,如果存在那么进行下一步,否则结束该操作过程;DC将离线消息推送给对应的MB,然后由MB发送给对应的用户,如果发送成功,那么MB通知DC删除存储的对应的离线消息并结束该操作过程,否则不删除离线消息并结束该过程。图5是本发明实施例的用户登录流程图,如图5所示,用户登录过程包括:客户端首先向LB发起获取MB请求,LB返回相应的MB地址信息给客户端,然后客户端向MB发起登录请求,带上自身的session id,然后MB根据该session id向认证服务器发起验证请求,如果通过验证,那么MB接受该客户端“连接”,否则拒绝该客户端。图6是本发明实施例的跨系统结构原理图,在跨系统结构中需要将数据中心的离线用户数据通过代理托管模块(Proxy)同步至其它系统的机房,同时将在线用户ID报告至Proxy,由Proxy提供查询用户状态接口。数据中心与Proxy的连接是基于TCP的长连接。数据中心将离线用户数据发送至Proxy,由Proxy将该数据转发至其它机房的数据中心。同时,将在线用户状态提交给Proxy,由Proxy提供查询用户状态的接口。当用户状态变化时,数据中心将通知Proxy做状态更新。当不是跨机房结构时,由数据中心提供查询用户状态的接口。图7是本发明实施例离线消息集中处理方法的详细流程图。如图7所示:应用系统产生离线消息,数据中心根据应用系统参数判断是否存储离线消息。如果用户在应用系统的程序上进行了离线消息存储的设置,则由数据中心对离线消息进行统一存储;如果目标用户上线,且离线消息在时限范围内,则由消息转发器向数据中心请求获取该离线消息,并推送至目标用户;在成功发送给目标用户后,通知数据中心删除该离线消息。如果用户没有进行离线消息存储的设置,则将该离线消息直接推送给与该用户对应的消息转发器,如果目标用户当前的状态为在线,则由消息转发器将该离线消息转发给目标用户,否则丢弃该离线消息。本发明实施例的离线消息集中处理方法与系统具有以下特点:1、离线消息由数据中心集中统一管理,便于备份和防止数据丢失;2、数据中心可扩展,数据中心之间由Proxy托管模块对接;3、用户链接分类,初次登录用户或者与消息转发器连接失败的用户由负载均衡器进行消息转发器的再分配,消息转发器仅用于维护用户的网络连接以及推送离线消息给用户;具体地,负载均衡器用于与第一次登录的用户建立连接,为用户选择链路最优的消息转发器,同时,在消息转发器出现问题时,为用户再分配消息转发器建立链路。本发明实施例的离线消息集中处理方法与系统,通过对离线消息进行统一管理和备份,避免了现有技术中离线消息分散存储所带来的弊端,提升了用户的使用体验。以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
权利要求
1.一种离线消息集中处理系统,其特征在于,所述系统包括:数据中心、消息转发器和负载均衡器; 所述数据中心,接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;并根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息; 所述负载均衡器,根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器; 所述消息转发器,当用户上线时,向所述数据中心发起获取离线消息的请求,接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。
2.根据权利要求1所述的系统,其特征在于, 所述消息转发器,在成功发送所述离线消息给用户之后,向所述数据中心返回成功发送通知; 所述数据中心,根据所述成功发送通知,删除已成功发送的离线消息。
3.根据权利要求1所述的系统,其特征在于, 所述消息转 发器,还用于将其当前的负载情况告知所述负载均衡器; 所述负载均衡器,具体用于与首次登录的用户建立连接,根据链路状况以及所述消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器。
4.根据权利要求1所述的系统,其特征在于, 所述消息转发器,还用于当用户登录时,根据用户的会话标识向认证服务器进行验证,验证通过则建立与该用户的连接,否则拒绝该用户登录。
5.根据权利要求1所述的系统,其特征在于, 所述消息转发器,还用于更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心; 所述数据中心,还用于维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状态对来自所述应用系统的消息进行处理。
6.根据权利要求1所述的系统,其特征在于,所述系统还包括:连接不同机房内的多个数据中心的代理托管模块; 所述数据中心,还用于将存储的离线消息通过所述代理托管模块同步至其它机房;当用户当前的在线状态发生变化时,通知所述代理托管模块进行用户状态更新。
7.一种离线消息集中处理方法,其特征在于,所述方法包括: 数据中心接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份; 负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器; 当用户上线时,与该用户对应的消息转发器向所述数据中心发起获取离线消息的请求; 所述数据中心根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;所述消息转发器接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括: 在成功发送所述离线消息给用户之后,所述消息转发器向所述数据中心返回成功发送通知; 所述数据中心根据所述成功发送通知,删除已成功发送的离线消息。
9.根据权利要求7所述的方法,其特征在于,所述负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器具体包括: 所述负载均衡器与首次登录的用户建立连接,根据链路状况以及消息转发器的负载情况,为用户分配最优的消息转发器;并在已分配的消息转发器出现故障时,为用户重新分配消息转发器。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括: 所述消息转发器更新用户当前的在线状态,并将用户当前的在线状态告知所述数据中心; 所述数据中心维护整个系统中用户当前的在线状态,以提供查询用户状态的接口,并根据系统中的用户当前的在线状 态对来自所述应用系统的消息进行处理。
全文摘要
一种离线消息集中处理方法与系统,所述系统包括数据中心、消息转发器和负载均衡器;所述数据中心,接收应用系统发送给用户的消息,如果用户离线,则将所述消息作为离线消息统一存储和备份;并根据所述消息转发器的请求,向所述消息转发器发送对应用户的离线消息;所述负载均衡器,根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器;所述消息转发器,当用户上线时,向所述数据中心发起获取离线消息的请求,接收所述数据中心返回的该用户的离线消息,将所述离线消息发送给对应的用户。本发明实施例的技术方案,通过对离线消息进行统一管理和备份,避免了现有技术中离线消息分散存储所带来的弊端,提升了用户的使用体验。
文档编号H04L29/06GK103200214SQ20121000603
公开日2013年7月10日 申请日期2012年1月10日 优先权日2012年1月10日
发明者曾毅, 伍正勇 申请人:深圳市快播科技有限公司