通信方法和系统与流程

文档序号:11524255阅读:230来源:国知局
通信方法和系统与流程

本发明涉及互联网技术领域,尤其涉及一种通信方法和系统。



背景技术:

随着互联网技术的发展,各种各样的网络应用如雨后春笋般不断涌现,比如视频直播类应用、网络游戏类应用等,以丰富人们的娱乐生活。

对于一应用提供方来说,可能有海量用户使用其提供的网络应用,如果该应用提供方仅部署一台服务器,很有可能无法满足海量用户的使用需求,因此,应用提供方往往需要配置多台服务器。当配置有多台服务器时,当用户需要使用网络应用时,为该用户分配哪个服务器为其提供服务是需要面临的首要问题。进一步地,在进行服务器分配的过程中,如何实现尽量平均的分配,以使得各服务器的接入用户相对均衡,并且保证为用户分配的服务器可用的,是亟待解决的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种通信方法和系统,用以为用户分配可用的服务器,且提高服务器分配的均衡性。

本发明实施例提供一种通信方法,实现于管理平台侧,包括:

接收客户端发送的服务器分配请求,所述服务器分配请求中包括所述客户端对应的全局唯一标识符,所述全局唯一标识符由所述客户端采用预设散列算法对所述客户端对应的终端设备标识和应用标识计算获得;

获取正常服务器数量,所述正常服务器是指工作状态正常的服务器;

以所述全局唯一标识符的后n位字符的加和对所述正常服务器数量进行取余运算,根据运算结果确定目标服务器;

向所述客户端发送所述目标服务器的ip地址,以供所述客户端与所述目标服务器建立通信连接。

本发明实施例提供另一种通信方法,实现于用户的客户端侧,包括:

采用预设散列算法对客户端对应的终端设备标识和应用标识进行计算,以获得所述客户端对应的全局唯一标识符;

向管理平台发送服务器分配请求,所述服务器分配请求中包括所述全局唯一标识符,以使所述管理平台根据所述全局唯一标识符的后n位字符的加和对当前获得的正常服务器数量进行取余运算,以根据运算结果确定目标服务器;

接收所述管理平台发送的所述目标服务器的ip地址,以根据所述ip地址与所述目标服务器建立通信连接。

本发明实施例提供一种通信系统,包括:

客户端、管理平台和多个服务器;

所述客户端,用于采用预设散列算法对客户端对应的终端设备标识和应用标识进行计算,以获得所述客户端对应的全局唯一标识符;向所述管理平台发送包括所述全局唯一标识符的服务器分配请求;根据所述管理平台反馈的目标服务器的ip地址,与所述目标服务器建立通信连接;

所述管理平台,用于响应于所述服务器分配请求,获取正常服务器数量;以所述全局唯一标识符的后n位字符的加和对所述正常服务器数量进行取余运算,根据运算结果确定目标服务器;将所述目标服务器的ip地址发送至所述客户端。

本发明实施例提供的通信方法和系统,客户端采用预设散列算法对其对应的终端设备标识和应用标识计算,以获得全局唯一标识符(globallyuniqueidentifier,简称guid),进而向管理平台发送携带该guid的服务器分配请求,请求管理平台为其分配服务器。管理平台首先基于对各服务器的工作状态正常与否的监测,获得工作状态正常的服务器的数量,以保证为客户端分配的服务器是可用的;进而以guid的后n位字符的加和对该数量进行取余运算,确定目标服务器,之后向客户端发送该目标服务器的ip地址,以供客户端与目标服务器建立通信连接。由于获得的服务器数量是对应于当前工作状态正常的服务器的,可以保证为客户端分配的服务器的有效性。另外,由于不同终端设备的标识不同、不同应用的应用标识不同,以这两类标识作为输入,使得对于不同客户端来说,散列算法的输入各不相同且长度较长,从而可以提高不同客户端对应的guid的差异性,且也可以提高散列算法输出的散列均匀性,从而基于guid作为服务器分配依据也可以提高服务器的分配均衡性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的通信方法实施例一的流程图;

图2为本发明实施例提供的通信方法实施例二的流程图;

图3为本发明实施例提供的通信方法实施例三的流程图;

图4为本发明实施例提供的通信系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

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

图1为本发明实施例提供的通信方法实施例一的流程图,本实施例提供的该通信方法可以由一通信系统中的管理平台来执行,该通信系统中可以包括客户端、管理平台和多个服务器。实际应用中,该通信系统中的多个服务器可以提供一种网络应用也可以提供多种网络应用,但是,对应于某种网络应用的服务器的数量也是多个。对应的,客户端可以是对应于一种网络应用的客户端,也可以是对应于多种网络应用的多个客户端。如图1所示,该方法包括如下步骤:

步骤101、接收客户端发送的服务器分配请求,服务器分配请求中包括客户端对应的guid。

具体地,该guid由客户端采用预设散列算法对客户端对应的终端设备标识和应用标识计算获得。

其中,该预设散列算法比如可以是md5算法、sha1算法等。

其中,应用标识可以是该客户端所对应的网络应用的应用名称等用于表示该应用的标识。终端设备标识是指该客户端所安装于的终端设备的标识,比如可以包括终端设备的设备序列号、国际移动设备识别码(internationalmobileequipmentidentity,简称imei)等。

值得说明的是,本实施例中仅举例说明预设散列算法的输入包括客户端对应的终端设备标识和应用标识,但是实际应用中,输入并不限于这两类标识,还可以包括其他标识,比如还可以包括用户标识,该用户标识比如可以为用户的电话号码、应用账号等。

散列算法的作用是对输入的参数进行一定的散列运算,得到固定长度的输出,即上述guid的长度固定,一般为128位二进制字符,即16字节字符。通常,为方便表示,可以将其转换为32位十六进制字符。

本实施例中,为了提高散列算法输出结果的散列程度,从两个层面对散列算法的输入参数进行设置:提高输入参数的长度,提高输入参数的差异性。

为此,由于不同终端设备的标识各不相同、不同应用的标识各不相同,甚至不同用户的标识往往相同的概率也较低,因此,以多种标识作为散列算法的输入参数,可以使得散列算法的输入参数间具有明显的差异性。而且,以多种标识作为输入参数,也使得散列算法的输入长度较长。

步骤102、获取正常服务器数量。

其中,正常服务器是指工作状态正常的服务器。

实际应用中,随着多个服务器的不断运行,可能会出现部分服务器工作状态异常的情况。本实施例中,为了保证为客户端分配的服务器的有效性,避免为客户端分配了不能有效工作的服务器,管理平台需要监测各服务器的工作状态,以便于了解各服务器的工作状态。

可选地,管理平台可以以一定时间间隔周期性分别对各服务器进行探活,以监测各服务器的工作状态,进而确定仍存活的服务器的数量作为正常服务器数量。和/或,可选地,管理平台可以以一定时间间隔周期性分别获取各服务器的负载压力,以监测各服务器的工作状态,进而确定负载压力低于预设阈值的服务器的数量作为正常服务器数量。

具体地,上述探活可以是基于管理平台与服务器之间的ping、pong探活机制实现的,即管理平台向服务器发送一ping探活消息,如果在一定时间内接收到该服务器反馈的pang响应消息,则说明该服务器工作状态正常,反之,如果在一定时间内没有接收到该服务器反馈的pang响应消息,则说明该服务器工作状态异常。

可选地,上述服务器的负载压力可以以服务器的cpu占用率等参数表征。

步骤103、以guid的后n位字符的加和对正常服务器数量进行取余运算,以根据运算结果确定目标服务器。

对应于guid的十六进制的表示形式,n取值比如为6,即后6位,此时对应于二进制表示形式的后3个字节。

需要说明的是,本发明实施例中,对于上述多个服务器,逻辑上,可以将这多个服务器放入一个队列中。实际上,放入队列中的比如可以是服务器的标识,每个服务器具有唯一固定标识。当管理平台对多个服务器进行工作状态的监测,确定其中部分服务器工作状态异常时,可以将对应的异常服务器从该队列中移除。

举例来说,假设总共10台服务器,t1时刻管理平台对多个服务器进行工作状态的监测,确定全部服务器工作状态良好,则此时的服务器队列中包括按照预设顺序依次置入的全部服务器。此时,正常服务器数量为10,假设经过步骤103的计算后得到的运算结果为5,则认为排在队列中的第6个服务器为目标服务器。再假设t2时刻管理平台对多个服务器进行工作状态的监测,确定其中的某服务器工作状态异常,则此时的服务器队列中将会删除该异常的服务器,假设该异常服务器是原来排在第6个的服务器。此时,正常服务器数量变为9,假设经过步骤103的计算后得到的运算结果仍为5,则由于原来排在第6位的服务器已经被删除出队列,原来排在第7位的服务器现在变为排在第6位,则此时认为现在排在队列中的第6个服务器即原来排在第7位的服务器为目标服务器。

值得说明的是,本实施例中,假设经过步骤103计算得到的为m,则对应于服务器队列中排在第m+1位的服务器。

步骤104、向客户端发送目标服务器的ip地址,以供客户端与目标服务器建立通信连接。

管理平台中预先存储有各服务器的ip地址,具体地,比如存储有各服务器的ip地址与服务器标识间的对应关系表。从而,在确定出目标服务器标识后,查询该对应关系,得到对应的ip地址。

本实施例中,客户端采用预设散列算法对其对应的终端设备标识和应用标识计算,以获得guid,进而向管理平台发送携带该guid的服务器分配请求,请求管理平台为其分配服务器。管理平台首先基于对各服务器的工作状态正常与否的监测,获得工作状态正常的服务器的数量,以保证为客户端分配的服务器是可用的。进而以guid的后n位字符的加和对该数量进行取余运算,以确定目标服务器,之后向客户端发送该目标服务器的ip地址,以供客户端与目标服务器建立通信连接。由于获得的服务器数量是对应于当前工作状态正常的服务器的,可以保证为客户端分配的服务器的有效性。另外,由于不同终端设备的标识不同、不同应用的应用标识不同,以这两类标识作为输入,使得对于不同客户端来说,散列算法的输入各不相同且长度较长,从而可以提高不同客户端对应的guid的差异性,且也可以提高散列算法输出的散列均匀性,从而基于gudi作为服务器分配依据也可以提高服务器的分配均衡性。

图2为本发明实施例提供的通信方法实施例二的流程图,本实施例提供的该通信方法可以由一通信系统中的客户端来执行,该通信系统中可以包括客户端、管理平台和多个服务器。实际应用中,该通信系统中的多个服务器可以提供一种网络应用也可以提供多种网络应用,但是,对应于某种网络应用的服务器的数量也是多个。对应的,客户端可以是对应于一种网络应用的客户端,也可以是对应于多种网络应用的多个客户端。如图2所示,该方法包括如下步骤:

步骤201、采用预设散列算法对客户端对应的终端设备标识和应用标识进行计算,以获得客户端对应的guid。

本实施例中生成guid的过程可以参见前述实施例中的相关说明,在此不再赘述。

可选地,客户端可以在每次被触发需要与服务器连接时即执行上述生成guid的过程,但是,也可以在首次生成该guid时,本地保存该guid,在下一次需要使用的时候,从存储空间中读取该guid即可,无需再次生成,除非用于生成guid的输入参数发生改变,比如用户更换了终端设备导致终端设备标识改变。

步骤202、向管理平台发送服务器分配请求,服务器分配请求中包括guid。

该guid用于使得管理平台根据guid的后n位字符的加和对当前获得的正常服务器数量进行取余运算,确定目标服务器。

步骤203、接收管理平台发送的目标服务器的ip地址,以根据ip地址与目标服务器建立通信连接。

上述两个步骤的具体执行过程可以参见前述实施例中的描述,在此不赘述。

在基于前述实施例的描述,客户端已经与上述目标服务器建立了通信连接的情况下,为避免服务器的突然异常导致客户端的应用无法正常使用,本发明实施例还提供了如图3所示的机制,以保障通信连接的可靠性。

图3为本发明实施例提供的通信方法实施例三的流程图,如图3所示,在前述步骤203之后,还可以包括如下步骤:

步骤301、每隔预设时间间隔,对目标服务器进行探活,若目标服务器异常,则向管理平台重新发送服务器分配请求。

当客户端已经与目标服务器建立了通信连接之后,客户端可以每隔一定的时间间隔向目标服务器发送一ping探活消息,如果在一定时间内接收到该目标服务器反馈的pong响应消息,则说明该目标服务器工作状态正常,反之,如果在一定时间内没有接收到该目标服务器反馈的pang响应消息,则说明该目标服务器工作状态异常,如果发现目标服务器异常,则可以重新触发管理平台为其分配新的服务器,具体比如向管理平台重新发送携带有guid的服务器分配请求。

值得说明的是,由于管理平台也会定时对各服务器进行探活,以确定各服务器的工作状态是否异常,因此,当客户端重新请求管理平台分配服务器时,管理平台基于对各服务器的工作状态的监测,会将客户端探测确定的异常服务器排除在正常服务器之外,保证重新为客户端分配的服务器不会是已经异常的服务器。

综上,结合客户端对已经连接的服务器的探活,以及管理平台对各服务器的探活,可以保证为客户端分配的服务器的有效性,从而使得客户端与对应服务器的通信连接的可靠性。

步骤302、若与目标服务器间的通信连接的连接时长达到预设时长阈值,则断开通信连接,向管理平台重新发送服务器分配请求。

本实施例中,客户端基于如上的探活机制监测其已连接的服务器的工作状态可能会存在不能完全监测到服务器的所有异常现象的问题。比如实际应用中,可能会存在客户端与服务器的通信连接仍正常,客户端探活到服务器仍工作正常,但是实际上服务器中的某功能陷入了死循环,客户端没有探知这种异常情况。

为此,本实施例中还提供了强制重连的机制,即客户端在与目标服务器建立通信连接之后,如果该通信连接的连接时长达到预设时长阈值,则强制断开该通信连接,重新请求管理平台为其分配服务器,以保证客户端连接的服务器的有效性。

以下将详细描述本发明的一个或多个实施例的通信系统。

图4为本发明实施例提供的通信系统的结构示意图,如图4所示,该系统包括:客户端1、管理平台2和多个服务器3。

所述客户端1,用于采用预设散列算法对客户端1对应的终端设备标识和应用标识进行计算,以获得所述客户端对应的全局唯一标识符;向所述管理平台2发送包括所述全局唯一标识符的服务器分配请求;根据所述管理平台2反馈的目标服务器的ip地址与所述目标服务器建立通信连接。

所述管理平台2,用于响应于所述服务器分配请求,获取正常服务器数量,所述正常服务器是指工作状态正常的服务器;以所述全局唯一标识符的后n位字符的加和对所述正常服务器数量进行取余运算,根据运算结果确定目标服务器;将所述目标服务器的ip地址发送至所述客户端1。

可选地,所述管理平台2具体用于:

分别对各服务器进行探活,确定仍存活的服务器的数量作为所述正常服务器数量;和/或,

分别获取所述各服务器的负载压力,确定负载压力低于预设阈值的服务器的数量作为所述正常服务器数量。

可选地,所述客户端1还用于:

每隔预设时间间隔对所述目标服务器进行探活,若所述目标服务器异常,则向所述管理平台重新发送所述服务器分配请求。

可选地,所述客户端1还用于:

若所述通信连接的连接时长达到预设时长阈值,则断开所述通信连接,以向所述管理平台重新发送所述服务器分配请求。

图4所示系统可以执行图1-图3所示实施例的方法,本实施例未详细描述的部分,可参考对图1-图3所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1-图3所示实施例中的描述,在此不再赘述。

以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以产品的形式体现出来,该计算机产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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