一种服务器连接方法、计算机可读存储介质及终端设备与流程

文档序号:15847075发布日期:2018-11-07 09:14阅读:154来源:国知局
一种服务器连接方法、计算机可读存储介质及终端设备与流程

本发明属于计算机技术领域,尤其涉及一种服务器连接方法、计算机可读存储介质及终端设备。

背景技术

消息推送的基础需要保持用户的终端设备与服务器建立的长连接。随着用户的终端设备数量不断增加,长连接服务器也需要随时横向扩容。目前建立长连接的方式是由用户的终端设备随机请求某台服务器来保持长连接。这种情况下,推送消息时就需要将消息分发给每一台服务器,由保持长连接的那一台服务器推送至用户的终端设备,不仅造成服务器资源的浪费,也增大消息重发的几率。



技术实现要素:

有鉴于此,本发明实施例提供了一种服务器连接方法、计算机可读存储介质及终端设备,以解决由用户的终端设备随机请求某台服务器来保持长连接所造成的服务器资源浪费以及消息重发几率增大的问题。

本发明实施例的第一方面提供了一种服务器连接方法,可以包括:

获取终端设备的身份标识;

使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;

将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;

获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;

从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;

建立所述终端设备与所述优选服务器之间的通信连接。

本发明实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:

获取终端设备的身份标识;

使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;

将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;

获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;

从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;

建立所述终端设备与所述优选服务器之间的通信连接。

本发明实施例的第三方面提供了一种服务器连接终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:

获取终端设备的身份标识;

使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;

将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;

获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;

从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;

建立所述终端设备与所述优选服务器之间的通信连接。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例获取终端设备的身份标识;使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;将所述终端设备的哈希值映射至哈希环的第一节点;获取所述哈希环上的各个基准节点;从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;建立所述终端设备与所述优选服务器之间的通信连接。即通过设置一个由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的哈希环,将服务器以及终端设备均映射至哈希环上,建立起了服务器与终端设备之间的空间对应关系,通过顺时针或者逆时针查找的方式即可确定出与终端设备对应的优选服务器,由于哈希运算发生碰撞的概率几乎可以忽略不计,因此通过这种方式确定出的优选服务器可视为是唯一的,从而减少了服务器资源的浪费,也大大降低了消息重发的几率。

附图说明

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

图1为本发明实施例中一种服务器连接方法的一个实施例流程图;

图2为哈希环的示意图;

图3为终端设备的哈希值映射至哈希环的节点上的示意图;

图4为服务器的哈希值映射至哈希环的节点上的一种示意图;

图5为服务器的哈希值映射至哈希环的节点上的另一种示意图;

图6为本发明实施例中一种服务器连接装置的示意框图。

图7为本发明实施例中一种服务器连接终端设备的示意框图。

具体实施方式

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

请参阅图1,本发明实施例中一种服务器连接方法的一个实施例可以包括:

步骤s101、获取终端设备的身份标识。

终端设备的身份标识可以是指终端的国际移动设备身份码(internationalmobileequipmentidentity,imei),国际移动设备身份码是由15位数字组成的电子串号,它与每个终端设备一一对应,而且该码是全世界唯一的。每一个终端设备在组装完成后都将被赋予一个全球唯一的号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

步骤s102、使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值。

所有的哈希函数都有如下一个基本特性:如果两个哈希值是不相同的(根据同一哈希函数),那么这两个哈希值的原始输入也是不相同的。这个特性使哈希函数具有确定性的结果。但另一方面,哈希函数的输入和输出不是唯一对应关系的,如果两个哈希值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“哈希碰撞”,这通常是两个不同的输入值,刻意计算出相同的输出值。但对于现有技术中常用的哈希函数而言,其发生碰撞的概率极低,几乎可以忽略不计,输入一些数据计算出哈希值,然后部分改变输入值,一个具有强混淆特性的哈希函数会产生一个完全不同的哈希值。

本实施例中的第一哈希函数可以包括但不限于md4、md5、sha1等任意一个现有技术中常用的哈希函数。

将获取到的终端设备的身份标识分别表示为:imei1、imei2、imei3、……、imeim、……、imeim,其中,imeim为第m个终端设备的身份标识,1≤m≤m,m为终端设备的总个数。

然后,计算各个终端设备的哈希值:

keym=hashfunc1(imeim)

其中,hashfunc1为第一哈希函数,keym为第m个终端设备的哈希值。

步骤s103、将所述终端设备的哈希值映射至哈希环的第一节点。

所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,若第一哈希函数的值域为[0,n],且以顺时针的顺序排列,则可构成如图2所示的哈希环。

所述第一节点为所述哈希环上的任意一个节点,其取值即为所述终端设备的哈希值。图3所示为4个终端设备的哈希值分别映射至哈希环的节点上的情形。

步骤s104、获取所述哈希环上的各个基准节点。

其中,每个基准节点均为所述哈希环上与一个服务器对应的节点。所述基准节点的设置过程包括:

获取各个服务器的身份标识,使用预设的第二哈希函数分别对各个服务器的身份标识进行哈希运算,得到各个服务器的哈希值,将各个服务器的哈希值映射至所述哈希环上,得到各个所述基准节点。

其中,服务器的身份标识可以为服务器的ip地址,将获取到的服务器的身份标识分别表示为:ip1、ip2、ip3、……、ipm′、……、ipm′,其中,ipm′为第m′个服务器的身份标识,1≤m′≤m′,m′为服务器的总个数。

使用下式计算各个服务器的哈希值:

key′m′=hashfunc2(ipm′)

其中,hashfunc2为第二哈希函数,key′m′为第m′个服务器的哈希值,特别需要注意的是,所述第二哈希函数的值域与所述第一哈希函数的值域一致,以此保证两者可以映射到同一个哈希环上。

图4所示为7个服务器的哈希值分别映射至哈希环的节点上的情形,key1′、key′2、key′3、key′4、key′5、key′6、key′7所对应的节点即为所述基准节点。

步骤s105、从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器。

以图4中imei1所对应的key1为例,从其所对应的节点,也即所述第一节点开始顺时针查找所述基准节点,查找到的第一个基准节点为key1′,则将地址为ip1的服务器确定为imei1的优选服务器。使用同样的方法,可以确定地址为ip3的服务器确定为imei2的优选服务器、地址为ip4的服务器确定为imei3的优选服务器、地址为ip6的服务器确定为imei4的优选服务器。

类似地,若采用逆时针查找的方法,则可以确定地址为ip7的服务器确定为imei1的优选服务器、地址为ip2的服务器确定为imei2的优选服务器、地址为ip3的服务器确定为imei3的优选服务器、地址为ip5的服务器确定为imei4的优选服务器。

步骤s106、建立所述终端设备与所述优选服务器之间的通信连接。

当建立了两者之间的通信连接之后,推送消息时就无需将消息分发给每一台服务器,而是只将消息发送给目标终端设备的优选服务器,由优选服务器将消息推送至目标终端设备,从而减少了服务器资源的浪费,也大大降低了消息重发的几率。

进一步地,考虑到不同的服务器的处理能力是不同的,可以根据服务器的处理能力为不同的服务器设置不同的映射位置的个数。例如,服务器处理能力由高到低依次为:服务器1、服务器2、服务器3。则将服务器1的映射位置设置为3个,将服务器2的映射位置设置为2个,将服务器1的映射位置设置为1个。具体地,将服务器1的ip地址ip1扩展为3个虚拟ip:ip1_1、ip1_2、ip1_3,将服务器2的ip地址ip2扩展为2个虚拟ip:ip2_1、ip2_2、ip1_3,将服务器3的ip地址ip3保持不变,则各个ip哈希值在哈希环上对应的节点如图5所示。

根据这一思路,步骤s104中的所述基准节点还可以通过以下过程进行设置:

首先,获取各个服务器的身份标识。

然后,根据下式计算各个服务器的扩展身份标识:

ext_serveridm,n=extfunc(serveridm,n)

其中,m为服务器的序号,1≤m≤m,m为服务器的总数,serveridm为第m个服务器的身份标识,n为扩展身份标识的序号,所述扩展身份标识即可为前述的虚拟ip,1≤n≤nm,nm为第m个服务器的扩展身份标识的总数,nm与第m个服务器的中央处理器的主频正相关,且与第m个服务器的内存容量正相关,即中央处理器的主频越高,且内存容量越大,则扩展身份标识的总数也越大,反之,中央处理器的主频越低,且内存容量越小,则扩展身份标识的总数也越小。extfunc为预设的函数,在其中的一种实现中,extfunc(serveridm,n)=serveridm∪.n,即在serveridm之后再加入一个.n后缀,若serveridm=120.132.55.7,则extfunc(serveridm,1)=120.132.55.7.1,ext_serveridm,n为第m个服务器的第n个扩展身份标识;

再使用预设的第二哈希函数分别对各个服务器的扩展身份标识进行哈希运算,得到各个服务器的哈希值,所述第二哈希函数的值域与所述第一哈希函数的值域一致。

最后,将各个服务器的哈希值映射至所述哈希环上,得到各个所述基准节点。

此时,需要注意,图5中服务器1的3个虚拟ip节点对应的服务器均为服务器1,服务器2的2个虚拟ip节点对应的服务器均为服务器2。

进一步地,所述第二哈希函数的一种设置方法可以包括:

从预设的哈希函数集合中任意选取一个哈希函数作为候选函数,所述哈希函数集合包括一个以上的哈希函数。

使用所述候选函数分别对各个服务器的扩展身份标识进行哈希运算,得到各个服务器的哈希值。

根据下式构造哈希值序列:

hasharrayt=(hashvt1,hashvt2,......,hashvttn,......,hashvttn)

其中,1≤tn≤tn,tn为各个服务器的哈希值的总数,且hashvttn∈hashvaluesett,且hashvttn≤hashvttn+1,hashvaluesett为由各个服务器的哈希值组成的集合。

根据下式计算所述候选函数的均匀度:

其中,hashmax为所述候选函数的最大函数值,evendeg为所述候选函数的均匀度。

若所述候选函数的均匀度大于预设的均匀度阈值,则将所述候选函数从所述哈希函数集合中删除,然后返回执行所述从预设的哈希函数集合中任意选取一个哈希函数作为候选函数的步骤;

若所述候选函数的均匀度小于或等于预设的均匀度阈值,则将所述候选函数确定为第二哈希函数。

进一步地,所述第二哈希函数的另一种设置方法可以包括:

从预设的哈希函数集合中任意选取一个哈希函数作为候选函数,所述哈希函数集合包括一个以上的哈希函数。

使用所述候选函数分别对各个服务器的扩展身份标识进行哈希运算,得到各个服务器的哈希值。

根据下式构造各个哈希值序列:

hasharrayt=(hashvt1,hashvt2,......,hashvttn,......,hashvttn)

其中,1≤tn≤tn,tn为各个服务器的哈希值的总数,且hashvttn∈hashvaluesett,且hashvttn≤hashvttn+1,hashvaluesett为由各个服务器的哈希值组成的集合,hashvm,n∈hashvaluesetm,且hashvm,n≤hashvm,n+1,hashvaluesetm为由第m个服务器的哈希值组成的集合。

根据下式计算所述候选函数的均匀度:

其中,hashmax为所述候选函数的最大函数值,η为预设的比例系数,evendeg为所述候选函数的均匀度。

若所述候选函数的均匀度大于预设的均匀度阈值,则将所述候选函数从所述哈希函数集合中删除,然后返回执行所述从预设的哈希函数集合中任意选取一个哈希函数作为候选函数的步骤;

若所述候选函数的均匀度小于或等于预设的均匀度阈值,则将所述候选函数确定为第二哈希函数。

综上所述,本发明实施例获取终端设备的身份标识;使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;将所述终端设备的哈希值映射至哈希环的第一节点;获取所述哈希环上的各个基准节点;从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;建立所述终端设备与所述优选服务器之间的通信连接。即通过设置一个由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的哈希环,将服务器以及终端设备均映射至哈希环上,建立起了服务器与终端设备之间的空间对应关系,通过顺时针或者逆时针查找的方式即可确定出与终端设备对应的优选服务器,由于哈希运算发生碰撞的概率几乎可以忽略不计,因此通过这种方式确定出的优选服务器可视为是唯一的,从而减少了服务器资源的浪费,也大大降低了消息重发的几率。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

对应于上文实施例所述的一种服务器连接方法,图6示出了本发明实施例提供的一种服务器连接装置的一个实施例结构图。

本实施例中,一种服务器连接装置可以包括:

终端标识获取模块601,用于获取终端设备的身份标识;

第一哈希运算模块602,用于使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;

第一映射模块603,用于将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;

基准节点获取模块604,用于获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;

优选服务器确定模块605,用于从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;

通信连接建立模块606,用于建立所述终端设备与所述优选服务器之间的通信连接。

可选地,所述服务器连接装置还可以包括:

服务器标识获取模块,用于获取各个服务器的身份标识;

第二哈希运算模块,用于使用预设的第二哈希函数分别对各个服务器的身份标识进行哈希运算,得到各个服务器的哈希值,所述第二哈希函数的值域与所述第一哈希函数的值域一致;

第二映射模块,用于将各个服务器的哈希值映射至所述哈希环上,得到各个所述基准节点。

可选地,所述服务器连接装置还可以包括:

身份标识扩展模块,用于根据下式计算各个服务器的扩展身份标识:

ext_serveridm,n=extfunc(serveridm,n)

其中,m为服务器的序号,1≤m≤m,m为服务器的总数,serveridm为第m个服务器的身份标识,n为扩展身份标识的序号,1≤n≤nm,nm为第m个服务器的扩展身份标识的总数,nm与第m个服务器的中央处理器的主频正相关,且与第m个服务器的内存容量正相关,extfunc为预设的函数,ext_serveridm,n为第m个服务器的第n个扩展身份标识。

可选地,所述服务器连接装置还可以包括:

候选函数选取模块,用于从预设的哈希函数集合中任意选取一个哈希函数作为候选函数,所述哈希函数集合包括一个以上的哈希函数;

哈希运算模块,用于使用所述候选函数分别对各个服务器的扩展身份标识进行哈希运算,得到各个服务器的哈希值;

第一序列构造模块,用于根据下式构造哈希值序列:

hasharrayt=(hashvt1,hashvt2,......,hashvttn,......,hashvttn)

其中,1≤tn≤tn,tn为各个服务器的哈希值的总数,且hashvttn∈hashvaluesett,且hashvttn≤hashvttn+1,hashvaluesett为由各个服务器的哈希值组成的集合;

第一均匀度计算模块,用于根据下式计算所述候选函数的均匀度:

其中,hashmax为所述候选函数的最大函数值,evendeg为所述候选函数的均匀度;

候选函数删除模块,用于若所述候选函数的均匀度大于预设的均匀度阈值,则将所述候选函数从所述哈希函数集合中删除;

函数确定模块,用于若所述候选函数的均匀度小于或等于预设的均匀度阈值,则将所述候选函数确定为第二哈希函数。

可选地,所述服务器连接装置还可以包括:

第二序列构造模块,用于根据下式构造各个哈希值序列:

hasharrayt=(hashvt1,hashvt2,......,hashvttn,......,hashvttn)

其中,1≤tn≤tn,tn为各个服务器的哈希值的总数,且hashvttn∈hashvaluesett,且hashvttn≤hashvttn+1,hashvaluesett为由各个服务器的哈希值组成的集合,hashvm,n∈hashvaluesetm,且hashvm,n≤hashvm,n+1,hashvaluesetm为由第m个服务器的哈希值组成的集合;

第二均匀度计算模块,用于根据下式计算所述候选函数的均匀度:

其中,hashmax为所述候选函数的最大函数值,η为预设的比例系数,evendeg为所述候选函数的均匀度。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

图7示出了本发明实施例提供的一种服务器连接终端设备的示意框图,为了便于说明,仅示出了与本发明实施例相关的部分。

在本实施例中,所述服务器连接终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该服务器连接终端设备7可包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机可读指令72,例如执行上述的服务器连接方法的计算机可读指令。所述处理器70执行所述计算机可读指令72时实现上述各个服务器连接方法实施例中的步骤,例如图1所示的步骤s101至s106。或者,所述处理器70执行所述计算机可读指令72时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块601至606的功能。

示例性的,所述计算机可读指令72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令72在所述服务器连接终端设备7中的执行过程。

所述处理器70可以是中央处理单元(centralprocessingunit,cpu),还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器71可以是所述服务器连接终端设备7的内部存储单元,例如服务器连接终端设备7的硬盘或内存。所述存储器71也可以是所述服务器连接终端设备7的外部存储设备,例如所述服务器连接终端设备7上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器71还可以既包括所述服务器连接终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机可读指令以及所述服务器连接终端设备7所需的其它指令和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机可读指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储计算机可读指令的介质。

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

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