一种账号多开消息处理方法及系统的制作方法

文档序号:7982865阅读:212来源:国知局
一种账号多开消息处理方法及系统的制作方法
【专利摘要】本发明是关于一种账号多开消息处理方法及系统,所述的方法包括:数据中心接收应用系统发送给目标账号的消息,检测所述目标账号是否有至少两个客户端同时使用,所述数据中心用于维护系统账号当前的在线状态;在所述目标账户有至少两个客户端同时使用时,数据中心确定对与所述的至少两个客户端分别对应的至少两个消息转发器;所述至少两个消息转发器分别将发送给目标账号的消息转发给所述的至少两个客户端。本发明实施例提供的账号多开消息处理方法及系统可以让使用同一账号同时登陆的多台客户端同时受到应用系统发给目标账号的消息,保证用户不会漏接消息,提高了用户体验。
【专利说明】一种账号多开消息处理方法及系统
【技术领域】
[0001]本发明是关于通信【技术领域】,尤其是关于消息处理【技术领域】,具体来说是关于一种账号多开消息处理方法及系统。
【背景技术】
[0002]随着通信技术的发展,网络游戏业也在迅猛发展。在网络游戏和其他通信应用中,用户通过注册账号登录至服务器,通常,同一账号只能在一台客户端登录至服务器,如果其他客户端使用相同的账号登陆,则会提示无法登陆或将断开与之前登陆的客户端的链接。随着通信应用的不断发展,现有技术可以允许不同客户端使用同一账号同时登陆,以满足通信应用的需要,然而,当多个客户端使用同一账号进行登陆时,如果此时应用系统需要向该账号发送消息,则同时登陆的多个客户端中只有一台客户端可以收到该消息,其他客户端无法收到该消息,这就造成了应用系统发送的消息无法及时有效的发送至目标账号,用户会漏接重要的消息。

【发明内容】

[0003]为克服现有技术中存在的问题,本发明提供一种账号多开消息处理方法及系统。
[0004]本发明提供一种账号多开消息处理方法,所述的方法包括:数据中心接收应用系统发送给目标账号的消息,检测所述目标账号是否有至少两个客户端同时使用,所述数据中心用于维护系统账号当前的在线状态;在所述目标账户有至少两个客户端同时使用时,数据中心确定对与所述的至少两个客户端分别对应的至少两个消息转发器;所述至少两个消息转发器分别将发送给目标账号的消息转发给所述的至少两个客户端。
[0005]本发明还提供一种同账号多开消息处理系统,所述的系统包括数据中心、消息转发器和客户端,其中:数据中心接收应用系统发送给目标账号的消息,检测所述目标账号是否有至少两个客户端同时使用,所述数据中心用于维护系统账号当前的在线状态;在所述目标账户有至少两个客户端同时使用时,数据中心确定对与所述的至少两个客户端分别对应的至少两个消息转发器;所述至少两个消息转发器分别将发送给目标账号的消息转发给所述的至少两个客户端
[0006]本发明实施例提供的账号多开消息处理方法及系统可以让使用同一账号同时登陆的多台客户端同时受到应用系统发给目标账号的消息,保证用户不会漏接消息,提高了用户体验。
【专利附图】

【附图说明】
[0007]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
[0008]图1是本发明实施例同账号多开消息处理系统的架构图;
[0009]图2是本发明实施例提供的一种账号多开消息处理方法流程图;[0010]图3是本发明实施例提供的发送离线消息的处理流程图。
【具体实施方式】
[0011]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0012]本发明实施例提供一种账号多开消息处理方法及系统,以下结合附图对本发明进行详细说明。
[0013]实施例一
[0014]图1是本发明实施例同账号多开消息处理系统的架构图。如图1所示,该系统包括三大部分:数据中心(Data Center, DC),消息转发器(Message Broker, MB)以及负载均衡器(Load Balance,LB)0数据中心连接应用系统(APP)和消息转发器;消息转发器连接数据中心、负载均衡器以及客户端;负载均衡器连接消息转发器和客户端。
[0015]数据中心,接收应用系统发送给目标账号的消息,根据所述的消息获取目标账号信息,检测是否有至少两个客户端同时使用所述的目标账号信息登陆,如果至少两个客户端同时使用所述的目标账号信息登陆,则将所述的消息同时发送至所述至少两个客户端。
[0016]在本发明实施例中,数据中心主要实现用户状态管理和数据选路分发等功能。消息转发器通过定时心跳消息告知和更新当前在线的账号状态,数据中心维护整个系统的在线账号状态;应用系统(App)产生消息发送至数据中心,如果数据需要存储,那么数据中心存储该消息,然后将消息分发给相应的消息转发器。如果消息转发器发送成功那么提示数据中心删除该消息。
[0017]消息传送方式有一对一和一对多两种。比如回复消息为一对一的传送方式,广播消息和被订阅的消息则为一对多的传送方式。其中,一对多的消息可以分为两大类:定向和非定向的。确切知道是传送给哪些用户的一对多的消息定义为定向的消息,不明确知道需要传送给哪些用户的一对多的消息则为非定向的。根据以上定义,广播系统消息定义为非定向的;如果用户发布的消息被多人订阅了,那么该消息为定向的。
[0018]本实施例中系统只会存储一对一的离线消息以及定向的一对多的离线消息,非定向的离线广播消息一般不存,但具有一定生命周期的离线广播消息除外,例如:给一定时间段内的登录用户发送的离线广播消息会被存储,直至生命周期结束后将被删除。
[0019]在本发明实施例中,消息转发器接收数据中心发送的所述的消息,将所述的消息发送至所述至少两个客户端。消息转发器更新账号当前的在线状态,并将账号当前的在线状态告知所述数据中心;所述数据中心维护整个系统中账号当前的在线状态,以提供查询账号状态的接口,并根据系统中的账号当前的在线状态对来自所述应用系统的消息进行处理。当用户登录时,消息转发器根据用户的session id (会话标识)向认证服务器进行验证,验证通过那么就建立与该用户的通信,否则拒绝该用户登录。
[0020]在本发明实施例中,负载均衡器根据链路状况以及消息转发器的负载情况,为客户端分配对应的消息转发器,具体来说,负载均衡器与首次登录的客户端建立连接,根据链路状况以及消息转发器的负载情况,为客户端分配最优的消息转发器;并在已分配的消息转发器出现故障时,为客户端重新分配消息转发器。消息转发器向负载均衡器注册,和定时通报其自身的负载。客户端会向负载均衡器发送获取消息转发器请求,负载均衡器会选择一台消息转发器回复给客户端,然后客户端与相应的消息转发器进行通信。
[0021]可选地,所述系统还包括:连接不同机房内的多个数据中心的代理托管模块;所述数据中心,还用于将存储的离线消息通过所述代理托管模块同步至其它机房;当用户当前的在线状态发生变化时,通知所述代理托管模块进行用户状态更新。数据中心之间由代理托管模块(Proxy)对接,以完成数据跨系统处理。在实际网络应用中,数据中心可分为电信和网通两个,分别用两台服务器,保持总量200万以上的客户端并可继续扩充。
[0022]可选地,本实施例中,App与DC之间采用基于TCP的字符串型通信协议,类似于http协议,分为消息头部和消息体。消息头和消息体使用CRLF (回车换行,carriagereturn/line feed)分割。消息头部中的字段名和值使用空格分割,字段之间使用CRLF分害I]。除App与DC之外,其它通信协议是二进制通信协议。其中Message Broker与DC及Load balance之间的通信是基于TCP传输协议,而与客户端有关的通信都是基于Μ)Ρ传输协议。当使用UDP传输协议,需要考虑可靠性,当数据包丢失时,需要重传,并且当数据包较大时(大于512字节),就需要分包。
[0023]可选地,本实施例中,客户端的心跳包大小为16+46=62Byte。假设100万用户每隔30秒发送心跳包,那么Message Broker端总使用带宽大约为62Mbyte/30s*8=16.5Mbit/s。消息转发器与客户端的通信数据都采用某种加密算法进行加密,如:AES。
[0024]账号多开的消息实现方法:
[0025]以单机房考虑,数据存储结构设计如下:
[0026]I) Data Center上的存储结构
[0027]Data Center需要存储的数据主要有离线消息数据和在线用户信息。其中离线消息数据是持久化存储在硬盘上,而在线用户信息是存储在内存上的。定义消息接收者的ID为usrid,消息发送者的ID为sndrid,消息的内容表示为content,同时每一条消息都有全局唯一的编号uid,以及过期时间expire。其中uid可以由Data Center生成的UUID表示,或者由应用程序生成。如果消息是由应用程序多写到多服务器的话,那么应该由应用程序生成uid。
[0028]存储打算使用TC数据库来实现。离线消息数据采用B+树数据库来存储,分两个数据库文件存储,一个存储索引,一个存储实体数据。设计如下:
[0029]索引结构:
【权利要求】
1.一种账号多开消息处理方法,其特征在于,所述的方法包括: 数据中心接收应用系统发送给目标账号的消息,检测所述目标账号是否有至少两个客户端同时使用,所述数据中心用于维护系统账号当前的在线状态; 在所述目标账户有至少两个客户端同时使用时,数据中心确定对与所述的至少两个客户端分别对应的至少两个消息转发器; 所述至少两个消息转发器分别将发送给目标账号的消息转发给所述的至少两个客户端。
2.根据权利要求1所述的账号多开消息处理方法,其特征在于, 所述消息转发器更新相同目标账号下客户端的会话记录的当前在线状态,在所有客户端都退出消息转发器时通知所述数据中心,数据中心删除无客户端连接的消息转发器。
3.根据权利要求1所述的账号多开消息处理方法,其特征在于,所述的方法还包括: 负载均衡器根据链路状况以及消息转发器的负载情况,为客户端分配对应的消息转发器; 所述负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器具体包括: 所述负载均衡器与首次登录的客户端建立连接,根据链路状况以及消息转发器的负载情况,为客户端分配最优的消息转发器;并在已分配的消息转发器出现故障时,为客户端重新分配消息转发器。
4.根据权利要求1所述的账号多开消息处理方法,其特征在于,所述的方法还包括: 如果目标账号离线,则数据中心将所述消息作为离线消息统一存储和备份; 当客户端使用目标账号登录时,与所述客户端对应的消息转发器向所述数据中心发起获取离线消息的请求; 所述数据中心根据所述消息转发器的请求,向所述消息转发器发送对应的离线消息;所述消息转发器接收所述数据中心返回的离线消息,将所述离线消息发送给对应的客户端。
5.根据权利要求4所述的账号多开消息处理方法,其特征在于,所述方法还包括: 在成功发送所述离线消息给客户端之后,所述消息转发器向所述数据中心返回成功发送通知; 所述数据中心根据所述成功发送通知,删除已成功发送的离线消息。
6.一种账号多开消息处理系统,其特征在于,所述的系统包括数据中心、消息转发器和客户端,其中: 数据中心接收应用系统发送给目标账号的消息,检测所述目标账号是否有至少两个客户端同时使用,所述数据中心用于维护系统账号当前的在线状态;在所述目标账户有至少两个客户端同时使用时,数据中心确定对与所述的至少两个客户端分别对应的至少两个消息转发器; 所述至少两个消息转发器分别将发送给目标账号的消息转发给所述的至少两个客户端。
7.根据权利要求6所述的账号多开消息处理系统,其特征在于, 所述消息转发器更新相同目标账号下客户端的会话记录的当前在线状态,在所有客户端都退出消息转发器时通知所述数据中心; 所述的数据中心删除无客户端连接的消息转发器。
8.根据权利要求6所述的账号多开消息处理系统,其特征在于,所述的系统还包括: 负载均衡器,用于根据链路状况以及消息转发器的负载情况,为客户端分配对应的消息转发器; 所述负载均衡器根据链路状况以及消息转发器的负载情况,为用户分配对应的消息转发器具体包括: 所述负载均衡器与首次登录的客户端建立连接,根据链路状况以及消息转发器的负载情况,为客户端分配最优的消息转发器;并在已分配的消息转发器出现故障时,为客户端重新分配消息转发器。
9.根据权利要求6所述的账号多开消息处理系统,其特征在于, 如果目标账号离线,则数据中心将所述消息作为离线消息统一存储和备份; 当客户端使用目标账号登录时,与所述客户端对应的消息转发器向所述数据中心发起获取离线消息的请求; 所述数据中心根据所述消息转发器的请求,向所述消息转发器发送对应的离线消息;所述消息转发器接收所述数据中心返回的离线消息,将所述离线消息发送给对应的客户端。
10.根据权利要求9所述的账号多开消息处理系统,其特征在于, 在成功发送所述离线消息给客户端之后,所述消息转发器向所述数据中心返回成功发送通知; 所述数据中心根据所述成功发送通知,删除已成功发送的离线消息。
【文档编号】H04L29/08GK103685357SQ201210327204
【公开日】2014年3月26日 申请日期:2012年9月6日 优先权日:2012年9月6日
【发明者】曾毅, 向灿 申请人:深圳市快播科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1