基于一致性哈希算法的终端归属服务器的负载均衡处理方法与流程

未命名 07-22 阅读:110 评论:0


1.本技术属于服务器指挥调度技术领域,涉及一种基于一致性哈希算法的终端归属服务器的处理方法。


背景技术:

2.音视频业务的负载均衡技术是指支持将用户或者音视频业务按照一定的规则算法将其均衡的划分至具有相同地位的,运行着相同软件,数据互相同步的各个服务器上,以满足为大容量用户提供高可用的音视频业务。
3.服务器双活技术是指运行着相同的音视频服务软件,数据互相同步的至少2个以上的服务器在保证可用的情况下都能够对外提供音视频业务,避免传统的一主多备的场景下的冗余浪费。
4.热备份技术是指当音视频业务在某一个服务器上正常进行时,由于服务器发生故障,此时在该服务器上进行的音视频业务能够在其他的服务器上被接管,以继续正常的进行,直至音视频业务的正常结束。
5.随着音视频技术的发展,大容量用户接入,服务高可用是目前音视频领域的必备要求,目前负载均衡和高可用的技术层出不穷,如何在对音视频终端归属服务器进行负载均衡是本技术研究的目的,以保证音视频业务的持续可用。


技术实现要素:

6.本技术的目的是提供一种基于一致性哈希算法的终端归属服务器的负载均衡处理方法,包括有如下步骤:
7.接收终端发起的注册请求,注册请求包括有终端的用户号码;
8.根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中;
9.接收到由终端发送的订阅请求;
10.从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。
11.本技术的负载均衡方法,将终端按照登录的用户号码(例如统一资源标识符uniform resource identifier,uri)进行哈希,并通过一致性哈希算法将终端均衡的分布至可用的服务器上,用户在终端上开展音视频业务时,在其登录成功的服务器上开展。此外,通过设定备服务器的方式,保证了在主服务器故障时,能够持续进行而不需用户手动重新发起,达到热备份的功能。
12.在上述技术方案的一个实施例中,其中所述“根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中”的步骤包括有:
13.获取当前所有的服务器地址;
14.对每个服务器地址虚拟多个虚拟节点,将每个虚拟节点的节点编码分别和服务器
地址进行哈希算法,将分别计算出的哈希值p作为分区编码,并与服务器地址存储至数据库中;
15.将终端的用户号码使用上述的哈希算法计算哈希值h;
16.查找并比对在数据库中第一个大于或等于哈希值h的分区编码,读取数据库内与分区编码对应的服务器地址;
17.将该服务器地址对应服务器确定为终端归属的服务器,并将归属关系存储数据库中。
18.在上述技术方案的一个实施例中,所述数据库为键值数据库,将计算出的哈希值p作为一个分区编码,并以分区编码为key,以服务器地址为value的键值对,按分区编码的数值顺序存储至nodes中。
19.在上述技术方案的一个实施例中,还包括有如下步骤:
20.服务器之间互相发送用于进行检测服务器状态的心跳包;
21.在检测到终端的主服务器处于离线状态时,删除数据库中主服务器的归属关系;
22.获取归属主服务器的所有终端,并使用一致性哈希算法进行重新负载均衡处理。
23.在上述技术方案的一个实施例中,还包括有如下步骤:
24.在检测到离线的服务器处于在线状态时,将此服务器的归属关系存储数据库加入数据库中;
25.将归属于此服务器下的所有终端使用一致性哈希算法进行重新负载均衡处理。
26.在上述技术方案的一个实施例中,在所述“接收终端发起的注册请求”的步骤之前还包括有步骤:
27.终端获取含有所有的服务器地址的地址列表;
28.终端向地址列表中的所有的服务器发起注册请求,注册请求包括有终端的用户号码。
29.本技术的另一方面是提供一种基于一致性哈希算法的终端归属服务器的负载均衡处理系统,包括有:
30.接收单元,用于接收终端发起的注册请求,注册请求包括有终端的用户号码;接收单元还用于接收到由终端发送的订阅请求;
31.确定单元,用于根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中;
32.查找单元,从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。
33.在上述技术方案的一个实施例中,所述确定单元包括有:
34.获取模块,用于获取当前所有的服务器地址;
35.第一计算模块,用于对每个服务器地址虚拟多个虚拟节点,将每个虚拟节点的节点编码分别和服务器地址进行哈希算法,将分别计算出的哈希值p作为分区编码,并与服务器地址存储至数据库中;
36.第二计算模块,将终端的用户号码使用上述的哈希算法计算哈希值h;
37.比对模块,用于查找数据库中第一个大于或等于哈希值h的分区编码,读取数据库内与分区编码对应的服务器地址;
38.存储模块,用于将该服务器地址对应服务器确定为终端归属的服务器,并将归属关系存储数据库中。
39.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
40.图1是本技术实施例中的数量为双个服务器的系统架构图。
41.图2是本技术实施例中的终端注册的负载均衡流程图。
42.图3是本技术实施例中的服务器之间的故障切换与恢复流程图。
43.图4是本技术实施例中的点对点音视频业务的故障恢复流程图。
44.图5是本技术实施例中的音视频会议业务故障恢复流程图。
45.图6是本技术实施例中的视频指挥业务故障恢复流程图。
具体实施方式
46.下面将结合本技术一些实施例中的附图,对本技术一些实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
47.以下结合附图详细描述本技术实施例的技术方案。
48.如图1至图2所示,本实施例是一种基于一致性哈希算法的终端归属服务器的负载均衡处理方法,通常应用在多个终端负分配到多个服务器上,保证每个服务器的负载均衡,各个服务器上的数据能够互相同步。
49.如下以音视频终端接入服务器进行音视频业务为例,基于一致性哈希算法的终端归属服务器的负载均衡处理方法包括如下步骤:
50.s1、接收终端发起的注册请求,注册请求包括有终端的用户号码;
51.需要说明的是,用户在音视频终端发起登录时,首先会从任一个服务器或登录服务器上下载地址列表,地址列表包含有所有当前对音视频终端提供音视频业务的服务器的服务器地址,然后音视频终端同时向地址列表中的服务器发起注册请求,不区分服务器是否可用。其中在注册请求中包含用户号码,用户号码为sip协议的uri(uri,统一资源标识符),sip协议(session initialization protocol,会话初始协议)是ietf标准进程的一部分。
52.s2、根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中;
53.需要说明的是,每个服务器上都具有指挥调度服务器软件,音视频终端同时向所述的地址列表中的服务器发起注册请求,当注册请求到达每个服务器的指挥调度服务器软件后,该服务器的指挥调度服务器软件根据用户注册请求中的sip uri进行一致性哈希算法,判断其用户登录的终端归属该服务器,并将归属关系存储数据库中。
54.s3、接收到由终端发送的订阅请求;
55.需要说明的是,注册成功的服务器会向音视频终端返回注册成功能的通知信息,
然后音视频终端向所有注册成功的服务器发送sip协议中subscribe订阅请求,服务器接收到由终端发送的订阅请求。
56.s4、从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。
57.需要说明的是,收到订阅请求的所有服务器,每个服务器的指挥调度服务器软件通过查找数据库中注册用户的终端与服务器的归属关系,如果此音视频终端归属该服务器,则通过sip协议中的notify通知请求进行通知音视频终端,当前的服务器为主服务器。
58.如果从归属关系中确定此终端不归属该服务器,则同样需要通过sip协议中的notify通知请求进行通知用户,当前的服务器为备服务器,备服务器是指该服务器作为主服务器故障时的备用服务器。
59.如此,通过负载均衡方法,将终端按照uri(统一资源标识符uniform resource identifier,uri)进行哈希算法,并通过一致性的哈希算法将用户均衡的分布至可用的服务器上。用户开展音视频业务时,在其登录成功的服务器上开展。同时还实现了音视频热备份的功能,各服务器之间能够根据心跳检测判断其是否正常可用,当某一服务器不可用时,其他服务器按照预先配置的优先级进行接替此故障服务器,并将其上进行的业务进行恢复,以保证正常进行的音视频业务能够持续进行而不需用户手动重新发起。所有服务器间互相能够发送心跳包进行数据同步,以及检测维护服务器可用列表,正常可用的服务器能够一致对外提供音视频业务。
60.其中,步骤s2的具体流程说明如下:
61.s21、获取当前所有的服务器地址;
62.每个服务器都可以从配置文件读取当前的具有所有服务器地址的地址列表,配置文件内记载有所有的服务器地址。
63.s22、对每个服务器地址虚拟多个虚拟节点,将每个虚拟节点的节点编码分别和服务器地址进行哈希算法,将分别计算出的哈希值p作为分区编码,并与服务器地址存储至数据库中;
64.需要说明的是,对每个服务器地址虚拟多个虚拟节点,例如服务器地址为n1,其虚拟节点的节点编码id依序从m-n,将虚拟节点的节点编码从m-n范围内的所有节点编码分别与服务器地址n1进行哈希算法,将分别得出的哈希值作为一个分区编码id(如p1,p2,p3,

),并以此分区编码为key,服务器地址作为value的键值对(如{p1,n1},{p2,n1})按照p1,p2,p3,

等分区编码按照递增的顺序存储至nodes中。
65.这里存储的数据库为键值数据库,键值数据库也称key-value数据库,键值数据库的基本数据模型是key-value模型,key一般都是string类型,:不同的键值数据库一般区别在value值。
66.s23、将终端的用户号码使用上述的哈希算法计算哈希值h;
67.对音视频终端的用户的sip uri使用上述同样的哈希算法计算出对应哈希值h1。如果多个终端的可以分别依次计算出每个终端分别对应的哈希值h1、h2、

等。
68.s24、查找并比对在数据库中第一个大于或等于哈希值h的分区编码,读取数据库内与分区编码对应的服务器地址;
69.s25、将该服务器地址对应服务器确定为终端归属的服务器,并将归属关系存储数
据库中。
70.需要说明的是,对于音视频终端的的用户sip uri使用上述的哈希算法计算出对应哈希值h1后,并将此哈希值h1在nodes中与分区编码的大小关系为依据进行查找,直到找到第一个大于等于h1的分区编码(例如p1),并将此分区编码(如p1)对应的服务器地址(n1)读取出来,并返回给音视频终端,此时该服务器器则是音视频终端的归属服务器,并将此音视频终端的归属关系写入到redis中,其中redis是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,可用作数据库、缓存和消息代理。
71.如图3所示,可选的,该方法还包括s5、在服务器之间的故障切换或恢复的步骤,其具体流程说明如下:
72.s51、所有的服务器上运行的指挥调度服务器软件互相发送心跳包进行检测,其中心跳间隔时间、心跳超时和次数都可以通过配置进行设定。
73.s52、当某服务器发生故障后,假设发生故障的服务器地址为n1,对应的服务器处于离线状态,其他服务器(记为n2,n3)通过心跳包检测发现服务器地址n1发生故障并且处于离线状态。
74.s53、其它可用的服务器(如服务器地址n2或n3,

等)上运行的指挥调度服务器软件将故障服务器址址n1从地址列表中删除,并将此故障服务器地址n1关联的键值对(如{p1,n1},{p2,n1},

等)从nodes删除。
75.s54、其它可用的服务器(如服务器地址n2或n3,

等)的指挥调度服务器软件从redis中将服务器地址n1归属的用户全部查询出来,并应用一致性哈希算法将服务器地址n1归属的所述音视频终端重新分配,这里的重新分配是指重复步骤s2-s4。
76.当某一音频视终端重新分配合后确定归属在本服务器时,本服务器上运行的指挥调度服务器软件发送sip协议中的notify请求,通知音频视终端当前的服务器为主服务器,并将音频视终端的新的归属关系保存至redis中。
77.s55、当离线的服务器地址n1重新上线后,其他服务器通过心跳检测,发现故障的服务器恢复正常,此时将此服务器重新加入到地址列表中,并将其关联的键值对(如{p1,n1},{p2,n1},

)重新加入到nodes中。
78.s56、其他的服务器上的指挥调度服务器软件应用一致性哈希算法将归属的本服务器的音频视终端重新分配,如果计算后确定音频视终端不再归属本服务器,则发送sip协议中的notify请求通知用户当前的服务器为备服务器,并将用户的归属关系从redis中删除。
79.s57、重新上线的服务器上运行的指挥调度服务器软件对注册成功的音视频终端应用一致性哈希算法,向归属本服务器的用户发送sip协议中的notify订阅请求通知当前的服务器为主服务器,并将用户的归属关系保存至redis。
80.如图4所示,可选的,该方法还包括s6、音视频终端的点对点之间音视频业务故障恢复的步骤,其具体流程说明如下:
81.s61、当音视频终端在服务器地址n1进行点对点的音视频业务时,服务器址址n1通过数据同步将当前的点对点的音视频业务信息同步至其他服务器上(如服务器地址n2,n3,

等对应的服务器)。
82.s62、当服务器地址n1的服务器发生故障后,服务器地址n2或n3等的服务器通过心跳检测发现服务器地址n1的服务器发生故障处于离线状。通过预先配置的优先级,此时服务器地址n2的服务器上的指挥调度服务器软件将接管服务器地址n1的服务器上的点对点音视频业务。
83.s63、服务器地址n2的服务器的指挥调度服务器软件作为中间者,分别对正在进行点对点音视频业务的音视频终端重新发起呼叫。
84.s64、音视频终端在收到恢复点对点音视频业务的呼叫后,会将之前旧的呼叫挂断。并重新建立起新的音音视频业务的呼叫。此时服务器地址n2的服务器会将新的通话信息保存至数据库中,并通过数据同步至其他服务器上。
85.如图5所示,可选的,该方法还包括s7、音视频终端之间的音视频会议业务故障恢复的步骤,其具体流程说明如下:
86.s71、当多个音视频终端在服务器地址n1的服务器上进行音视频会议业务时,服务器地址n1的服务器通过将正在进行的音视频会议业务的状态,成员等信息序列化为xml格式,并通过http的接口发送给其他服务器地址(如n2,n3...等)的服务器用于音视频会议业务的备份。
87.s72、当服务器地址n1的服务器发生故障后,服务器地址n2,n3等的服务器通过心跳检测发现服务器地址n1发生故障处于离线状态。通过预先配置的优先级,此时服务器地址n2的服务器将接管服务器地址n1的服务器上的音视频会议业务。
88.s73、服务器地址n2的服务器的指挥调度服务器软件将之前备份的,序列化为xml格式的音视频会议的服务数据进行恢复,并通过sip协议的message方法信息发送给之前正在进行音视频会议的音视频终端。
89.s74、音视频终端用户在收到恢复音视频会议的message方法消息后,结束当前旧的音视频会议业务,并利用新的音视频会议状态信息恢复新的音视频会议。
90.s75、服务器地址n2的服务器在音视频会议恢复成功后,将新的音视频会议信息重新序列化为xml格式,并通过http的接口发送给其他服务器用于音视频会议业务的备份。
91.s76、当音视频会议状态发生改变时,服务器地址n2的服务器会为每个时刻的音视频会议信息打上序列号,用于音视频会议业务信息在服务器间的正确的同步。
92.如图6所示,可选的,该方法还包括s8、音视频终端之间的视频指挥业务的故障恢复的步骤,其具体流程说明如下:
93.s81、当音视频终端在服务器地址n1的服务器进行视频指挥业务时,服务器地址n1的服务器通过将正在进行的视频会议业务的状态,成员等信息序列化为xml格式,并通过http的接口发送给其他服务器(服务器地址n2,n3等)用于视频指挥业务的备份。
94.s82、当服务器地址n1的服务器发生故障后,服务器地址n2,n3的服务器通过心跳检测发现服务器地址n1发生故障处于离线状态。通过预先配置的优先级,此时服务器地址n2的服务器将接管服务器地址n1的服务器上的视频指挥业务。
95.s83、服务器地址n2的服务器的指挥调度服务器软件将之前备份的,序列化为xml格式的视频指挥的业务数据进行恢复,并通过sip协议的message方法发送给之前正在进行视频指挥的音视频终端。
96.s84、音视频终端在收到恢复视频指挥的message方法消息后,结束当前旧的视频
指挥业务,并利用新的视频指挥状态信息恢复新的视频指挥。
97.s85、服务器地址n2的服务器在视频指挥恢复成功后,将新的视频信息重新序列化为xml格式,并通过http的接口发送给其他服务器用于音视频会议业务的备份。
98.s86、当视频指挥状态发生改变时,服务器地址n2的服务器会为每个时刻的视频指挥信息打上序列号,用于视频指挥业务信息在服务器间的正确的同步。
99.本实施例利用一致性哈希算法将终端进行合理的负载均衡,并能够在服务器故障后,在其上的用户能够合理的分配至其他可用服务器上。同时支持至少2个以上的可用服务器同时对外提供音视频业务,并能在某一服务器发生故障后,其他可用服务器能够正常将其故障服务器上的业务进行恢复,保证音视频业务的持续可用。
100.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

技术特征:
1.基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,包括有如下步骤:接收终端发起的注册请求,注册请求包括有终端的用户号码;根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中;接收到由终端发送的订阅请求;从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。2.根据权利要求1所述的基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,其中所述“根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中”的步骤包括有:获取当前所有的服务器地址;对每个服务器地址虚拟多个虚拟节点,将每个虚拟节点的节点编码分别和服务器地址进行哈希算法,将分别计算出的哈希值p作为分区编码,并与服务器地址存储至数据库中;将终端的用户号码使用上述的哈希算法计算哈希值h;查找并比对在数据库中第一个大于或等于哈希值h的分区编码,读取数据库内与分区编码对应的服务器地址;将该服务器地址对应服务器确定为终端归属的服务器,并将归属关系存储数据库中。3.根据权利要求2所述的基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,所述数据库为键值数据库,将计算出的哈希值p作为一个分区编码,并以分区编码为key,以服务器地址为value的键值对,按分区编码的数值顺序存储至nodes中。4.根据权利要求1所述的基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,还包括有如下步骤:服务器之间互相发送用于进行检测服务器状态的心跳包;在检测到终端的主服务器处于离线状态时,删除数据库中主服务器的归属关系;获取归属主服务器的所有终端,并使用一致性哈希算法进行重新负载均衡处理。5.根据权利要求4所述的基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,还包括有如下步骤:在检测到离线的服务器处于在线状态时,将此服务器的归属关系存储数据库加入数据库中;将归属于此服务器下的所有终端使用一致性哈希算法进行重新负载均衡处理。6.根据权利要求1所述的基于一致性哈希算法的终端归属服务器的负载均衡处理方法,其特征在于,在所述“接收终端发起的注册请求”的步骤之前还包括有步骤:终端获取含有所有的服务器地址的地址列表;终端向地址列表中的所有的服务器发起注册请求,注册请求包括有终端的用户号码。7.基于一致性哈希算法的终端归属服务器的负载均衡处理系统,其特征在于,包括有:接收单元,用于接收终端发起的注册请求,注册请求包括有终端的用户号码;接收单元还用于接收到由终端发送的订阅请求;确定单元,用于根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服
务器,并将归属关系存储数据库中;查找单元,从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。8.根据权利要求7所述的基于一致性哈希算法的终端归属服务器的负载均衡处理系统,其特征在于,所述确定单元包括有:获取模块,用于获取当前所有的服务器地址;第一计算模块,用于对每个服务器地址虚拟多个虚拟节点,将每个虚拟节点的节点编码分别和服务器地址进行哈希算法,将分别计算出的哈希值p作为分区编码,并与服务器地址存储至数据库中;第二计算模块,将终端的用户号码使用上述的哈希算法计算哈希值h;比对模块,用于查找数据库中第一个大于或等于哈希值h的分区编码,读取数据库内与分区编码对应的服务器地址;存储模块,用于将该服务器地址对应服务器确定为终端归属的服务器,并将归属关系存储数据库中。9.一种设备,其特征在于,包括有:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-6任一项所述的方法。10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序在被执行时使得处理数理设备执行如权利要求1-6任一项所述的方法。

技术总结
本申请涉及一种基于一致性哈希算法的终端归属服务器的负载均衡处理方法,包括有如下步骤:接收终端发起的注册请求,注册请求包括有终端的用户号码;根据注册请求中的用户号码进行一致性哈希算法,确定终端归属的服务器,并将归属关系存储数据库中;接收到由终端发送的订阅请求;从数据库中查找终端的归属关系,将终端归属的服务器设为主服务器,其它服务器设为备服务器。将终端按照登录的用户号码进行哈希,并通过一致性哈希算法将终端均衡的分布至可用的服务器上,用户在终端上开展音视频业务时,在其登录成功的服务器上开展;通过设定备服务器的方式,保证了在主服务器故障时,能够持续进行而不需用户手动重新发起,达到热备份的功能。份的功能。份的功能。


技术研发人员:吴官宝 鲁彬
受保护的技术使用者:邦彦技术股份有限公司
技术研发日:2023.03.02
技术公布日:2023/7/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐