CN108769111B - 一种服务器连接方法、计算机可读存储介质及终端设备 - Google Patents
一种服务器连接方法、计算机可读存储介质及终端设备 Download PDFInfo
- Publication number
- CN108769111B CN108769111B CN201810341964.0A CN201810341964A CN108769111B CN 108769111 B CN108769111 B CN 108769111B CN 201810341964 A CN201810341964 A CN 201810341964A CN 108769111 B CN108769111 B CN 108769111B
- Authority
- CN
- China
- Prior art keywords
- hash
- server
- function
- node
- identity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明属于计算机技术领域,尤其涉及一种服务器连接方法、计算机可读存储介质及终端设备。所述方法本发明实施例获取终端设备的身份标识;使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;将所述终端设备的哈希值映射至哈希环的第一节点;获取所述哈希环上的各个基准节点;从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;建立所述终端设备与所述优选服务器之间的通信连接。减少了服务器资源的浪费,也大大降低了消息重发的几率。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种服务器连接方法、计算机可读存储介质及终端设备。
背景技术
消息推送的基础需要保持用户的终端设备与服务器建立的长连接。随着用户的终端设备数量不断增加,长连接服务器也需要随时横向扩容。目前建立长连接的方式是由用户的终端设备随机请求某台服务器来保持长连接。这种情况下,推送消息时就需要将消息分发给每一台服务器,由保持长连接的那一台服务器推送至用户的终端设备,不仅造成服务器资源的浪费,也增大消息重发的几率。
发明内容
有鉴于此,本发明实施例提供了一种服务器连接方法、计算机可读存储介质及终端设备,以解决由用户的终端设备随机请求某台服务器来保持长连接所造成的服务器资源浪费以及消息重发几率增大的问题。
本发明实施例的第一方面提供了一种服务器连接方法,可以包括:
获取终端设备的身份标识;
使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;
将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;
获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;
从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;
建立所述终端设备与所述优选服务器之间的通信连接。
本发明实施例的第二方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:
获取终端设备的身份标识;
使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;
将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;
获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;
从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;
建立所述终端设备与所述优选服务器之间的通信连接。
本发明实施例的第三方面提供了一种服务器连接终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:
获取终端设备的身份标识;
使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;
将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;
获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;
从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;
建立所述终端设备与所述优选服务器之间的通信连接。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例获取终端设备的身份标识;使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;将所述终端设备的哈希值映射至哈希环的第一节点;获取所述哈希环上的各个基准节点;从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;建立所述终端设备与所述优选服务器之间的通信连接。即通过设置一个由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的哈希环,将服务器以及终端设备均映射至哈希环上,建立起了服务器与终端设备之间的空间对应关系,通过顺时针或者逆时针查找的方式即可确定出与终端设备对应的优选服务器,由于哈希运算发生碰撞的概率几乎可以忽略不计,因此通过这种方式确定出的优选服务器可视为是唯一的,从而减少了服务器资源的浪费,也大大降低了消息重发的几率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例中一种服务器连接方法的一个实施例流程图;
图2为哈希环的示意图;
图3为终端设备的哈希值映射至哈希环的节点上的示意图;
图4为服务器的哈希值映射至哈希环的节点上的一种示意图;
图5为服务器的哈希值映射至哈希环的节点上的另一种示意图;
图6为本发明实施例中一种服务器连接装置的示意框图。
图7为本发明实施例中一种服务器连接终端设备的示意框图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中一种服务器连接方法的一个实施例可以包括:
步骤S101、获取终端设备的身份标识。
终端设备的身份标识可以是指终端的国际移动设备身份码(InternationalMobile Equipment Identity,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可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述服务器连接终端设备7的内部存储单元,例如服务器连接终端设备7的硬盘或内存。所述存储器71也可以是所述服务器连接终端设备7的外部存储设备,例如所述服务器连接终端设备7上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述服务器连接终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机可读指令以及所述服务器连接终端设备7所需的其它指令和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干计算机可读指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机可读指令的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (3)
1.一种服务器连接方法,其特征在于,包括:
获取终端设备的身份标识;
使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;
将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;
获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;
从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;
建立所述终端设备与所述优选服务器之间的通信连接;
所述基准节点的设置过程包括:
获取各个服务器的身份标识;
根据下式计算各个服务器的扩展身份标识:
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为由各个服务器的哈希值组成的集合,hashvm,n∈HashValueSetm,且hashvm,n≤hashvm,n+1,HashValueSetm为由第m个服务器的哈希值组成的集合;
根据下式计算所述候选函数的均匀度:
其中,HashMax为所述候选函数的最大函数值,η为预设的比例系数,EvenDeg为所述候选函数的均匀度;
若所述候选函数的均匀度大于预设的均匀度阈值,则将所述候选函数从所述哈希函数集合中删除,然后返回执行所述从预设的哈希函数集合中任意选取一个哈希函数作为候选函数的步骤;
若所述候选函数的均匀度小于或等于预设的均匀度阈值,则将所述候选函数确定为第二哈希函数。
2.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如权利要求1所述的服务器连接方法的步骤。
3.一种服务器连接终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现如下步骤:
获取终端设备的身份标识;
使用预设的第一哈希函数对所述身份标识进行哈希运算,得到所述终端设备的哈希值;
将所述终端设备的哈希值映射至哈希环的第一节点,所述哈希环为由所述第一哈希函数的所有函数值按照从小到大的顺序顺时针或者逆时针依次连接所构成的圆环,每个节点均为构成所述哈希环的一个函数值,所述第一节点为所述哈希环上的任意一个节点;
获取所述哈希环上的各个基准节点,其中,每个基准节点均为所述哈希环上与一个服务器对应的节点;
从所述第一节点开始顺时针或者逆时针查找所述基准节点,并将查找到的第一个基准节点所对应的服务器确定为优选服务器;
建立所述终端设备与所述优选服务器之间的通信连接;
所述基准节点的设置过程包括:
获取各个服务器的身份标识;
根据下式计算各个服务器的扩展身份标识:
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为由各个服务器的哈希值组成的集合,hashvm,n∈HashValueSetm,且hashvm,n≤hashvm,n+1,HashValueSetm为由第m个服务器的哈希值组成的集合;
根据下式计算所述候选函数的均匀度:
其中,HashMax为所述候选函数的最大函数值,η为预设的比例系数,EvenDeg为所述候选函数的均匀度;
若所述候选函数的均匀度大于预设的均匀度阈值,则将所述候选函数从所述哈希函数集合中删除,然后返回执行所述从预设的哈希函数集合中任意选取一个哈希函数作为候选函数的步骤;
若所述候选函数的均匀度小于或等于预设的均匀度阈值,则将所述候选函数确定为第二哈希函数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810341964.0A CN108769111B (zh) | 2018-04-17 | 2018-04-17 | 一种服务器连接方法、计算机可读存储介质及终端设备 |
PCT/CN2018/093342 WO2019200714A1 (zh) | 2018-04-17 | 2018-06-28 | 服务器连接方法、计算机可读存储介质、终端设备及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810341964.0A CN108769111B (zh) | 2018-04-17 | 2018-04-17 | 一种服务器连接方法、计算机可读存储介质及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108769111A CN108769111A (zh) | 2018-11-06 |
CN108769111B true CN108769111B (zh) | 2020-01-24 |
Family
ID=64010645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810341964.0A Active CN108769111B (zh) | 2018-04-17 | 2018-04-17 | 一种服务器连接方法、计算机可读存储介质及终端设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108769111B (zh) |
WO (1) | WO2019200714A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739433A (zh) * | 2018-11-27 | 2019-05-10 | 中科恒运股份有限公司 | 数据处理的方法及终端设备 |
CN110083313B (zh) * | 2019-05-06 | 2022-08-02 | 北京奇艺世纪科技有限公司 | 一种数据缓存方法及装置 |
CN110457128B (zh) * | 2019-07-11 | 2023-12-22 | 创新先进技术有限公司 | 任务分配方法、装置和系统 |
CN111182043B (zh) * | 2019-12-23 | 2022-08-12 | 南京亚信智网科技有限公司 | 哈希值的分配方法及装置 |
CN111314189B (zh) * | 2020-01-17 | 2022-02-25 | 蚂蚁财富(上海)金融信息服务有限公司 | 一种业务消息的发送方法及装置 |
CN111339088A (zh) * | 2020-02-21 | 2020-06-26 | 苏宁云计算有限公司 | 数据库的分库分表方法、装置、介质及计算机设备 |
CN111580948A (zh) * | 2020-04-30 | 2020-08-25 | 中国平安财产保险股份有限公司 | 任务调度方法、装置及计算机设备 |
CN111580965A (zh) * | 2020-04-30 | 2020-08-25 | 深圳壹账通智能科技有限公司 | 数据请求的处理方法及系统 |
CN111614760A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种将物联网设备均衡分配接入的方法及装置 |
CN112486672A (zh) * | 2020-11-17 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种服务内存缓存调用方法和装置 |
CN112650451B (zh) * | 2020-12-28 | 2023-06-09 | 杭州趣链科技有限公司 | 查找网络服务器的优化方法、装置、计算机设备及存储介质 |
CN112667620A (zh) * | 2020-12-31 | 2021-04-16 | 广州方硅信息技术有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN112799978B (zh) * | 2021-01-20 | 2023-03-21 | 网易(杭州)网络有限公司 | 缓存设计管理方法、装置、设备和计算机可读存储介质 |
CN113064720B (zh) * | 2021-03-12 | 2024-04-16 | 北京达佳互联信息技术有限公司 | 对象分配方法、装置、服务器及存储介质 |
CN112948120A (zh) * | 2021-03-18 | 2021-06-11 | 广东好太太智能家居有限公司 | 负载均衡方法、系统、装置和存储介质 |
CN113542013B (zh) * | 2021-06-24 | 2023-04-07 | 新华三大数据技术有限公司 | 虚拟化网络功能管理消息分配方法、装置及设备 |
CN114446407A (zh) * | 2022-03-03 | 2022-05-06 | 冰洲石生物科技(上海)有限公司 | 化学反应的反应模板提取方法、系统、介质及电子设备 |
CN114785795A (zh) * | 2022-04-02 | 2022-07-22 | 北京蓝海在线科技有限公司 | 分布式存储方法、系统、设备、存储介质及信息处理终端 |
CN114866799B (zh) * | 2022-05-11 | 2024-04-05 | 北京奇艺世纪科技有限公司 | 一种服务器调度方法及装置 |
CN115001969B (zh) * | 2022-05-24 | 2024-06-14 | 北京金玖银玖数字科技有限公司 | 一种数据存储节点部署方法、数据存储方法、装置及设备 |
CN117130793A (zh) * | 2023-10-27 | 2023-11-28 | 乾健科技有限公司 | 一种大数据分析处理方法以及系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100640057B1 (ko) * | 2004-11-12 | 2006-11-01 | 삼성전자주식회사 | 브로드캐스트 암호화를 위한 사용자 키 관리 방법 |
US7821925B2 (en) * | 2007-01-29 | 2010-10-26 | Fulcrum Microsystems, Inc. | Traffic distribution techniques utilizing initial and scrambled hash values |
CN101494611B (zh) * | 2009-02-20 | 2011-09-14 | 华为技术有限公司 | 一种负载分担调整方法和装置 |
US8996607B1 (en) * | 2010-06-04 | 2015-03-31 | Amazon Technologies, Inc. | Identity-based casting of network addresses |
CN103888499B (zh) * | 2012-12-21 | 2018-08-14 | 中国科学院深圳先进技术研究院 | 一种分布式对象处理的方法及系统 |
CN104852934A (zh) * | 2014-02-13 | 2015-08-19 | 阿里巴巴集团控股有限公司 | 基于前端调度实现流量分配的方法、装置和系统 |
CN106559448A (zh) * | 2015-09-28 | 2017-04-05 | 北京国双科技有限公司 | 服务器负载均衡方法和装置 |
CN106789175A (zh) * | 2016-11-30 | 2017-05-31 | 武汉长江通信智联技术有限公司 | 一种基于一致性哈希算法进行redis横向扩展的方法 |
CN106850581B (zh) * | 2017-01-04 | 2020-06-23 | 网宿科技股份有限公司 | 互动直播流媒体数据的分发备份方法、系统及服务器 |
CN107070989A (zh) * | 2017-03-06 | 2017-08-18 | 北京潘达互娱科技有限公司 | 通信方法和系统 |
CN107171971A (zh) * | 2017-05-11 | 2017-09-15 | 北京云端智度科技有限公司 | 利用一致性哈希策略实现网络流量负载均衡的方法 |
CN106972977A (zh) * | 2017-05-24 | 2017-07-21 | 北京潘达互娱科技有限公司 | 一种长连接维护方法与装置 |
CN107317879B (zh) * | 2017-08-02 | 2019-07-05 | 网宿科技股份有限公司 | 一种用户请求的分发方法及系统 |
CN107395767B (zh) * | 2017-08-31 | 2021-02-05 | 北京奇元科技有限公司 | 基于长连接的消息推送系统及方法 |
CN107797865A (zh) * | 2017-10-20 | 2018-03-13 | 华为软件技术有限公司 | 用户任务处理方法及应用服务器 |
CN107749887A (zh) * | 2017-10-25 | 2018-03-02 | 暴风集团股份有限公司 | 一种cdn资源分配、定位方法和装置及cdn系统 |
-
2018
- 2018-04-17 CN CN201810341964.0A patent/CN108769111B/zh active Active
- 2018-06-28 WO PCT/CN2018/093342 patent/WO2019200714A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019200714A1 (zh) | 2019-10-24 |
CN108769111A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108769111B (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN110149373B (zh) | 基于点对点网络的数据存储方法、装置、介质及服务器 | |
US9104676B2 (en) | Hash algorithm-based data storage method and system | |
CN110099112B (zh) | 基于点对点网络的数据存储方法、装置、介质及终端设备 | |
WO2018233051A1 (zh) | 数据发布方法、装置、服务器和存储介质 | |
US20210158353A1 (en) | Methods, systems, apparatuses, and devices for processing request in consortium blockchain | |
CN110737663B (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN110266766B (zh) | 一种抗攻击分布式网络节点的构建方法、系统及终端设备 | |
CN114253979B (zh) | 一种报文处理方法、装置及电子设备 | |
CN110413845B (zh) | 基于物联网操作系统的资源存储方法及装置 | |
CN108092956B (zh) | 一种获取压缩字典的方法和装置 | |
CN113282941A (zh) | 获取对象标识的方法、装置、电子设备及存储介质 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
WO2017128701A1 (zh) | 存储数据的方法和装置 | |
WO2020024446A1 (zh) | 数据的存储方法及装置、存储介质、计算机设备 | |
CN104579970A (zh) | 一种IPv6报文的策略匹配方法及装置 | |
CN111431818B (zh) | 跨域请求的流量分配方法、装置、存储介质及计算机设备 | |
CN109842482B (zh) | 一种信息同步方法、系统及终端设备 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN106790323B (zh) | 一种资源发现的方法及装置 | |
CN112131263B (zh) | 软件包获取方法、系统、装置、电子设备和存储介质 | |
CN113986931A (zh) | 报表分页的方法、装置、存储介质及计算设备 | |
CN108768735B (zh) | 一种测试床拓扑结构的二分图采样方法及装置 | |
CN113656712A (zh) | 资产收集方法、装置、电子装置和存储介质 | |
CN112291241A (zh) | 防火墙开墙方法、防火墙开墙装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |