CN109040212B - 设备接入服务器集群方法、系统、设备及存储介质 - Google Patents
设备接入服务器集群方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN109040212B CN109040212B CN201810817484.7A CN201810817484A CN109040212B CN 109040212 B CN109040212 B CN 109040212B CN 201810817484 A CN201810817484 A CN 201810817484A CN 109040212 B CN109040212 B CN 109040212B
- Authority
- CN
- China
- Prior art keywords
- server
- hash ring
- partitions
- hash
- cluster
- 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
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种设备接入服务器集群方法、系统、设备及存储介质,所述方法包括如下步骤:为集群中各个服务器分配哈希环分区,得到哈希环分区表;获取待接入设备对应的哈希值;确定待接入设备对应的服务器识别信息;查询服务器的接入信息,并返回至所述待接入设备。本发明实现了设备与接入服务器的自动分配,而无需中心节点再进行分配;当服务器出现宕机等离线事件或新增服务器时,自动更新哈希环分区与服务器的映射关系,服务器根据更新后的哈希环分区表自动断开与应转移设备之间的连接,设备可以重新查询服务器的接入信息,重新实现连接,从而形成了一个无单点故障、快速定位和自动恢复的设备接入服务器集群方案。
Description
技术领域
本发明涉及服务器集群技术领域,尤其涉及一种设备接入服务器集群方法、系统、设备及存储介质。
背景技术
在监控系统中,随着前端监控摄像头的不断扩容,前端设备接入系统受到了很大的性能压力。传统的解决方案有如下两种:
(1)如图1所示,增强接入服务器的性能,使用更好的硬件服务器来完成前端设备接入;
(2)如图2所示,使用层级结构来进行设备的接入,将压力分担到子节点的设备接入系统,每个前端设备固定接入到对应的设备服务器。
第一种方案中,存在的缺点在于当设备量不断地增加,达到百万级别的时候,增强后的中心服务器的性能还是不足,并且随之而来的是中心服务器的性价比大幅度降低。
第二种方案中,存在的缺陷在于会出现单点故障,当某个子节点的设备接入系统停止服务之后,设备不能自动连入其他的接入系统,只能从中心节点根据预订信息定位指定设备的接入服务节点,然后向设备发送相应的信息。同时中心节点也是一个大的单点故障,如果中心节点出现问题,则整套系统无法运行。
现有出现了一种对第二种方案的改进方式,当设备预定的接入服务器宕机之后,设备向中心服务器申请,接入到新的服务器节点,但是这样会造成设备定位问题,当设备连接到的服务器变更之后,中心接入节点必须维护一份设备到接入服务器的动态变更信息,定位设备的时候,必须经过查找,才能与设备进行通信,增加中心接入节点的负载。同时中心接入节点需要根据各个接入服务器的负载,给未接入的设备分配接入服务器的节点,增加了业务复杂度。
发明内容
针对现有技术中的问题,本发明的目的在于提供一种设备接入服务器集群方法、系统、设备及存储介质,具有无单点故障、快速定位和自动恢复的特点。
本发明实施例提供一种设备接入服务器集群方法,包括如下步骤:
采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
获取待接入设备对应的哈希值;
根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;
根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备。
可选地,所述获取待接入设备对应的哈希值,包括如下步骤:
采用一致性哈希算法,根据待接入设备的识别信息计算待接入设备对应的哈希值。
可选地,所述方法还包括如下步骤:
监听所述集群中各个服务器的状态;
如果所述集群中发生服务器状态变更,则将所述哈希环分区分配至当前在线的服务器,并更新哈希环分区表。
可选地,如果所述集群中发生服务器状态变更,则将所述哈希环分区分配至当前在线的服务器,包括如下步骤:
如果所述集群中发生服务器离线变更,则将离线的服务器所对应的哈希环分区作为待分配分区,将所述待分配分区分配给当前集群中在线的服务器;
和/或,如果所述集群中发生服务器新增变更,则重新计算当前集群中各个服务器对应的哈希环分区数量,从各个服务器对应的哈希环分区中提取超过哈希环分区数量的分区作为待分配分区,将所有待分配分区分配给新增的服务器。
可选地,所述为集群中各个服务器分配哈希环分区,得到哈希环分区表,包括如下步骤:
集群中各个服务器将自身的识别信息和接入信息发送至etcd系统并加入选举,所述etcd系统配置为生成服务器信息列表并选举一服务器作为主节点服务器;
所述主节点服务器判断所述etcd系统中是否存在哈希环分区表;
如果不存在,则所述主节点服务器为各个服务器分配哈希环分区,将得到的哈希环分区表存入所述etcd系统。
可选地,所述方法还包括如下步骤:
所述主节点服务器监听所述etcd系统中的服务器信息列表;
如果所述服务器信息列表发生变更,所述主节点服务器根据变更后的服务器信息列表,将所述哈希环分区分配至当前在线的服务器,并更新所述etcd系统中的哈希环分区表。
可选地,所述方法还包括如下步骤:
各个所述服务器监听所述etcd系统中的哈希环分区表;
如果所述etcd系统中的哈希环分区表发生变更,则各个所述服务器读取更新的哈希环分区表;
所述服务器根据更新的哈希环分区表检查本机当前接入的设备,如果存在不是本机所对应的设备,则所述服务器断开该设备的连接。
可选地,所述为集群中各个服务器分配哈希环分区,包括如下步骤:
获取各个服务器设定的权值;
根据所述各个服务器的权值计算各个服务器对应的分区数量,权值越高的服务器对应的分区数量越大;
根据各个服务器对应的分区数量,为各个服务器分配哈希环分区,各个服务器的分区数量总和等于所述哈希环的分区总数。
本发明实施例还提供一种设备接入服务器集群系统,应用于所述的设备接入服务器集群方法,所述系统包括:
哈希环分区表生成模块,用于采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
服务器分配模块,用于获取待接入设备对应的哈希值,并根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;
接入信息返回模块,用于根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备。
本发明实施例还提供一种设备接入服务器集群设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的设备接入服务器集群方法的步骤。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的设备接入服务器集群方法的步骤。
本发明所提供的设备接入服务器集群方法、系统、设备及存储介质具有下列优点:
本发明通过建立哈希环分区与服务器的映射关系,根据设备的哈希值可以确定设备对应的服务器,实现了设备与接入服务器的自动分配,而无需中心节点再进行分配;当服务器出现宕机等离线事件或新增服务器时,自动更新哈希环分区与服务器的映射关系,服务器根据更新后的哈希环分区表自动断开与应转移设备之间的连接,设备可以重新查询服务器的接入信息,重新实现连接,从而形成了一个无单点故障、快速定位和自动恢复的设备接入服务器集群方案。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是现有技术中第一种设备接入服务器集群的系统结构图;
图2是现有技术中第二种设备接入服务器集群的系统结构图;
图3是一致性哈希环的示意图;
图4是本发明一实施例的设备接入服务器集群方法的流程图;
图5是本发明一实施例的设备、服务器和哈希环分区的映射关系示意图;
图6是本发明一实施例的设备接入服务器集群系统的结构示意图;
图7是本发明一实施例的设备接入服务器集群设备的结构示意图;
图8是本发明一实施例的计算机存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
为了解决上述技术问题,本发明引入了一致性哈希环来解决服务器和待接入设备的自动匹配的问题。引入一致性哈希环是为了减少服务器列表变化时,需要连接新的服务器的设备。一致性哈希环是将服务器的列表根据服务器的唯一信息(IP地址等)进行哈希,将其结果分配到一个圆环区间上,此处是(0~232),然后对设备的识别信息(例如设备的ID号)进行哈希,结果也落在该圆环区间上,从设备ID的哈希结果向右进行查找,找到的第一个服务器节点的哈希值就是要分配给该设备的服务器,超过最大值之后,就从0开始。例如图3中示出的,其中示出了四个服务器A1、A2、A3和A4以及三个待接入设备B1、B2和B3的哈希值在哈希环上的位置,待接入设备B1对应接入服务器A1,待接入设备B2对应接入服务器A2,待接入设备B3对应接入服务器A3。
当采用该种方式时,如果增加或删除服务器节点,为了将性能平均分摊到服务器集群上,需要根据设备的哈希值重新在新的环上向右寻找对应的服务器哈希值。测试下来如果有100个服务器,新增一个服务器时,需要移动的设备数量是50%。
所以,进一步地,本发明在一致性哈希环的基础上引入了分区的概念。首先建立分区和服务器之间的映射关系,设备的哈希值每次固定落在某个分区上,然后再通过分区和服务器之间的映射关系,找到对应的服务器信息。当服务器列表发生变化时,只需要修改分区和服务器的对应关系,更新分区对应的服务器信息。
基于此,如图4所示,本发明实施例提供了一种设备接入服务器集群方法,包括如下步骤:
S100:采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
S200:获取待接入设备对应的哈希值;
S300:根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;如图5示出了待接入设备、服务器以及分区的对应关系,此处设备、服务器和分区的数量和连接关系仅为示例;
S400:根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备。服务器的识别信息可以包括服务器ID或服务器IP等服务器唯一标识信息,服务器的接入信息可以包括服务器的ID地址、服务器的端口信息等可以供设备接入的信息。
该实施例的设备接入服务器集群方法主要依靠哈希环中的两个映射表,一个是哈希环分区与服务器识别信息的映射表,一个是服务器识别信息与服务器接入信息的映射表。其中,哈希环分区表包括的内容可以如下表1所示,此处表1中的数据和形式仅为示例,采用其他形式的包括各个分区的哈希值范围和对应的服务器识别信息的文件形式均可以作为本发明的哈希环分区表,均属于本发明的保护范围之内。
表1哈希环分区表
分区ID | 哈希值范围 | 服务器识别信息 |
1 | 0~2<sup>32</sup>/n | 172.16.1.33 |
2 | (2<sup>32</sup>/n)+1~2*(2<sup>32</sup>/n) | 172.16.1.33 |
3 | 2*(2<sup>32</sup>/n)+1~3*(2<sup>32</sup>/n) | 172.16.1.22 |
4 | 3*(2<sup>32</sup>/n)+1~4*(2<sup>32</sup>/n) | 172.16.1.22 |
…… | …… | …… |
n | (n-1)*(2<sup>32</sup>/n)+1~2<sup>32</sup> | 172.16.1.11 |
在该实施例中,所述获取待接入设备对应的哈希值,包括如下步骤:
采用一致性哈希算法,根据待接入设备的识别信息(例如设备ID)计算待接入设备对应的哈希值。本发明不限于此,其他例如根据待接入设备的MAC地址等识别信息,或者根据待接入设备发送的请求信息等计算待接入设备对应的哈希值,均属于本发明的保护范围之内。
进一步地,在形成哈希环分区表后,所述设备接入服务器集群方法还包括如下步骤:
监听所述集群中各个服务器的状态;
如果所述集群中发生服务器状态变更,则将所述哈希环分区分配至当前在线的服务器,并更新哈希环分区表。
在该实施例中,如果所述集群中发生服务器状态变更,则将所述哈希环分区分配至当前在线的服务器,包括如下步骤:
如果所述集群中发生服务器离线变更,则将离线的服务器所对应的哈希环分区作为待分配分区,将所述待分配分区分配给当前集群中在线的服务器,从而保证只有离线的服务器所对应的哈希环分区被重新分配,将哈希环分区表中服务器和分区映射关系变动降至最低;此处服务器离线指的是服务器发生宕机等故障或删除该服务器;
和/或,如果所述集群中发生服务器新增变更,则重新计算当前集群中各个服务器对应的哈希环分区数量,从各个服务器对应的哈希环分区中提取超过哈希环分区数量的分区作为待分配分区,将所有待分配分区分配给新增的服务器,从而保证对于之前已经存在的服务器来说,其对应的分区变动最小,仅是取出来一部分分区分给了新的服务器,而保留大部分原有分区,将哈希环分区表中服务器和分区映射关系变动降至最低。
以上述(0~232)的哈希环为例,引入232个分区,即一个分区对应一个整数值。这样通过引入一个分区层,来将设备的哈希值和要分配的服务器的列表隔离开来。比如向100台服务器新增一台服务器时,需要改变的分区数为232/101,从之前的100个服务器的分区中,取出对应个数的分区,分配给新的服务器,这样只修改了分区和服务器的对应关系,并不影响设备的哈希值计算,删除服务器时同理,在分区和服务器的对应关系中,将去除的服务器的分区分配给已有的服务器即可。
根据测试结果,100台服务器新增一台服务器的时候,只会有1%的数据需要进行移动,与之前的方案相比,集群扩容性能大大提高。
在实际项目中,当新增服务器,或服务器宕机的时候,这里只对分区和服务器的对应关系进行更新,只有对应服务器个数/(服务器总数*设备总量)的设备个数需要更新到新的服务器上,同时服务器集群性能更加均衡。此处对应服务器个数指的是发生变更的服务器个数,例如新增服务器个数或宕机服务器个数。
由于服务器集群系统是逐步演化而来的,会造成组成集群的服务器性能经常相差比较大,所以该实施例进一步引入了带权重的分区分配策略,每个服务器都有指定的权重,然后根据各个服务器占有的权重比,将分区总数进行分配,这样每个服务区根据其比重不同,占据不同的分区总数,综合是2的32次方。
即在该实施例中,所述为集群中各个服务器分配哈希环分区,包括如下步骤:
获取各个服务器设定的权值;
根据所述各个服务器的权值计算各个服务器对应的分区数量,权值越高的服务器对应的分区数量越大;
根据各个服务器对应的分区数量,为各个服务器分配哈希环分区,各个服务器的分区数量总和等于所述哈希环的分区总数。
232的分区总数,是一个非常大的数据,为了优化哈希环表的大小,该实施例中采用2m*2n的服务器个数的分配方式,例如预计服务器会扩容到256台,则采用223的分区总数进行匹配。
在此以一个具体实例来进一步说明服务器分区的分配方式。例如,如上预计服务器会扩容到256台,采用223的分区总数进行匹配,即相当于分配的是29个分区份额,每份分区份额有223个分区。假设当前有100个服务器,且100个分区平均分配这29个分区份额时,每个分区分得的分区份额有:(29/100)个,也就是说,每个分区分得的分区个数为(29/100)*223个。100个服务器的分区总数加起来也就是[(29/100)*223]*100=223。当服务器增加到101个时,每个服务器分得的分区份额为(29/101)个,每个服务器分得的分区个数为(29/101)*223个;或者当有一个服务器宕机时,需要将宕机的服务器的(29/100)*223个分区重新分配到其他的99个服务器上去,每个服务器分得的分区个数则变为(29/99)*223个。
当100个服务器存在权重值的不同时,则可以根据权重进一步进行分配,设各个服务器的权重值分别为ki,i∈(1,100),各个服务器的分区数量为ni。则权重值和分区数量满足如下公式:
n1:n2:n3:n4:……:n100=k1:k2:k3:k4:……:k100
n1+n2+n3+n4+……+n100=232
根据上述两个公式可以进一步得到如下一个公式:
ki*x=ni
(k1+k2+k3+k4+……+k100)*x=232
由于各个服务器的权重值是预设的已知的数值,可以计算得到x值,根据ki*x=ni即可以计算得到各个服务器分得的分区值。x即表示权重值为1时分得的分区数量。
此处列举的服务器的个数和分区的个数、分区的份额数均为示例,在实际应用中不限于此,采用其他数值的,均属于本发明的保护范围之内。
当服务器的设备列表发生变更时,对应的哈希环的文件也要进行更新。在采用一致性哈希环的基础上,该实施例进一步引入了etcd服务。etcd的定义是:A highly-available key value store for shared configuration and service discovery,即用于共享配置和服务发现的高可用的键值存储系统。
在利用etcd服务时,当各个服务器正常进入服务状态之后,利用etcd的租约,将各自将其IP地址,端口等其他信息写入到etcd的/videomonitoring/puilist/目录下面,当服务器宕机或者不工作时,租约到期没有续约时,etcd会自动将该服务器的信息清除掉。
VideoMonitoring
pushinglisht(服务器列表目录)
172.16.1.22接入服务器
172.16.1.33接入服务器
mainnode(主节点)
puihashring(哈希环节点)
各个服务器启动后,会通过etcd的选举功能,选择出一个主节点服务器,由主节点服务器根据服务器信息列表的编号,etcd系统中是否有哈希环表存在等信息来负责哈希环文件的生成和更新。
在该实施例中,所述为集群中各个服务器分配哈希环分区,得到哈希环分区表,包括如下步骤:
集群中各个服务器将自身的识别信息和接入信息发送至etcd系统并加入选举,所述etcd系统配置为生成服务器信息列表并选举一服务器作为主节点服务器;
所述主节点服务器判断所述etcd系统中是否存在哈希环分区表;
如果不存在,则所述主节点服务器为各个服务器分配哈希环分区,将得到的哈希环分区表存入所述etcd系统。
主节点是通过选举产生的,当当前的主节点服务器宕机之后,立刻回从其他的节点服务器中选举出新的主节点,接管etcd系统中服务器信息列表的监听和哈希环分区表的生成工作。
在该实施例中,所述主节点服务器会监听所述etcd系统中的服务器信息列表;
如果所述服务器信息列表发生变更,所述主节点服务器根据变更后的服务器信息列表,将所述哈希环分区分配至当前在线的服务器,并更新所述etcd系统中的哈希环分区表。
即当某个服务器宕机,或者新的服务器加入集群时,在etcd的/videomonitoring/puilist/目录下会删除或增加该服务器节点的信息,主节点服务器监控该目录,有变化会立刻得到通知,当变化发生固定时候之后,主节点服务器会触发生成新的哈希环的操作,然后将新的哈希环文件写入/videomonitoring/puilist/该节点值。
在该实施例中,各个所述服务器启动之后,都会监听所述etcd系统中的哈希环分区表,即该实施例中/videomonitoring/puihashring key节点;
如果所述etcd系统中的哈希环分区表发生变更,则各个所述服务器会立刻得到通知,读取该节点中更新的哈希环分区表;
所述服务器根据更新的哈希环分区表检查本机当前接入的设备,如果存在不是本机所对应的设备,则所述服务器断开该设备的连接。
由此,在该实施例中,服务器节点的服务发现,主节点的选举,哈希环文件的存储都是利用etcd的机制来实现的,服务器信息列表更新的监听、哈希环分区表的更新等均是自动化操作。
采用本发明的设备接入服务器集群方法,可以为待接入设备提供查询服务,对于待接入设备来说,需要接入服务器时,将接入请求发送到查询系统,查询系统将设备的哈希值对应的服务器的接入信息返回至待接入设备后,待接入设备即可以根据接入信息连接至对应的服务器。查询服务可以通过http的短连接来提供。
待接入设备查询到接入服务器的地址之后,即连接到服务器。当有服务器加入或宕机,哈希分区表更新之后,各个服务器读取到新的哈希分区表之后,检查一下本机接入的设备中,哪些设备的设备哈希值和分区指向的服务器索引,不是本机服务器在服务器信息列表中的索引,然后向该设备发送接入服务器更新的消息,并断开与该设备的连接。设备在接收到服务器更新消息之后,重新查询设备哈希值对应的服务器,然后进行接入服务。
因此,通过采用该实施例的设备接入服务器集群方法,围绕etcd服务和哈希环文件,提供了接入服务器列表的自动发现,然后选举出主节点,生成哈希环文件,前端设备向接入服务器先查询该设备对应的接入服务器,然后发起连接。当服务器信息列表更新时,主节点生成新的哈希文件,各个服务器关闭不应该在其上面接入的设备,设备重新进行查询和接入对应的服务器。当要定位某个前端设备时,根据哈希环文件和设备ID进行哈希值计算即可准确得到其所在的接入服务器,然后发送控制调度消息。形成了一个无单点故障,快速定位和自动恢复的设备接入集群方案。本发明中的待接入设备不仅限于前端设备,也可以为其他类型的设备,均属于本发明的保护范围之内。
如图6所示,本发明实施例还提供一种设备接入服务器集群系统,应用于所述的设备接入服务器集群方法,所述系统包括:
哈希环分区表生成模块100,用于采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
服务器分配模块200,用于获取待接入设备对应的哈希值,并根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;
接入信息返回模块300,用于根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备。
本发明实施例还提供一种设备接入服务器集群设备,包括处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行所述的设备接入服务器集群方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图7来描述根据本发明的这种实施方式的电子设备600。图7显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图4中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的设备接入服务器集群方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图8所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,与现有技术相比,本发明通过建立哈希环分区与服务器的映射关系,根据设备的哈希值可以确定设备对应的服务器,实现了设备与接入服务器的自动分配,而无需中心节点再进行分配;当服务器出现宕机等离线事件或新增服务器时,自动更新哈希环分区与服务器的映射关系,服务器根据更新后的哈希环分区表自动断开与应转移设备之间的连接,设备可以重新查询服务器的接入信息,重新实现连接,从而形成了一个无单点故障、快速定位和自动恢复的设备接入服务器集群方案。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种设备接入服务器集群方法,其特征在于,包括如下步骤:
采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
获取待接入设备对应的哈希值;
根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;
根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备;
所述为集群中各个服务器分配哈希环分区,包括如下步骤:
获取各个服务器设定的权值;
根据所述各个服务器的权值计算各个服务器对应的分区数量,权值越高的服务器对应的分区数量越大;
根据各个服务器对应的分区数量,为各个服务器分配哈希环分区,各个服务器的分区数量总和等于所述哈希环的分区总数;
所述方法还包括如下步骤:
监听所述集群中各个服务器的状态;
如果所述集群中发生服务器新增变更,则重新计算当前集群中各个服务器对应的哈希环分区数量,从各个服务器对应的哈希环分区中提取超过哈希环分区数量的分区作为待分配分区,将所有待分配分区分配给新增的服务器,更新哈希环分区与服务器的映射关系,所述服务器根据更新后的哈希环分区表自动断开与应转移设备之间的连接。
2.根据权利要求1所述的设备接入服务器集群方法,其特征在于,所述获取待接入设备对应的哈希值,包括如下步骤:
采用一致性哈希算法,根据待接入设备的识别信息计算待接入设备对应的哈希值。
3.根据权利要求1所述的设备接入服务器集群方法,其特征在于,监听所述集群中各个服务器的状态之后,还包括如下步骤:
如果所述集群中发生服务器离线变更,则将离线的服务器所对应的哈希环分区作为待分配分区,将所述待分配分区分配给当前集群中在线的服务器。
4.根据权利要求1所述的设备接入服务器集群方法,其特征在于,所述为集群中各个服务器分配哈希环分区,得到哈希环分区表,包括如下步骤:
集群中各个服务器将自身的识别信息和接入信息发送至etcd系统并加入选举,所述etcd系统配置为生成服务器信息列表并选举一服务器作为主节点服务器;
所述主节点服务器判断所述etcd系统中是否存在哈希环分区表;
如果不存在,则所述主节点服务器为各个服务器分配哈希环分区,将得到的哈希环分区表存入所述etcd系统。
5.根据权利要求4所述的设备接入服务器集群方法,其特征在于,所述方法还包括如下步骤:
所述主节点服务器监听所述etcd系统中的服务器信息列表;
如果所述服务器信息列表发生变更,所述主节点服务器根据变更后的服务器信息列表,将所述哈希环分区分配至当前在线的服务器,并更新所述etcd系统中的哈希环分区表。
6.根据权利要求5所述的设备接入服务器集群方法,其特征在于,所述方法还包括如下步骤:
各个所述服务器监听所述etcd系统中的哈希环分区表;
如果所述etcd系统中的哈希环分区表发生变更,则各个所述服务器读取更新的哈希环分区表;
所述服务器根据更新的哈希环分区表检查本机当前接入的设备,如果存在不是本机所对应的设备,则所述服务器断开该设备的连接。
7.一种设备接入服务器集群系统,其特征在于,应用于权利要求1至6中任一项所述的设备接入服务器集群方法,所述系统包括:
哈希环分区表生成模块,用于采用一致性哈希环算法,为集群中各个服务器分配哈希环分区,得到哈希环分区表,所述哈希环分区表包括各个分区的哈希值范围和对应的服务器识别信息;
服务器分配模块,用于获取待接入设备对应的哈希值,并根据所述哈希环分区表和待接入设备的哈希值确定待接入设备对应的服务器识别信息;
接入信息返回模块,用于根据服务器识别信息查询服务器的接入信息,并返回至所述待接入设备。
8.一种设备接入服务器集群设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至6中任一项所述的设备接入服务器集群方法的步骤。
9.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现权利要求1至6中任一项所述的设备接入服务器集群方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810817484.7A CN109040212B (zh) | 2018-07-24 | 2018-07-24 | 设备接入服务器集群方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810817484.7A CN109040212B (zh) | 2018-07-24 | 2018-07-24 | 设备接入服务器集群方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109040212A CN109040212A (zh) | 2018-12-18 |
CN109040212B true CN109040212B (zh) | 2021-09-21 |
Family
ID=64644535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810817484.7A Active CN109040212B (zh) | 2018-07-24 | 2018-07-24 | 设备接入服务器集群方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109040212B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109861863B (zh) * | 2019-02-11 | 2022-02-25 | 南方科技大学 | 数据中心的连接故障确定方法、装置、电子设备和介质 |
CN109981767A (zh) * | 2019-03-20 | 2019-07-05 | 浪潮商用机器有限公司 | Hana数据库访问方法、装置、系统、设备及存储介质 |
CN110071978B (zh) * | 2019-04-28 | 2022-04-22 | 新华三信息安全技术有限公司 | 一种集群管理的方法及装置 |
CN110222030B (zh) * | 2019-05-13 | 2021-08-06 | 福建天泉教育科技有限公司 | 数据库动态扩容的方法、存储介质 |
CN112306651A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种资源分配方法和资源借调方法 |
CN110535939B (zh) * | 2019-08-29 | 2022-02-11 | 深圳前海环融联易信息科技服务有限公司 | 一种服务发现与抢占方法、装置、计算机设备及存储介质 |
CN110740167A (zh) * | 2019-09-20 | 2020-01-31 | 北京浪潮数据技术有限公司 | 一种分布式存储系统及其节点监控方法 |
CN110971480B (zh) * | 2019-10-18 | 2022-08-19 | 平安科技(深圳)有限公司 | 计算机网络状况监控方法、装置、计算机设备及存储介质 |
CN113127409A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 数据实时归档用运算集群的管理方法、装置、设备及介质 |
CN111614760A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种将物联网设备均衡分配接入的方法及装置 |
CN111708668B (zh) * | 2020-05-29 | 2023-07-07 | 北京金山云网络技术有限公司 | 集群故障的处理方法、装置及电子设备 |
CN112015561A (zh) * | 2020-09-16 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 用于流式计算服务的方法、装置和系统 |
CN112367214B (zh) * | 2020-10-12 | 2022-06-14 | 成都精灵云科技有限公司 | 基于etcd的主节点快速检测和切换方法 |
CN112486672A (zh) * | 2020-11-17 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种服务内存缓存调用方法和装置 |
CN114143368B (zh) * | 2021-12-21 | 2022-12-30 | 苏州万店掌网络科技有限公司 | 通信方法及装置 |
CN114553900B (zh) * | 2022-02-18 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种分布式块存储管理系统、方法及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103299296A (zh) * | 2011-12-22 | 2013-09-11 | 华为技术有限公司 | 一种分布式存储系统中分区管理方法、设备及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101920630B1 (ko) * | 2012-05-22 | 2018-11-21 | 삼성에스디에스 주식회사 | 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법 |
CN104852934A (zh) * | 2014-02-13 | 2015-08-19 | 阿里巴巴集团控股有限公司 | 基于前端调度实现流量分配的方法、装置和系统 |
US9733863B1 (en) * | 2016-08-18 | 2017-08-15 | International Business Machines Corporation | Correlating storage rings |
CN108132830B (zh) * | 2016-12-01 | 2020-12-25 | 北京金山云网络技术有限公司 | 一种任务调度方法、装置及系统 |
CN107171971A (zh) * | 2017-05-11 | 2017-09-15 | 北京云端智度科技有限公司 | 利用一致性哈希策略实现网络流量负载均衡的方法 |
-
2018
- 2018-07-24 CN CN201810817484.7A patent/CN109040212B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103299296A (zh) * | 2011-12-22 | 2013-09-11 | 华为技术有限公司 | 一种分布式存储系统中分区管理方法、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109040212A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109040212B (zh) | 设备接入服务器集群方法、系统、设备及存储介质 | |
US10805406B2 (en) | Zone redundant computing services using multiple local services in distributed computing systems | |
US9563673B2 (en) | Query method for a distributed database system and query apparatus | |
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
US10275184B2 (en) | Framework for volatile memory query execution in a multi node cluster | |
US9454444B1 (en) | Using location tracking of cluster nodes to avoid single points of failure | |
CN109597567B (zh) | 一种数据处理方法和装置 | |
US20140149537A1 (en) | Distributed caching cluster management | |
CN107087031B (zh) | 一种存储资源负载均衡方法及装置 | |
CN101984632A (zh) | 一种分布式缓存系统中负荷分配方法、装置及服务器 | |
CN110196860B (zh) | 唯一标识分配方法及装置、电子设备、存储介质 | |
US9390156B2 (en) | Distributed directory environment using clustered LDAP servers | |
CN110569302A (zh) | 一种基于lucene的分布式集群的物理隔离的方法及装置 | |
CN112153167A (zh) | 网际互连协议管理方法、装置、电子设备及存储介质 | |
US20140129598A1 (en) | Dynamic management of log persistence | |
US8555021B1 (en) | Systems and methods for automating and tuning storage allocations | |
CN110740155A (zh) | 分布式系统中的请求处理方法及装置 | |
US10498696B2 (en) | Applying a consistent hash to a distributed domain name server cache | |
CN110457307B (zh) | 元数据管理系统、用户集群创建方法、装置、设备和介质 | |
CN116615719A (zh) | 生成用于在数据中心中电隔离故障域的配置的技术 | |
CN109005071B (zh) | 一种决策部署方法和调度设备 | |
CN112685486B (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
KR101980320B1 (ko) | Gpu기반의 빅데이터 검색 질의 병렬 분산처리 방법 | |
CN111400110A (zh) | 数据库访问管理系统 | |
CN110601802B (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 |