为客户端分配应用服务器地址的方法、服务器及系统的制作方法

文档序号:7699662阅读:151来源:国知局
专利名称:为客户端分配应用服务器地址的方法、服务器及系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种为客户端分配应用服务器地址的方法、 服务器及系统。
背景技术
随着各种数据业务的发展,特别是即时消息业务的快速发展,对应用服务器的容 量要求越来越高,如何解决应用服务器的负荷分担和自动容灾问题,已经成为应用服务器 发展过程中的一个重要课题。现有技术中,通过增加多个应用服务器,为各个客户端需要配置固定的应用服务 器,来解决即时消息的负荷分担,利用备份服务器对应用服务器宕机情况进行自动容灾。假 设客户端A固定配置到应用服务器1,客户端B固定配置到应用服务器2。当应用服务器2 宕机时,根据配置的固定备份服务器地址重新登录。在实现本发明的过程中,发明人发现现有技术至少存在以下缺陷各个客户端需 要配置固定的应用服务器,当固定配置的应用服务器发生故障的时候,客户端就无法登陆 到应用服务器。

发明内容
本发明实施例提出一种为客户端分配应用服务器地址的方法、服务器及系统,以 根据客户端信息和应用服务器总数动态分配应用服务器。本发明实施例提供了一种为客户端分配应用服务器地址的方法,包括接收客户端登录请求消息,所述登录请求消息包含客户端信息;根据所述客户端信息,获取所述客户端的编号;根据所述客户端的编号和应用服务器总数,为所述客户端分配将登录的应用服务 器地址;向所述客户端发送登录响应消息,所述登录响应消息包含被分配的所述客户端将 登录的应用服务器地址。本发明实施例还提供了一种为客户端分配应用服务器地址的方法,包括接收聊天消息,所述聊天消息中包含接收方的客户端信息;根据所述接收方的客户端信息,获取所述接收方的客户端编号;根据所述接收方的客户端编号和应用服务器总数,获取所述接收方客户端所登录 的应用服务器编号;根据所述接收方的客户端所登录的应用服务器编号,路由所述聊天消息。本发明实施例还提供了一种连接服务器,包括接收单元,用于接收客户端登录请求消息,所述登录请求消息包含客户端信息;客户端编号获取单元,根据所述客户端信息,获取所述客户端的编号;分配单元,用于根据所述客户端信息为所述客户端分配将登录的应用服务器地址;发送单元,用于向所述客户端发送登录响应消息,所述登录响应消息包含被分配 的所述客户端将登录的应用服务器地址。本发明实施例还提供了一种应用服务器,包括接收单元,用于接收聊天消息,所述聊天消息中包含接收方的客户端信息;客户端编号获取单元,用于根据所述客户端信息,获取所述客户端编号;应用服务器编号获取单元,用于根据所述客户端编号和应用服务器总数,获取所 述客户端所登录的应用服务器编号;路由单元,用于根据所述客户端所登录的应用服务器编号,路由所述聊天消息。本发明实施例还提供了一种通信系统,包括连接服务器,用于接收客户端登录请求消息,所述登录请求消息包含客户端信息; 根据所述客户端信息,获取所述客户端的编号;根据所述客户端信息为所述客户端分配将 登录的应用服务器地址;向所述客户端发送登录响应消息,所述登录响应消息包含被分配 的所述客户端将登录的应用服务器地址;至少两个应用服务器,用于接收聊天消息,所述聊天消息中包含接收方的客户端 信息;根据所述客户端信息,获取所述客户端编号;根据所述客户端编号和应用服务器总 数,获取所述客户端所登录的应用服务器编号;根据所述客户端所登录的应用服务器编号, 路由所述聊天消息。上述实施例通过客户端信息获取客户端编号,并根据客户端编号与服务器总数为 客户端分配将登录的应用服务器地址,并且,在接收到登录请求消息的情况下为客户端分 配应用服务器,实现了根据客户端信息和应用服务器总数为客户端动态地分配将登录的应 用服务器,提高了用户的体验。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为本发明实施锣
图2为本发明实施锣
图3为本发明实施锣
图4为本发明实施锣
图5为本发明实施锣
图6为本发明实施锣
图7为本发明实施锣
图8为本发明实施锣
图9为本发明实施锣
图10为本发明实施
图11为本发明实施
一种连接服务器的结构示意图; 另一种连接服务器的结构示意图; 一种应用服务器的结构示意图; 一种通信系统的结构示意图; 一种为客户端分配应用服务器地址的方法的流程图; 另一种为客户端分配应用服务器地址的方法的流程图 另一种为客户端分配应用服务器地址的方法的流程图 又一种为客户端分配应用服务器地址的方法的流程图 又一种为客户端分配应用服务器地址的方法中的流程图 列又一种为客户端分配应用服务器地址的方法的流程图; 列又一种为客户端分配应用服务器地址的方法的流程图。
具体实施例方式
图1为本发明实施例一种连接服务器的结构示意图。该连接服务器包括接收单元11、客户端编号获取单元12、分配单元13及发送单元14。接收单元11用于接收客户端 登录请求消息,所述登录请求消息包含客户端名称、标识、地址等客户端信息。客户端编号 获取单元12根据所述客户端信息,获取所述客户端的编号。如通过对客户端名称或登录请 求消息中的其他客户端信息进行第五种信息-摘要算法(Message-Digest Algorithm 5, MD5)计算获得所述客户端的编号。分配单元13用于根据所述客户端信息为所述客户端分 配将登录的应用服务器地址;发送单元14用于向所述客户端发送登录响应消息,所述登录 响应消息包含所述被分配的客户端将登录的应用服务器地址。在应用服务器宕机或恢复 时,还可发送宕机消息或恢复消息通知各个应用服务器更新宕机列表或恢复列表。本实施例中,连接服务器通过根据客户端信息为客户端分配将登录的应用服务器 地址,实现了根据客户端名称为客户端随机分配服务器。所述分配单元13可具体用于对所述客户端编号按所述应用服务器总数取模,获 得取模值,并确定所述取模值为编号的应用服务器为正常工作状态;并且为所述客户端分 配将登录的应用服务器地址,所述应用服务器地址具体为所述取模值为编号的应用服务器 的地址。所述服务器总数根据服务器列表获得;所述服务器列表通过检测心跳消息建立,包 括应用服务器地址、应用服务器对应的客户端名称及工作状态;所述服务器总数为所述服 务器列表中所有应用服务器的数量。分配单元13在所述服务器列表中以所述取模值为编 号的应用服务器的工作状态为正常的情况下,将以所述取模值为编号的应用服务器分配给 发送所述登录请求消息的客户端,以便所述客户端自动登录分配的应用服务器。本实施例中,连接服务器通过MD5将客户端名称转换为客户端编号,并根据客户 端编号按服务器总数取值为客户端分配相应的应用服务器,使得连接服务器能够通过根据 客户端名称为客户端随机分配应用服务器。并且,本实施例中的服务器作为连接客户端与 应用服务器的唯一的连接服务器。用户通过客户端登录服务器时,只需输入连接服务器的 地址即可。图2为本发明实施例另一种连接服务器的结构示意图。该连接服务器可进一步包 括存储单元21。存储单元21用于存储服务器列表,所述服务器列表包括应用服务器地址; 此时,分配单元22可具体用于根据所述客户端的编号和应用服务器总数,在所述服务器列 表中的所述客户端信息,为所述客户端分配将登录的应用服务器地址。所述存储单元21存 储的服务器列表还包括各个应用服务器的能力和工作状态。另一连接服务器实施例可进一步包括更新单元。所述应用服务器发生宕机或宕 机后恢复时,更新单元更新所述服务器列表,将所述宕机的应用服务器的工作状态对应的 更新为宕机或正常。本实施例中,连接服务器通过存储单元存储服务器列表,使得连接服务器在本地 即可获得应用服务器总数及相应的工作状态,提高了连接服务器的分配效率。另一连接服务器实施例可进一步包括重新分配单元。该重新分配单元用于利用 所述服务器列表中工作状态为正常的应用服务器的能力,计算所述各个工作状态为正常的 应用服务器的权重;在所述各个工作状态为正常的应用服务器分配权重区间,并取随机数; 重新为所述客户端分配将登录的应用服务器的地址,所述客户端分配将登录的应用服务器 的地址具体为所述随机数所在的权重区间对应的应用服务器的地址。图3为本发明实施例一种应用服务器的结构示意图。该应用服务器包括接收单元31、客户端编号获取单元32、应用服务器编号获取单元33及路由单元34。接收单元31用 于接收聊天消息,所述聊天消息中包含接收方的客户端信息。客户端编号获取单元32用于 根据所述客户端信息,获取所述客户端编号;应用服务器编号获取单元33用于根据所述客 户端编号和应用服务器总数,获取所述客户端所登录的应用服务器编号;路由单元34用于 根据所述客户端所登录的应用服务器编号,路由所述聊天消息。路由单元34可具体用于确 定所述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用服务器编号 相同,路由所述聊天消息至接收方客户端;或者确定所述接收方的客户端登录的应用服务 器编号与发送方的客户端登录的应用服务器编号不相同,当存储的宕机列表或恢复列表中 不存在所述接收方的客户端编号时,从存储的服务器列表中获取所述接收方的客户端登录 的应用服务器编号对应的应用服务器地址,根据所述应用服务器地址,路由所述聊天消息; 当所述宕机列表或所述恢复列表中存在所述接收方的客户端编号时,根据所述宕机列表或 所述恢复列表中的客户端编号所登录的应用服务器地址,路由所述聊天消息。本实施例通过根据客户端信息为客户端分配将登录的应用服务器地址,实现了根 据客户端信息为客户端随机分配服务器。并且,在接收到登录请求消息的情况下为客户端 分配服务器,使得可通过唯一设备来实现该功能,从而使用户通过客户端登录服务器时,只 需输入连接服务器的地址便能够登录不同的应用服务器。另一应用服务器实施例可进一步包括更新单元。该更新单元用于根据宕机消息 更新宕机列表,或者根据恢复消息,更新恢复列表。图4为本发明实施例一种通信系统的结构示意图。该系统包括连接服务器和应用 服务器。连接服务器用于接收客户端登录请求消息,所述登录请求消息包含客户端信息;根 据所述客户端信息,获取所述客户端的编号;根据所述客户端信息为所述客户端分配将登 录的应用服务器地址;向所述客户端发送登录响应消息,所述登录响应消息包含所述被分 配的客户端将登录的应用服务器地址。应用服务器至少有两个,用于接收聊天消息,所述聊 天消息中包含接收方的客户端信息;根据所述客户端信息,获取所述客户端编号;根据所 述客户端编号和应用服务器总数,获取所述客户端所登录的应用服务器编号;根据所述客 户端所登录的应用服务器编号,路由所述聊天消息。在中,连接服务器可为上述连接服务器 实施例中的连接服务器,应用服务器可上述服务器实施例中的应用服务器。本实施例通过根据客户端信息为客户端分配将登录的应用服务器地址,实现了根 据客户端信息为客户端随机分配服务器。并且,在接收到登录请求消息的情况下为客户端 分配服务器,使得可通过唯一设备来实现该功能,从而使用户通过客户端登录服务器时,只 需输入连接服务器的地址便能够登录不同的应用服务器。图5为本发明实施例一种为客户端分配应用服务器地址的方法的流程图。该方法 可包括步骤501、连接服务器接收客户端登录请求消息,所述登录请求消息包含客户端信 息,如客户端名称、地址、标识等。步骤502、根据所述客户端信息,获取所述客户端的编号;如利用MD5计算获得客
户端编号。步骤503、根据所述客户端的编号和应用服务器总数,为所述客户端分配将登录的 应用服务器地址;可包括对所述客户端编号按所述应用服务器总数取模,获得取模值,并确定所述编号为取模值对应的应用服务器为正常工作状态;为所述客户端分配将登录的应 用服务器地址,所述应用服务器地址具体为所述编号为所述取模值对应的应用服务器的地址。步骤504、向所述客户端发送登录响应消息,所述登录响应消息包含所述被分配的 客户端将登录的应用服务器地址。如对所述客户端编号按服务器总数取模,获得取模值, 并确定所述编号为取模值对应的应用服务器为正常工作状态;为所述客户端分配将登录 的应用服务器地址,所述应用服务器地址具体为所述编号为取模值对应的应用服务器的地 址。本实施例通过根据客户端信息为客户端分配将登录的应用服务器地址,实现了根 据客户端信息为客户端随机分配服务器。并且,在接收到登录请求消息的情况下为客户端 分配服务器,使得可通过唯一设备来实现该功能,从而使用户通过客户端登录服务器时,只 需输入连接服务器的地址便能够登录不同的应用服务器。图6为本发明实施例另一种为客户端分配应用服务器地址的方法的流程图,其中 连接服务器连接多个应用服务器与多个客户端(图中只画了一个)的交互,客户端通过连 接服务器登录应用服务器1,假设此时该应用服务器1发生宕机,处理流程包括步骤601、客户端发送登录请求消息给统一的连接服务器,登录请求消息包括客户 端信息,客户端信息可以为客户端名称、客户端标识,客户端的地址等信息。客户端还可在 登录请求消息中设置一字段,该字段用于连接服务器分配好应用服务器后,将该应用服务 器地址填写该字段,并返回给客户端,以便客户端能够自动登陆该应用服务器中。步骤602、连接服务器根据登录请求消息的客户端信息获取客户端编号。连接服务器获取客户端编号的方式有多种,比如可以利用MD5算法,并根据客户 端名称获取客户端编号,也可以根据客户端标识,连接服务器随机分配唯一的客户端编号, 还可以根据客户端地址来分配唯一的客户端编号。例如,连接服务器可以通过根据客户端 名称进行MD5数值化,即将客户端名称对应的字符串通过字符串变换算法变换成一个整 数,该整数即为户端编号。步骤603、连接服务器根据客户端编号按应用服务器总数取模,进行取模计算,根 据取模后的值及各个应用服务器工作状态分配合适的应用服务器地址给发送客户端,并向 客户端返回登陆响应消息,该登陆响应消息中包含上述为客户端分配的应用服务器地址, 假设该应用服务器为应用服务器1,其中工作状态包含正常工作状态,宕机状态等。在连接服务器中存储了服务器列表,包括各个与连接服务器连接的应用服务器的 信息,该信息包括应用服务器地址、应用服务器编号、应用服务器的工作状态、应用服务器 业务转发能力及对应的客户端名称;并且该服务器列表还统计了与该连接服务器相连接的 所有的应用服务器的总数。连接服务器还根据对客户端编号按应用服务器总数取模,获取取模值,该取模值 即为客户端对应的应用服务器的编号。例如客户端编号为1,应用服务器总数为9,则取模 值为lmod9 = 1,该取模值即为客户端对应的应用服务器的编号。例如以取模值为服务器编号的应用服务器的工作状态正常时,将该应用服务器 1的地址填写登录请求消息中设置的字段,并向给客户端发送登录响应消息,该登录响应消 息包含上述的应用服务器1的地址。其中,各个应用服务器的工作状态由连接服务器通过检测应用服务器定时发送的心跳消息获得。以取模值为服务器编号的应用服务器的工作状态宕机时,执行步骤608,为客户端 重新分配应用服务器。步骤604、客户端收到登陆响应消息,根据该应用服务器1的地址登录该应用服务 器。客户端收到连接服务器返回的登陆响应消息后,根据该字段中的值直接登录连接服务 器分配的应用服务器1,无需用户重新输入登录地址。步骤605、应用服务器1由于自身原因或其他原因发生宕机。步骤606、连接服务器通过心跳消息检测到应用服务器1宕机,连接服务器把正常 应用服务器数目自动减一,并更新服务器列表和宕机列表,将服务器列表中该应用服务器 的工作状态更新为宕机。该宕机列表存储了连接服务器所有连接的应用服务器的宕机信 息,宕机信息包括该宕机服务器对应的客户端编号、宕机的应用服务器地址信息等。步骤607、客户端通过心跳消息检测到应用服务器1宕机后,客户端重新发送登录 请求消息到连接服务器。步骤608、连接服务器按步骤603的操作计算客户端应该登录的服务器后,通过服 务器列表判断该客户端登录的服务器状态是宕机状态。连接服务器根据各个应用服务器的 能力重新分配该客户端对应的应用服务器;并向客户端返回的的登录响应消息,该登录响 应消息包含重新分配该客户端对应的应用服务器的地址。例如根据各个应用服务器的能 力计算出各个正常工作服务器的权重,比如按权重从区间W,l]中为各个应用服务器分配 权重区间,然后在区间W,l]中取随机数。随机数落在某个权重区间,连接服务器根据则分 配对应的新应用服务器,如重新分配应用服务器2为客户端登录的应用服务器。步骤609、客户端接收登录响应消息后,重新登陆新的应用服务器2。步骤610、连接服务器向所有与其连接的应用服务器发送宕机消息,所述宕机消 息包含把上述原登录到宕机应用服务器对应的客户端编号、该客户端新登录应用服务器地 址、和宕机应用服务器地址等信息通知所有的应用服务器。步骤611、各应用服务器收到连接服务器发送的宕机消息后,更新本服务器存储宕 机列表。各应用服务器均维护有一个宕机列表,包括原登录到宕机应用服务器对应的客户 端标识、该客户端新登录应用服务器地及宕机应用服务器地址。该宕机列表初始状态为空, 当接收到连接服务器发送的宕机消息后进行填充。步骤612、宕机的应用服务器1由于建立连接或其他原因恢复正常工作。步骤613、连接服务器通过心跳消息检测到某宕机的应用服务器恢复正常,如应用 服务器1恢复正常,更新服务器列表,将宕机的应用服务器的工作状态恢复为正常。连接服 务器还向其他应用服务器发送恢复消息,该恢复消息中包含了该宕机的应用服务器恢复正
常的信息。步骤614、各个应用服务器接收到连接服务器恢复消息后,从宕机列表中的宕机信 息复制到恢复列表中,同时删除宕机列表中宕机信息。各应用服务器均维护有一个恢复列 表,包括原登录到宕机应用服务器对应的客户端标识、该客户端新登录应用服务器地及宕 机应用服务器地址。该恢复列表初始状态为空,当应用服务器接收到连接服务器发送的恢 复消息后进行填充。 至此,连接服务器已完成自动容灾和负荷分担。
客户端下线后,该方法可进一步包括以下步骤步骤615、客户端再次登录应用服务器,这时自动登录连接服务器重新分配的应用服务器2。步骤616、被登录的应用服务器2发现该客户端在恢复列表中,返回登录指示给客 户端,如该指示为空的信息,并删除恢复列表对应的记录。应用服务器2也可以通过发送消 息告知客户端重新登陆连接服务器,如在消息中设置某一字段的值,当客户端判断该字段 的值获知是否重新登录连接服务器。步骤617、客户端收到登录指示后,发送登录请求消息到连接服务器,请求获取新 的应用服务器;连接服务器收到登录请求消息后,从步骤602重新开始处理,为客户端重新 分配应用服务器。本实施例通过客户端分配适合的应用服务器,实现了根据客户端信息为客户端随 机分配服务器。并且,在登录的服务器宕机的情况下,根据正常应用服务器的能力为客户端 重新分配应用服务器,实现了多个应用服务器的自动容灾和负荷分担。在多个应用服务器进行自动容灾和负荷分担的过程中,可进一步包括应用服务 器收到客户端发送的即时消息和/或好友状态获取消息时,对接收方客户端编号、发送方 客户端编号分别按照上述方法获取对应的应用服务器编号,确定即时消息和/或好友状态 应该被发送的应用服务器地址,然后将该即时消息和/或好友状态信息发送到确定的应用 服务器中。确定即时消息和/或好友状态应该被发送的应用服务器地址过程包括在接收 方客户端编号获取到的对应的应用服务器编号与发送方客户端编号获取到的对应的应用 服务器编号相等的情况下,连接服务器将路由即时消息和/或好友状态信息路由到上述发 送方客户端编号获取到的对应的应用服务器。在接收方客户端编号获取到的对应的应用服 务器编号与发送方客户端编号获取到的对应的应用服务器编号不相等的情况下,若在连接 服务器中宕机列表和恢复列表中无接收方客户端编号,则获取接收方客户端对应的应用服 务器编号的地址,根据该地址,将即时消息和/或好友状态信息路由到该地址对应的应用 服务器;若在宕机列表或恢复列表中有接收方编号,则路由即时消息和/或好友状态信息 到宕机列表或恢复列表中客户端对应的新应用服务器。假设有5个应用服务器,其中各个应用服务器地址分别为ServerJK Server_U Server_2,Server_3,Server_4 ; 1个连接服务器,地址为IPl ;6个客户端,登录名称分别为 A、B、C、D、E、F。以该环境为例对本发明实施例为客户端分配应用服务器地址的方法作进一 步说明。如图7所示,包括步骤701、客户端A、B、C、D、E、F分别发送登录请求消息到连接服务器,登录请求 消息包括客户端信息,客户端信息可以为客户端名称、客户端标识,客户端的地址等信息。步骤702、连接服务器根据登录请求消息的客户端信息获取客户端编号。例如连接服务器对客户端名称A、B、C、D、E、F分别进行MD5数值化,得到客户端 编号。如客户端A的编号=MD5(A) =5,客户端B的编号=MD5(B) =6,客户端C的编号 =MD5 (C) = 11,客户端D的编号=MD5(D) = 7,客户端E的编号=MD5 (E) =8,客户端F 的编号=MD5 (F) = 9。步骤703、连接服务器根据客户端编号按应用服务器总数5取模5mod5 = 0, 6mod5 = 1,llmod5 = l,7mod5 = 2,8mod5 = 3,9mod5 = 4,即对应于客户端编号 5、6、11、7、8、9分别得到应用服务器编号(0,1,1,2,3,4),由于编号为0、1、2、3、4的应用服务器工作状 态均为正常,因而将这些应用服务器编号对应的地址通过登录响应消息地返回给相应的客 户端。即为客户端A分配编号为O的应用服务器,客户端B、C分配编号为1的应用服务器, 客户端D分配编号为2的应用服务器,客户端E分配编号为3的应用服务器,客户端F分配 编号为4的应用服务器。并且此时连接服务器中保存有如表1所示的服务器列表。表1服务器列表
二作状态ι正常ι正常ι正常ι正常ι正常步骤704、客户端A、B、C、D、E、F收到服务器列表后,分别登录编号为0,1,1,2,3,
4的应用服务器。步骤705、假设原编号为2的应用服务器出现宕机情况,即当连接服务器通过心跳 消息检测地址为SerVer_2的应用服务器宕机后,连接服务器中存储的正常工作应用服务 器总数目减1变为4,对正常工作应用服务器进行重新编号,并更新服务器列表。更新后的 服务器列表如表2所示。表2更新后的服务器列表
工作状态_ι正常ι正常ι宏机ι正常ι正常步骤706、当客户端D通过心跳消息检测第3个应用服务器宕机后,重新发送登录 请求到连接服务器。步骤707、连接服务器接收登录请求后,获知客户端D对应的地址SerVer_2为应用服务器已经宕机,根据其它各个正常应用服务器的即时消息转发能力计算出各个正常工作 服务器的权重,按权重从区间W,1]中为各个应用服务器分配权重区间,然后从区间W,1] 取随机数,将随机数所在权重区间对应的应用服务器分配给发送登录请求的客户端。并向 客户端D发送登录响应消息,该登录响应消息包含重新分配给客户端D的应用服务器的地 址。
例如,本发明实施例不限定计算应用服务器的方法,这里列举本发明实施例的一 种计算应用服务器的方法地址为server_o应用服务器的权重=权重0/(权重0+权重1+ 权重 3+权重 4) = 100/100+200+100+100 = 1/5,权重区间 W-1/5];地址为Server_l应用服务器的权重=权重1/(权重0+权重1+权重3+权重4) =200/100+200+100+100 = 2/5,权重区间(1/5-3/5];地址为Server_3应用服务器的权重=权重3/(权重0+权重1+权重3+权重4) =100/100+200+100+100 = 1/5,权重区间(3/5-4/5];地址为Server_4应用服务器的权重=权重4/(权重0+权重1+权重3+权重4) =100/100+200+100+100 = 1/5,权重区间(4/5-5/5];本发明实施例不限定分配应用服务器与客户端的对应关系方法,这里列举本发明 实施例的一种分配应用服务器与即时消息的客户端的对应关系的方法若在区间
取 得的随机数落在某个服务器的权重区间,即分配该服务器给客户端。其中,随机数通过函数 Random(0,l)计算获得,权重区间起点< Random(0,1) <=权重区间终点。假设Random(0, 1) = 0.3,1/5 < 0.3 < = 3/5属于(1/5-3/5]区间,因此得到客户端新登录的地址为 Server_l应用服务器。同时更新服务器列表,得到如表3所示的服务器列表。表3再次更新后的服务器列表 步骤708、客户端D根据连接服务器返回的登录响应消息,登录地址为ServerjS 用服务器。步骤709、连接服务器发送宕机消息到各个应用服务器。宕机消息格式如表4所
表4宕机消息格式 步骤710、各个应用服务器根据宕机消息,更新空的宕机列表,得到如表5所示的 更新后的宕机列表。表5更新后的宕机列表 步骤711、当连接服务器检测到地址为SerVer_2应用服务器恢复正常时,发送恢 复消息到各个应用服务器。恢复消息格式如表6所示。表6恢复消息格式 步骤712、各个应用服务器收到恢复消息,删除宕机列表中恢复服务器对应的记 录,同时在空的恢复列表中增加删除的记录。再次更新后的宕机列表如表7所示。表7再次更新后的宕机列表 更新后的恢复列表如表8所示。表8更新后的恢复列表 步骤713、客户端D登录地址为Server_l应用服务器,地址为Server_l应用服务 器检测到恢复列表中有客户端D,返回空的服务器列表给客户端D。步骤714、客户端D收到空的服务器列表后,发送登录请求给连接服务器,请求重 新获取新的应用服务器的地址。步骤715、连接服务器收到客户端D的登录请求,从步骤702开始处理,返回原地址 为SerVer_2应用服务器。并更新服务器列表,恢复到表1。
步骤716、客户端D重新登录到地址为Server_2应用服务器。本实施例中,连接服 务器在地址为SerVer_2应用服务器宕机的情况下,根据处于 正常工作状态的应用服务器的能力,为登录该应用服务器的客户端分配业务转发能力较高 的地址为server_i应用服务器,合理有效地实现了自动容灾与负荷分担。图8为本发明实施例又一种为客户端分配应用服务器地址的方法的流程图。该方 法包括步骤801、应用服务器接收客户端发送的聊天消息,所述聊天消息中包含接收方的 客户端信息。聊天消息可以具体为即时消息,或者即时消息与获取状态消息的结合。步骤802、应用服务器根据所述接收方的客户端信息,获取所述接收方的客户端编号。步骤803、应用服务器根据所述接收方的客户端编号和应用服务器总数,获取所述 接收方客户端所登录的应用服务器编号。步骤804、应用服务器根据所述接收方的客户端所登录的应用服务器编号,路由所 述聊天消息。上述步骤801中,所述聊天消息中还可包含发送方的客户端信息。此时,为客户 端分配应用服务器地址的方法还可包括根据所述发送方的客户端信息,获取所述发送方 的客户端编号;根据所述发送方的客户端编号和应用服务器总数,获取所述发送方的客户 端登录的应用服务器编号;上述步骤804可包括确定所述接收方的客户端登录的应用服 务器编号与发送方的客户端登录的应用服务器编号相同,路由所述聊天消息至接收方客户 端;或者,确定所述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用 服务器编号不相同,当存储的宕机列表或恢复列表中不存在所述接收方的客户端编号时, 从存储的服务器列表中获取所述接收方的客户端登录的应用服务器编号对应的应用服务 器地址,根据所述应用服务器地址,路由所述聊天消息;当所述宕机列表或所述恢复列表中 存在所述接收方的客户端编号时,根据所述宕机列表或所述恢复列表中的客户端编号所登 录的应用服务器地址,路由所述聊天消息。当连接服务器发送宕机消息时,该又一种为客户端分配应用服务器地址的方法实 施例还可包括应用服务器接收宕机消息,更新所述宕机列表。当连接服务器发送恢复消息时,该又一种为客户端分配应用服务器地址的方法实 施例还可包括应用服务器接收恢复消息,更新所述恢复列表。本实施例中,应用服务器能够根据即时消息中接收方的客户端信息获取接收方的 客户端编号,并根据客户端编号及应用服务器总数获取接收客户端所登录的应用服务器编 号,路由聊天消息,实现了聊天消息的智能路由。在上述图7对应的实施例的基础上,当客户端B发送即时消息“今晚7点开会”给 客户端C,并获取客户端C的状态信息时,如图9所示,本发明为客户端分配应用服务器地址 的方法实施例中路由聊天消息的过程包括步骤901、客户端B把即时消息“今晚7点开会”发送到地址为Servers应用服 务器,其中该即时消息还包含客户端C信息,该客户端C信息可以为客户端名称、客户端标 识、客户端的地址等信息;同时发送获取客户端C的状态信息的消息,或者将两个消息封装 成一个消息发送。
步骤902、地址为Servers应用服务器根据客户端C信息获取上述客户端C所登 录的应用服务器编号,并根据客户端B信息获取上述客户端B所登录的应用服务器编号,比 较客户端B所登录的应用服务器编号与客户端C所登录的应用服务器编号是否相同。例如参见上述步骤702和步骤703,地址为Server_l应用服务器分别对客户端 B、C进行MD5数值化,并按服务器总数5取模,分别得到取模值均为1 ; 客户端B、C按服务器总数取模后,因其取模值之差的绝对值为0,因此客户端C也 登录在本应用服务器,从而无需路由即时消息和好友状态信息到其他应用服务器。步骤903、由于客户端B所登录的应用服务器编号与客户端C所登录的应用服务 器编号相同,地址为server_l应用服务器根据客户端C登录的源地址转发即时消息“今晚 7点开会”给客户端C。步骤904、地址为Server_l获取客户端C的状态信息。步骤905、将上述客户端C的状态信息返回给客户端B。本实施例中,地址为server_l应用服务器能够根据即时消息中的客户端B信息及 客户端C信息转发即时消息,实现了即时消息的智能路由。并且,客户端B能够同时获取客 户端C的状态信息。当客户端B发送即时消息“今晚7点开会”给客户端A,同时获取客户端A的状态 信息时,如图10所示,本发明为客户端分配应用服务器地址的方法实施例中路由聊天消息 的过程还可包括步骤1001、客户端B把即时消息“今晚7点开会”发送到地址为ServerJ应用服 务器,其中该即时消息还包含客户端B信息,该客户端B信息可以为客户端名称、客户端标 识、客户端的地址等信息;同时发送获取客户端B的状态信息的消息,或者将两个消息封装 成一个消息发送。步骤1002、地址为ServerJ应用服务器根据客户端A信息获取上述客户端A所登 录的应用服务器编号,并根据客户端B信息获取上述客户端B所登录的应用服务器编号,比 较客户端B所登录的应用服务器编号与客户端A所登录的应用服务器编号是否相同。例如参见上述步骤702和步骤703,地址为Server_l应用服务器分别对客户端 A、B进行MD5数值化,获取客户端A、B的编号,并分别对客户端A、B的编号按服务器总数5 取模,分别得到取模值为0,1。客户端A、B按服务器总数取模后,因其取模值之差的绝对值 不为0,因此客户端A没有登录在本应用服务器。步骤1003、由于客户端B所登录的应用服务器编号与客户端A所登录的应用服务 器编号不相同,地址为server_i应用服务器在存储的检查宕机列表和恢复列表中查找,没 有获取客户端A的记录,执行步骤1004 ;否则,将即时消息和获取状态的消息路由到宕机列 表或恢复列表中客户端A对应的新应用服务器。步骤1004、地址为ServerJ应用服务器根据步骤1002获取的客户端A信息所登 录应用服务器编号,从存储的服务器列表中获取该应用服务器编号对应的地址,由于该应 用服务器编号为0,该应用服务器地址为server_0,然后转发即时消息“今晚7点开会”和 获取状态的消息到地址为ServerJ)应用服务器。步骤1005、地址为ServerJ)应用服务器根据客户端A登陆的源地址地址转发即时 消息“今晚7点开会”给客户端A,并获取客户端A的状态信息,按原路径返回给客户端B。
本实施例中,在地址为ServerJ)应用服务器正常的情况下,地址为Server_l应用 服务器根据客户端A信息及客户端B信息将即时消息转发到地址为ServerJ)应用服务器, 并且,客户端B能够通过地址为ServerJ)应用服务器获取客户端A的状态信息。 当客户端B发送即时消息“今晚7点开会”给客户端D,同时获取客户端D的状态 信息,且客户端D原登陆的应用服务器宕机时,如图11所示,本发明为客户端分配应用服务 器地址的方法实施例中路由聊天消息的过程还可包括步骤1101、客户端B把即时消息“今晚7点开会”发送到地址为ServerJ应用服 务器,同时发送获取客户端D状态信息的消息。步骤1102、地址为ServerJ应用服务器根据方客户端D信息获取上述客户端D所 登录的应用服务器编号,并根据客户端B信息获取上述客户端B所登录的应用服务器编号, 比较客户端B所登录的应用服务器编号与客户端D所登录的应用服务器编号是否相同。例如参见上述步骤702和步骤703,地址为Server_l应用服务器根据方客户端 D名称进行MD5数值化后,按服务器总数5取模,得到取模值2,该取模值就是为客户端D所 登录的应用服务器编号;同样地址为Servers应用服务器根据客户端B信息进行MD5数值 化后,按服务器总数5取模,得到取模值1,该取模值就是为客户端B所登录的应用服务器编 号。客户端B、D按服务器总数取模后,因其取模值之差的绝对值不为0,因此客户端A没有 登录在本应用服务器中。步骤1103、由于客户端B所登录的应用服务器编号与客户端D所登录的应用服务 器编号不相同,地址为server_i应用服务器查找存储的宕机列表和恢复列表中,发现有客 户端D的记录。步骤1104、地址为Server_l应用服务器查找宕机列表中客户端D对应的新的应用 服务器,获知客户端D登陆在本应用服务器中,从而无需路由即时消息和好友状态信息到 其他应用服务器。步骤1105、地址为ServerJ应用服务器根据客户端D登陆的源地址转发即时消息 “今晚7点开会”给客户端D,并获取客户端D的状态信息,按原路径返回给客户端B。本实施例中,在客户端D登陆的地址为SerVer_2应用服务器宕机的情况下,客户 端B登陆的地址为Servers应用服务器根据宕机列表和恢复列表直接转发即时消息到客 户端D,并获取客户端D的状态信息给客户端B,实现了路由即时消息过程中应用服务器的 自动容灾与负荷分担。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
一种为客户端分配应用服务器地址的方法,其特征在于,包括接收客户端登录请求消息,所述登录请求消息包含客户端信息;根据所述客户端信息,获取所述客户端的编号;根据所述客户端的编号和应用服务器总数,为所述客户端分配将登录的应用服务器地址;向所述客户端发送登录响应消息,所述登录响应消息包含被分配的所述客户端将登录的应用服务器地址。
2.根据权利要求1所述的方法,其特征在于,所述根据所述客户端信息,获取所述客户 端的编号,包括根据所述客户端信息,利用第五种信息_摘要算法计算获得客户端编号。
3.根据权利要求1所述的方法,其特征在于,所述根据所述客户端的编号和应用服务 器总数,为所述客户端分配将登录的应用服务器地址,包括对所述客户端编号按所述应用服务器总数取模,获得取模值,并确定所述编号为取模 值对应的应用服务器为正常工作状态;为所述客户端分配将登录的应用服务器地址,所述应用服务器地址具体为所述编号为 所述取模值对应的应用服务器的地址。
4.根据权利要求1所述的方法,其特征在于,还包括 存储服务器列表,所述服务器列表包括应用服务器地址;所述根据所述客户端的编号和应用服务器总数,为所述客户端分配将登录的应用服务 器地址,具体为所述根据所述客户端的编号和应用服务器总数,在所述服务器列表中,为 所述客户端分配将登录的应用服务器地址。
5.根据权利要求4所述的方法,其特征在于,所述服务器列表还包括各个应用服务器 的能力和工作状态;为所述客户端分配的应用服务器发生宕机,更新所述服务器列表,将所述应用服务器 的工作状态修改为宕机;接收所述客户端再次发送的登录请求消息;根据所述各个应用服务器的能力,重新为所述客户端分配将登录的应用服务器的地址;向所述客户端发送登录响应消息,所述登录响应消息包含重新被分配的所述客户端将 登录的应用服务器地址。
6.根据权利要求5所述的方法,其特征在于,所述根据所述各个应用服务器的能力,重 新为所述客户端分配将登录的应用服务器的地址,包括利用所述服务器列表中工作状态为正常的应用服务器的能力,计算所述各个工作状态 为正常的应用服务器的权重;在所述各个工作状态为正常的应用服务器分配权重区间,并取随机数; 重新为所述客户端分配将登录的应用服务器的地址,所述客户端分配将登录的应用服 务器的地址具体为所述随机数所在的权重区间对应的应用服务器的地址。
7.根据权利要求5所述的方法,其特征在于,还包括所述宕机的应用服务器恢复后,更新所述服务器列表,将所述宕机的应用服务器的工作状态恢复为正常;向其他各个应用服务器发送恢复消息,该恢复消息中包含了所述宕机的应用服务器恢 复正常的信息;以便于所述各个应用服务器更新宕机列表和恢复列表。
8.一种为客户端分配应用服务器地址的方法,其特征在于,包括 接收聊天消息,所述聊天消息中包含接收方的客户端信息; 根据所述接收方的客户端信息,获取所述接收方的客户端编号;根据所述接收方的客户端编号和应用服务器总数,获取所述接收方客户端所登录的应 用服务器编号;根据所述接收方的客户端所登录的应用服务器编号,路由所述聊天消息。
9.根据权利要求8所述的方法,其特征在于,所述聊天消息中还包含发送方的客户端 fn息;所述方法还包括根据所述发送方的客户端信息,获取所述发送方的客户端编号;根 据所述发送方的客户端编号和应用服务器总数,获取所述发送方的客户端登录的应用服务 器编号;所述根据所述接收方的客户端登录的应用服务器编号,路由所述聊天消息,包括 确定所述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用服务 器编号相同,路由所述聊天消息至接收方客户端;或者确定所述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用服务 器编号不相同,当存储的宕机列表或恢复列表中不存在所述接收方的客户端编号时,从存 储的服务器列表中获取所述接收方的客户端登录的应用服务器编号对应的应用服务器地 址,根据所述应用服务器地址,路由所述聊天消息;当所述宕机列表或所述恢复列表中存在 所述接收方的客户端编号时,根据所述宕机列表或所述恢复列表中的客户端编号所登录的 应用服务器地址,路由所述聊天消息。
10.根据权利要求9所述的方法,其特征在于,还包括接收宕机消息,更新所述宕机列 表;或者接收恢复消息,更新所述恢复列表。
11.一种连接服务器,其特征在于,包括接收单元,用于接收客户端登录请求消息,所述登录请求消息包含客户端信息; 客户端编号获取单元,根据所述客户端信息,获取所述客户端的编号; 分配单元,用于根据所述客户端信息为所述客户端分配将登录的应用服务器地址; 发送单元,用于向所述客户端发送登录响应消息,所述登录响应消息包含被分配的所 述客户端将登录的应用服务器地址。
12.根据权利要求11所述的连接服务器,其特征在于,所述分配单元具体用于对所述 客户端编号按所述应用服务器总数取模,获得取模值,并确定所述取模值为编号的应用服 务器为正常工作状态;并且为所述客户端分配将登录的应用服务器地址,所述应用服务器 地址具体为所述取模值为编号的应用服务器的地址。
13.根据权利要求11所述的连接服务器,其特征在于,还包括存储单元,用于存储服务器列表,所述服务器列表包括应用服务器地址; 所述分配单元具体用于根据所述客户端的编号和应用服务器总数,在所述服务器列表中的所述客户端信息,为所述客户端分配将登录的应用服务器地址。
14.根据权利要求13所述的连接服务器,其特征在于,所述存储单元存储的服务器列 表还包括各个应用服务器的能力和工作状态;所述连接服务器还包括更新单元,用于所述应用服务器发生宕机或宕机后恢复时,更 新所述服务器列表,将所述宕机的应用服务器的工作状态对应的更新为宕机或正常。
15.根据权利要求11所述的连接服务器,其特征在于,还包括重新分配单元,用于利 用所述服务器列表中工作状态为正常的应用服务器的能力,计算所述各个工作状态为正常 的应用服务器的权重;在所述各个工作状态为正常的应用服务器分配权重区间,并取随机 数;重新为所述客户端分配将登录的应用服务器的地址,所述客户端分配将登录的应用服 务器的地址具体为所述随机数所在的权重区间对应的应用服务器的地址。
16.一种应用服务器,其特征在于,包括接收单元,用于接收聊天消息,所述聊天消息中包含接收方的客户端信息;客户端编号获取单元,用于根据所述客户端信息,获取所述客户端编号;应用服务器编号获取单元,用于根据所述客户端编号和应用服务器总数,获取所述客 户端所登录的应用服务器编号;路由单元,用于根据所述客户端所登录的应用服务器编号,路由所述聊天消息。
17.根据权利要求16所述的应用服务器,其特征在于,所述路由单元,具体用于确定所 述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用服务器编号相同, 路由所述聊天消息至接收方客户端;或者确定所述接收方的客户端登录的应用服务器编号与发送方的客户端登录的应用 服务器编号不相同,当存储的宕机列表或恢复列表中不存在所述接收方的客户端编号时, 从存储的服务器列表中获取所述接收方的客户端登录的应用服务器编号对应的应用服务 器地址,根据所述应用服务器地址,路由所述聊天消息;当所述宕机列表或所述恢复列表中 存在所述接收方的客户端编号时,根据所述宕机列表或所述恢复列表中的客户端编号所登 录的应用服务器地址,路由所述聊天消息。
18.根据权利要求16所述的应用服务器,其特征在于,还包括更新单元,用于根据宕机消息更新宕机列表,或者根据恢复消息更新恢复列表。
19.一种通信系统,其特征在于,包括连接服务器,用于接收客户端登录请求消息,所述登录请求消息包含客户端信息;根据 所述客户端信息,获取所述客户端的编号;根据所述客户端信息为所述客户端分配将登录 的应用服务器地址;向所述客户端发送登录响应消息,所述登录响应消息包含被分配的所 述客户端将登录的应用服务器地址;至少两个应用服务器,用于接收聊天消息,所述聊天消息中包含接收方的客户端信息; 根据所述客户端信息,获取所述客户端编号;根据所述客户端编号和应用服务器总数,获取 所述客户端所登录的应用服务器编号;根据所述客户端所登录的应用服务器编号,路由所 述聊天消息。
全文摘要
本发明涉及一种为客户端分配应用服务器地址的方法、服务器及系统,方法包括接收客户端登录请求消息,所述登录请求消息包含客户端信息;根据所述客户端信息,获取所述客户端的编号;根据所述客户端的编号和应用服务器总数,为所述客户端分配将登录的应用服务器地址;向所述客户端发送登录响应消息,所述登录响应消息包含被分配的所述客户端将登录的应用服务器地址。通过根据客户端信息为客户端分配将登录的应用服务器地址,实现了根据客户端信息为客户端分配应用服务器。
文档编号H04L12/24GK101860493SQ20091008191
公开日2010年10月13日 申请日期2009年4月8日 优先权日2009年4月8日
发明者张燕斌, 李贵华, 梁秀品, 沈庆春, 肖雅文 申请人:华为软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1