CN108199882A - 分布式数据库的节点分配方法、装置、储存介质和设备 - Google Patents
分布式数据库的节点分配方法、装置、储存介质和设备 Download PDFInfo
- Publication number
- CN108199882A CN108199882A CN201711488053.2A CN201711488053A CN108199882A CN 108199882 A CN108199882 A CN 108199882A CN 201711488053 A CN201711488053 A CN 201711488053A CN 108199882 A CN108199882 A CN 108199882A
- Authority
- CN
- China
- Prior art keywords
- copy set
- server
- node
- complete copy
- idle
- 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.)
- Granted
Links
Classifications
-
- 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/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
Abstract
本公开涉及一种分布式数据库的节点分配方法、装置、储存介质和设备,该方法包括:获取分布式数据库中多个非完备副本集的第一位置信息,该第一位置信息包括该非完备副本集中的可投票节点所在的服务器以及所处的机架;获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,该第二位置信息包括该闲置仲裁节点所在的服务器以及所处的机架;根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点。能够通过综合数据库中所有非完备副本集中的可投票节点和所有空闲仲裁节点所处的服务器和机架位置,为所有副本集分配仲裁节点,避免人工部署副本集的繁琐步骤,增加副本集部署的效率和适应性。
Description
技术领域
本公开涉及数据库管理领域,具体地,涉及一种分布式数据库的节点分配方法、装置、储存介质和设备。
背景技术
随着数据量的高速增长,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征的情况下,将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量,Mongodb就是其中的一种。在生产环境中,需要将Mongodb按照集群方式进行部署,Mongodb集群由分片组成,每个分片为一个副本集,副本集中的成员个数需要保持为奇数,以保证网络分区的情况下不产生脑裂。副本集中的成员可以是工作节点,也可以是仲裁节点,工作节点接受读写请求,会产生工作负载,仲裁节点作为仲裁者角色只参与投票进行选举,而不接受读写请求,因而不产生工作负载。仲裁者和同一个副本集中的工作节点需要分布在不同的服务器上,以避免该服务器意外关闭导致该副本集不能正常工作。
相关技术中,在对Mongodb中的副本集中的成员进行部署时,可以通过人工部署的方式,把多个仲裁节点都部署到一台性能较低的服务器上。ClouderaManager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的数据库管理软件,在使用ClouderaManager来管理Mongodb时,由于ClouderaManager的限制,每台服务器上同一个角色只能部署一个。此时,由于Cloudera Manager限制下独特的副本集工作节点部署规则,仍然采用手工部署的方式在逻辑上更为复杂,不仅耗时耗力,而且容易出现部署错误、适应性不强的问题。
发明内容
为克服相关技术中存在的问题,本公开提供一种分布式数据库的节点分配方法、装置、储存介质和设备。
根据本公开实施例的第一方面,提供一种分布式数据库的节点分配方法,包括:
获取分布式数据库中多个非完备副本集的第一位置信息,所述非完备副本集为包含偶数个可投票节点的副本集,其中,所述可投票节点包括可投票的工作节点和仲裁节点,不同可投票节点部署在不同服务器上,所述第一位置信息包括所述非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;
获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,所述第二位置信息包括所述多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;
根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集。
可选的,所述获取分布式数据库中多个非完备副本集的第一位置信息,包括:
获取所述分布式数据库中所有所述非完备副本集,得到所述多个非完备副本集;
确定所述多个非完备副本集中的每个非完备副本集的M个可投票节点所部署的M个服务器,其中,M为大于零的整数;
分别确定所述M个服务器所处的机架,所述M个服务器所处的机架为一个或多个机架。
可选的,所述获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,包括:
获取所述分布式数据库中存在的N个闲置仲裁节点,其中,N为大于零的整数;
分别确定所述N个所述闲置仲裁节点所在的所述N个服务器;
分别确定所述N个服务器所处的机架,所述N个服务器所处的机架为一个或多个机架。
可选的,所述多个闲置仲裁节点为N个闲置仲裁节点,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,包括:
当所述多个非完备副本集的数量大于N时,确认分配失败并输出提醒消息,所述提醒消息用于提醒需要重新部署闲置仲裁节点;
当所述多个非完备副本集的数量小于或等于N时,获取将所述N个闲置仲裁节点分配给所述多个非完备副本集的所有排列组合;
在所述所有排列组合中确定能够使所述多个非完备副本集均被配置为完备副本集的目标排列组合;
当所述目标排列组合的数量为零时,确认分配失败并输出所述提醒消息;
当所述目标排列组合的数量不为零时,获取每个所述目标排列组合中的规定副本集的数量,所述规定副本集为副本集中所有节点属于同一机架的副本集;
将包含所述规定副本集的数量最多的目标排列组合确定为所述N个闲置仲裁节点在所述多个非完备副本集中的分配方案。
可选的,所述多个闲置仲裁节点为N个闲置仲裁节点,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,包括:
将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述N个闲置仲裁节点所在的N个服务器进行对比,确定所述N个服务器中是否存在不包含于所述M个服务器的服务器,i为大于零的整数,i的起始值为1,i小于或等于所述多个非完备副本集的数量;
当确定所述N个服务器全部包含于所述M个服务器时,确定所述第i个非完备副本集无法分配仲裁节点;或者,
当确定所述N个服务器中存在不包含于所述M个服务器的X个服务器时,获取处于所述X个服务器的X个闲置仲裁节点,以及所述X个服务器所处的机架,其中,X为大于零的整数,且X小于或等于N;
根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点;
另i=i+1,并再次执行将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述分布式数据库中所有的N-1个闲置仲裁节点所在的N-1个服务器进行对比至所述根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点的步骤。
可选的,所述根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点,包括:
当确定所述M个服务器同处于第一机架时,确定所述X个服务器中是否存在处于所述第一机架的服务器;
当确定所述X个服务器中存在处于所述第一机架的Y个服务器时,从所述X个闲置仲裁节点中确定处于所述Y个服务器上的Y个闲置仲裁节点,其中,Y为大于零的整数,且Y小于或等于X;
将所述Y个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集;或者,
当确定所述M个服务器不所于同一机架,或者确定所述M个服务器同处于所述第一机架但所述X个服务器中不存在处于所述第一机架的服务器时,将所述X个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集。
可选的,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,还包括:
当确定所述第i个非完备副本集无法分配仲裁节点时,将所述N个闲置仲裁节点中已分配的仲裁节点重新设置为闲置仲裁节点;
重新执行所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点的步骤,并且在重新执行时保证所述N个闲置仲裁节点的分配方案与之前执行时得到历史分配方案不同,直至所述多个非完备副本集均被配置为完备副本集。
可选的,所述方法还包括:
当在执行所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点的步骤到达k次,且所述k次对应的k个分配方案均无法保证所述多个非完备副本集均被配置为完备副本集时,输出提醒消息,所述提醒消息用于提醒需要重新部署闲置仲裁节点,其中k为大于零的整数,k为所有所述分配方案的总数量。
根据本公开实施例的第二方面,提供一种分布式数据库的节点分配装置,所述装置包括:
第一位置信息获取模块,用于获取分布式数据库中多个非完备副本集的第一位置信息,所述非完备副本集为包含偶数个可投票节点的副本集,其中,所述可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,所述第一位置信息包括所述非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;
第二位置信息获取模块,用于获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,所述第二位置信息包括所述多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;
节点分配模块,用于根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集。
可选的,所述第一位置信息获取模块,包括:
副本集获取子模块,用于获取所述分布式数据库中所有所述非完备副本集,得到所述多个非完备副本集;
第一服务器确定子模块,用于确定所述多个非完备副本集中的每个非完备副本集的M个可投票节点所部署的M个服务器,其中,M为大于零的整数;
第一机架确定子模块,用于分别确定所述M个服务器所处的机架,所述M个服务器所处的机架为一个或多个机架。
可选的,所述第二位置信息获取模块,包括:
仲裁节点获取子模块,用于获取所述分布式数据库中存在的N个闲置仲裁节点,其中,N为大于零的整数;
第二服务器确定子模块,用于分别确定所述N个所述闲置仲裁节点所在的所述N个服务器;
第二机架确定子模块,用于分别确定所述N个服务器所处的机架,所述N个服务器所处的机架为一个或多个机架。
可选的,所述多个闲置仲裁节点为N个闲置仲裁节点,所述节点分配模块,包括:
提醒输出子模块,用于当所述多个非完备副本集的数量大于N时,确认分配失败并输出提醒消息,所述提醒消息用于提醒需要重新部署闲置仲裁节点;
排列组合获取子模块,用于当所述多个非完备副本集的数量小于或等于N时,获取将所述N个闲置仲裁节点分配给所述多个非完备副本集的所有排列组合;
排列组合确定子模块,用于在所述所有排列组合中确定能够使所述多个非完备副本集均被配置为完备副本集的目标排列组合;
所述提醒输出子模块,还用于当所述目标排列组合的数量为零时,确认分配失败并输出所述提醒消息;
数量获取子模块,用于当所述目标排列组合的数量不为零时,获取每个所述目标排列组合中的规定副本集的数量,所述规定副本集为副本集中所有节点属于同一机架的副本集;
方案确定子模块,用于将包含所述规定副本集的数量最多的目标排列组合确定为所述N个闲置仲裁节点在所述多个非完备副本集中的分配方案。
可选的,所述多个闲置仲裁节点为N个闲置仲裁节点,所述节点分配模块,包括:
服务器匹配子模块,用于将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述N个闲置仲裁节点所在的N个服务器进行对比,确定所述N个服务器中是否存在不包含于所述M个服务器的服务器,i为大于零的整数,i的起始值为1,i小于或等于所述多个非完备副本集的数量;
仲裁节点确定子模块,用于当确定所述N个服务器全部包含于所述M个服务器时,确定所述第i个非完备副本集无法分配仲裁节点;或者,
当确定所述N个服务器中存在不包含于所述M个服务器的X个服务器时,获取处于所述X个服务器的X个闲置仲裁节点,以及所述X个服务器所处的机架,其中,X为大于零的整数,且X小于或等于N;
节点分配子模块,用于根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点;
循环执行子模块,用于另i=i+1,并再次执行将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述分布式数据库中所有的N-1个闲置仲裁节点所在的N-1个服务器进行对比至所述根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点的步骤。
可选的,所述节点分配子模块,用于:
当确定所述M个服务器同处于第一机架时,确定所述X个服务器中是否存在处于所述第一机架的服务器;
当确定所述X个服务器中存在处于所述第一机架的Y个服务器时,从所述X个闲置仲裁节点中确定处于所述Y个服务器上的Y个闲置仲裁节点,其中,Y为大于零的整数,且Y小于或等于X;
将所述Y个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集;或者,
当确定所述M个服务器不所于同一机架,或者确定所述M个服务器同处于所述第一机架但所述X个服务器中不存在处于所述第一机架的服务器时,将所述X个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集。
可选的,所述节点分配模块,还包括:
节点重置子模块,用于当确定所述第i个非完备副本集无法分配仲裁节点时,将所述N个闲置仲裁节点中已分配的仲裁节点重新设置为闲置仲裁节点;
节点回溯子模块,用于重新执行所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点的步骤,并且在重新执行时保证所述N个闲置仲裁节点的分配方案与之前执行时得到历史分配方案不同,直至所述多个非完备副本集均被配置为完备副本集。
可选的,所述装置还包括:
提醒输出模块,用于当在执行所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点的步骤到达k次,且所述k次对应的k个分配方案均无法保证所述多个非完备副本集均被配置为完备副本集时,输出提醒消息,所述提醒消息用于提醒需要重新部署闲置仲裁节点,其中k为大于零的整数,k为所有所述分配方案的总数量。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开实施例的第一方面中所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
本公开实施例的第三方面所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
本公开的提供的分布式数据库的节点分配方法、装置、储存介质和设备,能够获取分布式数据库中多个非完备副本集的第一位置信息,该非完备副本集为包含偶数个可投票节点的副本集,其中,所述可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。能够通过综合数据库中所有非完备副本集中的可投票节点和所有空闲仲裁节点所处的服务器和机架位置,在符合部署规则的前提下为所有副本集分配仲裁节点,避免人工部署副本集的繁琐步骤,增加副本集部署的效率和适应性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种分布式数据库的节点分配方法的流程图;
图2是根据图1所示实施例示出的一种副本集位置信息获取方法的流程图;
图3是根据图2所示实施例示出的一种仲裁节点位置信息获取方法的流程图;
图4是根据图1所示实施例示出的另一种分布式数据库的节点分配方法的流程图;
图5是根据图1所示实施例示出的一种节点分配方法的流程图;
图6是根据图5所示实施例示出的一种机架匹配方法的流程图;
图7是根据图1所示实施例示出的另一种节点分配方法的流程图;
图8是根据图1所示实施例示出的又一种分布式数据库的节点分配方法的流程图;
图9是根据一示例性实施例示出的一种分布式数据库的节点分配示意图;
图10是根据一示例性实施例示出的一种分布式数据库的节点分配装置的框图;
图11是根据图10所示实施例示出的一种第一位置信息获取模块的框图;
图12是根据图10所示实施例示出的一种第二位置信息获取模块的框图;
图13是根据图10所示实施例示出的另一种分布式数据库的节点分配装置的框图;
图14是根据图10所示实施例示出的一种节点分配模块的框图;
图15是根据图10所示实施例示出的另一种节点分配模块的框图;
图16是根据图10所示实施例示出的又一种分布式数据库的节点分配装置的框图;
图17是根据一示例性实施例示出的一种电子设备的框图;
图18是根据一示例性实施例示出的另一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据一示例性实施例示出的一种分布式数据库的节点分配方法的流程图,如图1所示,该方法可以包括以下步骤:
步骤101,获取分布式数据库中多个非完备副本集的第一位置信息。
其中,该非完备副本集为包含偶数个可投票节点的副本集,该可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架。需要说明的是,在副本集的所有可投票节点中,工作节点接受读写请求,并产生工作负载,仲裁节点只在选举时参与投票,而不接受读写请求,也不产生工作负载。并且,在同一副本集内部通过投票的方式选举网络分区时,需要奇数个可投票节点进行同意或反对的投票,以保证该选举操作的进行。如果同一副本集内存在偶数个(例如,10个)可投票节点,那么在选举时就可能会出现同意票和反对票5:5平票的状况,因此包含偶数个可投票节点的副本集即为非完备副本集。
示例地,该副本集为Mongodb集群中的副本集,在Mongodb中,完备副本集为包含奇数个上述可投票节点的副本集,或者可以说,完备副本集包括多个工作节点以及一个或者多个仲裁节点,并且同一副本集内的成员(即所有可投票的工作节点和仲裁节点)的总个数为奇数。另外,同一副本集中任意两个成员不在同一台服务器上,以保证网络分区的情况下不产生脑裂。服务器所处的机架表示一组服务器集群被安放的具体位置,例如,可以是同一个楼层或者同一幢建筑。
步骤102,获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息。
其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架。
示例地,在上述步骤中,该分布式数据库中的一部分被确定为完备副本集,另一部分被确定为非完备副本集,其中,该闲置仲裁节点为未被配置给完备副本集的仲裁节点。其中,该完备副本集为包含奇数个可投票节点,并且该完备副本集中的任意两个可投票节点不处于同一服务器上。本实施例的目的就是通过将闲置仲裁节点分配给上述的非完备副本集,以使其可投票节点的数量变为奇数,以成为完备副本集。
步骤103,根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。
示例地,已知在使用Cloudera Manager来管理Mongodb时,同一副本集中的任意工作节点与仲裁节点不能属于同一台服务器,并且当副本集中已有的可投票节点所在的服务器处于同一机架时,优先选择与副本中的所有可投票节点处于同一机架的闲置仲裁节点作为该副本集的仲裁节点。基于上述分配规则,在综合考虑上述步骤101以及步骤102所获取到的该第一位置信息以及该第二位置信息的情况下,对上述的多个非完备副本集与多个闲置仲裁节点进行组合,直至完成对所有可能被配置为完备副本集的非完备副本集的仲裁节点分配工作。
综上所述,本公开提供的分布式数据库的节点分配方法,能够获取分布式数据库中多个非完备副本集的第一位置信息,该非完备副本集为包含偶数个可投票节点的副本集,其中,该可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。能够通过综合数据库中所有非完备副本集中的可投票节点和所有空闲仲裁节点所处的服务器和机架位置,在符合部署规则的前提下为所有副本集分配仲裁节点,避免人工部署副本集的繁琐步骤,增加副本集部署的效率和适应性。
图2是根据图1所示实施例示出的一种副本集位置信息获取方法的流程图,如图2所示,上述步骤101可以包括以下步骤。
步骤1011,获取该分布式数据库中所有该非完备副本集,得到该多个非完备副本集。
步骤1012,确定该多个非完备副本集中的每个非完备副本集的M个可投票节点所部署的M个服务器。
其中,M为大于零的整数。根据前述的节点部署规则,部署M个可投票节点必然需要M个服务器。
步骤1013,分别确定该M个服务器所处的机架。
其中,该M个服务器所处的机架为一个或多个机架。该M个服务器可以处于同一个机架或者不同的机架。
图3是根据图2所示实施例示出的一种仲裁节点位置信息获取方法的流程图,如图3所示,上述步骤102可以包括以下步骤。
步骤1021,获取该分布式数据库中存在的N个闲置仲裁节点。
其中,N为大于零的整数。根据前述的节点部署规则,部署N个仲裁节点必然需要N个服务器。但是,属于不同副本集中的工作节点和仲裁节点可以处于同一个服务器。
步骤1022,分别确定该N个该闲置仲裁节点所在的该N个服务器。
步骤1023,分别确定该N个服务器所处的机架。
其中,该N个服务器所处的机架为一个或多个机架。
图4是根据图1所示实施例示出的另一种分布式数据库的节点分配方法的流程图,如图4所示,上述多个闲置仲裁节点为N个闲置仲裁节点,当通过整体排列组合的方法为非完备副本集分配仲裁节点时,上述步骤103可以包括以下步骤:
步骤1030,当该多个非完备副本集的数量大于N时,确认分配失败并输出提醒消息,该提醒消息用于提醒需要重新部署闲置仲裁节点。
示例地,当系统中非完备副本集的数量大于闲置仲裁者的数量时,可以确定闲置仲裁节点不足以将所有非完备副本集配置为完备副本集,故在该步骤1030处直接输出提醒消息,以提醒数据库管理者重新部署仲裁节点。
步骤1031,当该多个非完备副本集的数量小于N时,获取将该N个闲置仲裁节点分配给该多个非完备副本集的所有排列组合。
步骤1032,在该所有排列组合中确定能够使该多个非完备副本集均被配置为完备副本集的目标排列组合。
步骤1033,当该目标排列组合的数量为零时,确认分配失败并输出该提醒消息。
示例地,在上述步骤1031中,将所有的非完备副本集和所有闲置仲裁节点进行排列组合,并遍历所有可能的排列组合。其中,所有的排列组合中,可能有不能使该多个非完备副本集均被配置为完备副本集的排列组合(即某一副本集中存在处于同一服务器的节点),也可能有能够使该多个非完备副本集均被配置为完备副本集的排列组合,在该步骤1032中,将后者作为目标排列组合筛选出来。当在步骤1033中确认不存在该目标排列组合时,也就表示目前配置的闲置仲裁节点无论怎么排列组合都不能保证所有非完备副本集均被配置为完备副本集,因此需要输出提醒消息,以提醒数据库管理者重新部署仲裁节点。当确认存在该目标排列组合时,继续进行下列步骤1034。
步骤1034,当该目标排列组合的数量不为零时,获取每个该目标排列组合中的规定副本集的数量。
其中,该规定副本集为副本集中所有节点属于同一机架的副本集。也就是说,在步骤1034中,以同一副本集中的所有节点处于同一机架为优先选项,遴选出每个目标排列组合中的规定副本集,并统计数量。
步骤1035,将包含该规定副本集的数量最多的目标排列组合确定为该N个闲置仲裁节点在该多个非完备副本集中的分配方案。
示例地,以上述规定副本集的数量最多的排列组合为最优方案,进而为非完备副本集分配闲置仲裁节点。
图5是根据图1所示实施例示出的一种节点分配方法的流程图,如图5所示,上述多个闲置仲裁节点为N个闲置仲裁节点,与图4所示的实施例不同,在图5所示的实施例中,可以依据服务器和机架相关的分配规则,逐一地遍历系统中的每一个非完备副本集,进而为所有非完备副本集分配仲裁节点,此时,上述步骤103可以包括以下步骤。
步骤1036,将该多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与该N个闲置仲裁节点所在的N个服务器进行对比,确定该N个服务器中是否存在不包含于该M个服务器的服务器。
其中,i为大于零的整数,i的起始值为1,i小于或等于上述多个非完备副本集的数量。
示例地,对所有闲置仲裁节点所处的服务器进行遍历,确定与当前处理的非完备副本集(步骤1031中的第i个非完备副本集)中的所有可投票节点不在同一服务器的所有闲置仲裁节点。
步骤1037,当确定该N个服务器全部包含于该M个服务器时,确定该第i个非完备副本集无法分配仲裁节点。
示例地,当确定所有闲置仲裁节点所处的服务器都被同一非完备副本集的可投票节点占用时,确定该非完备副本集无法被分被仲裁节点。并且,当上述情况出现时,该步骤1037可以下接下列步骤10311和10312,对已分配的仲裁节点进行回溯,或者下接下列步骤104,以输出相关提醒。
步骤1038,当确定该N个服务器中存在不包含于该M个服务器的X个服务器时,获取处于该X个服务器的X个闲置仲裁节点,以及该X个服务器所处的机架。
其中,X为大于零的整数,且X小于或等于N。该X个闲置仲裁节点为符合配置规则、能够分配至该第i个非完备副本集的闲置仲裁节点。
步骤1039,根据该M个服务器所处的机架,以及该X个服务器所处的机架的对比结果,从该X个闲置仲裁节点中确定分配至该第i个非完备副本集的一个目标仲裁节点。
示例地,在该步骤1039中,根据该X个闲置仲裁节点所在的服务器所述的机架位置,从中筛选出优选的一个闲置仲裁节点(即该目标仲裁节点)分配至该第i个非完备副本集。需要说明的是,根据机架位置筛选闲置仲裁节点的方法只是一种优选的筛选方式而并不是必然的仲裁者分配规则,例如,在一种场景中,一个闲置仲裁节点C因为机架位置相同被分配给了副本集A,而随着本方案对所有非完备副本集的遍历,发现仲裁节点C是唯一可以分配给副本集B的闲置仲裁节点且副本集A存在其他闲置仲裁节点可以与之匹配,此时,即使副本集B和仲裁者C不处于同一机架,且仲裁者C是唯一一个与副本集A处于同一机架的闲置仲裁节点,也依然将该仲裁者C分配至该副本集B。
步骤10310,另i=i+1,并再次执行将该多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与该分布式数据库中所有的N-1个闲置仲裁节点所在的N-1个服务器进行对比至该根据该M个服务器所处的机架,以及该X个服务器所处的机架的对比结果,从该X个闲置仲裁节点中确定分配至该第i个非完备副本集的一个目标仲裁节点的步骤。
示例地,在该步骤10310中,重复执行上述步骤1036~1037,或者步骤1036、1038和1039,对数据库中的所有非完备副本集进行遍历。
图6是根据图5所示实施例示出的一种机架匹配方法的流程图,如图6所示,在上述步骤1039可以包括以下步骤。
步骤10391,当确定该M个服务器同处于第一机架时,确定该X个服务器中是否存在处于该第一机架的服务器。
步骤10392,当确定该X个服务器中存在处于该第一机架的Y个服务器时,从该X个闲置仲裁节点中确定处于该Y个服务器上的Y个闲置仲裁节点。
其中,Y为大于零的整数,且Y小于或等于X。
步骤10393,将该Y个闲置仲裁节点中的任一闲置仲裁节点分配至该第i个非完备副本集。
示例地,当确定上述X个闲置仲裁节点中存在与非完备副本集中的可投票节点处于同一机架的Y个闲置仲裁节点时,将Y个闲置仲裁节点中的任一个闲置仲裁节点分配至该非完备副本集,反之,进行下列步骤10344。需要说明的是,可以将Y个闲置仲裁节点中的任一个闲置仲裁节点分配至该非完备副本集以保证该分配的闲置仲裁节点与被分配的非完备副本集处于同一机架,但不限定于此,也可以从该X个闲置仲裁节点中的,属于该Y个闲置仲裁节点之外的闲置仲裁节点中选取一个闲置仲裁节点分配至该非完备副本集。
步骤10394,当确定该M个服务器不所于同一机架,或者确定该M个服务器同处于该第一机架但该X个服务器中不存在处于该第一机架的服务器时,将该X个闲置仲裁节点中的任一闲置仲裁节点分配至该第i个非完备副本集。
图7是根据图1所示实施例示出的另一种节点分配方法的流程图,如图7所示,在上述步骤10310之后,该步骤103还可以包括以下步骤。
步骤10311,当确定该第i个非完备副本集无法分配仲裁节点时,将该N个闲置仲裁节点中已分配的仲裁节点重新设置为闲置仲裁节点。
步骤10312,重新执行该根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点的步骤,并且在重新执行时保证该N个闲置仲裁节点的分配方案与之前执行时得到历史分配方案不同,直至该多个非完备副本集均被配置为完备副本集。
示例地,据数据库中包含所有非完备副本集而言,步骤1036~步骤10310中的非完备副本集的仲裁节点分配过程只是仲裁者配置过程的其中一种排列方式,需要理解的是,并不是每一种排列方式都能保证为所有的非完备副本集找寻到最优的仲裁节点,甚至不是每一种排列方式都能保证为所有的非完备副本集找寻到可行的仲裁节点。所以在步骤10311与10312中,在完成了一种排列方式后,如果该排列方式不能保证为所有的非完备副本集找寻到可行的仲裁节点,可以取消已经建立的非完备副本集与仲裁节点的对应关系,重新执行上述步骤1036~步骤10310,直至所有可能被配置为完备副本集的非完备副本集均被配置为完备副本集。
图8是根据图1所示实施例示出的又一种分布式数据库的节点分配方法的流程图,如图8所示,在上述步骤103之后,该方法还可以包括以下步骤。
步骤104,当在执行该根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点的步骤到达k次,且该k次对应的k个分配方案均无法保证该多个非完备副本集均被配置为完备副本集时,输出提醒消息,该提醒消息用于提醒需要重新部署闲置仲裁节点,其中k为大于零的整数,k为所有该分配方案的总数量。
示例地,如果确定数据库中不具有足够的仲裁节点,或者通过上述步骤1036~10312,确定了所有的仲裁者分配的排列方式都存在无法被配置的非完备副本集时,则输出提醒消息,以提醒数据库管理者重新部署仲裁节点。
图9是根据一示例性实施例示出的一种分布式数据库的节点分配示意图,其中,副本集A包括工作节点A1和工作节点A2,副本集B包括工作节点B1和工作节点B2,仲裁节点C1和仲裁节点C2为闲置仲裁节点,如图8所示,工作节点A1被部署在服务器1中,工作节点A2被部署在服务器2中,仲裁节点C1被部署在服务器3中,工作节点B1和仲裁节点C2被部署在服务器4中,工作节点B2被部署在服务器5中,服务器1、2和3处于机架1中,服务器4和5处于机架2中。当通过上述图4中的实施例所述的方法为非完备副本集分配仲裁节点时,首先获取排列组合1(即将C1配置给A1和A2与将C2配置给B1和B2)以及排列组合2(即将C2配置给A1和A2与将C1配置给B1和B2)。此处易知,在排列组合1中,B2和C2处于同一服务器,故确定排列组合1为不能使所有非完备副本集被配置为完备副本集的排列组合方式,将其剔除。剩下的排列组合2作为目标排列组合,虽然排列组合2不能保证同一副本集中的所有成员处于同一机架,但依然可以作为本次分布式数据库的节点分配的最终分配方案。或者,当通过上述图5至图7中的实施例所述的方法为非完备副本集分配仲裁节点时,首先将于工作节点A1和工作节点A2不处于同一服务器且处于同一机架1的仲裁节点C1分配给副本集A;其次,为副本集B寻找闲置仲裁节点,确定由于仲裁节点C2与工作节点B1都处于服务器4,仲裁节点C2无法被分配给副本集B,此时,取消仲裁节点C1与副本集A的对应关系,将C1分配给副本集B,最后,将仲裁节点C2分配至副本集A。至此,工作节点A1、工作节点A2和仲裁节点C2形成完备副本集,同时,工作节点B1、工作节点B2和仲裁节点C1形成完备副本集,本次分布式数据库的节点分配过程结束。
综上所述,本公开提供的分布式数据库的节点分配方法,能够获取分布式数据库中多个非完备副本集的第一位置信息,该非完备副本集为包含偶数个可投票节点的副本集,其中,该可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。能够通过综合数据库中所有非完备副本集中的可投票节点和所有空闲仲裁节点所处的服务器和机架位置,在符合部署规则的前提下为所有副本集分配仲裁节点,避免人工部署副本集的繁琐步骤,增加副本集部署的效率和适应性。
图10是根据一示例性实施例示出的一种分布式数据库的节点分配装置的框图,该分布式数据库的节点分配装置200可以用于执行图1所示的方法。参见图10,该装置200可以包括:
第一位置信息获取模块210,用于获取分布式数据库中多个非完备副本集的第一位置信息,该非完备副本集为包含偶数个可投票节点的副本集,其中,该可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;
第二位置信息获取模块220,用于获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;
节点分配模块230,用于根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。
图11是根据图10所示实施例示出的一种第一位置信息获取模块的框图,该第一位置信息获取模块210可以用于执行图2所示的方法。参见图11,该第一位置信息获取模块210可以包括:
副本集获取子模块211,用于获取该分布式数据库中所有该非完备副本集,得到该多个非完备副本集;
第一服务器确定子模块212,用于确定该多个非完备副本集中的每个非完备副本集的M个可投票节点所部署的M个服务器,其中,M为大于零的整数;
第一机架确定子模块213,用于分别确定该M个服务器所处的机架,该M个服务器所处的机架为一个或多个机架。
图12是根据图10所示实施例示出的一种第二位置信息获取模块的框图,该第二位置信息获取模块220可以用于执行图3所示的方法。参见图12,该第二位置信息获取模块220可以包括:
仲裁节点获取子模块221,用于获取该分布式数据库中存在的N个闲置仲裁节点,其中,N为大于零的整数;
第二服务器确定子模块222,用于分别确定该N个该闲置仲裁节点所在的该N个服务器;
第二机架确定子模块223,用于分别确定该N个服务器所处的机架,该N个服务器所处的机架为一个或多个机架。
图13是根据图10所示实施例示出的另一种分布式数据库的节点分配装置的框图,该装置200可以用于执行图4所示的方法,上述多个闲置仲裁节点为N个闲置仲裁节点,参见图13,该装置200中的节点分配模块230可以包括:
提醒输出子模块2301,用于当该多个非完备副本集的数量大于N时,确认分配失败并输出提醒消息,该提醒消息用于提醒需要重新部署闲置仲裁节点;
排列组合获取子模块2302,用于当该多个非完备副本集的数量小于N时,获取将该N个闲置仲裁节点分配给该多个非完备副本集的所有排列组合;
排列组合确定子模块2303,用于在该所有排列组合中确定能够使该多个非完备副本集均被配置为完备副本集的目标排列组合;
该提醒输出子模块2301,还用于当该目标排列组合的数量为零时,确认分配失败并输出该提醒消息;
数量获取子模块2304,用于当该目标排列组合的数量不为零时,获取每个该目标排列组合中的规定副本集的数量,该规定副本集为副本集中所有节点属于同一机架的副本集;
方案确定子模块2305,用于将包含该规定副本集的数量最多的目标排列组合确定为该N个闲置仲裁节点在该多个非完备副本集中的分配方案。
图14是根据图10所示实施例示出的一种节点分配模块的框图,该节点分配模块930可以用于执行图5或图6所示的方法,上述多个闲置仲裁节点为N个闲置仲裁节点,参见图14,该节点分配模块230可以包括:
服务器匹配子模块2306,用于将该多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与该N个闲置仲裁节点所在的N个服务器进行对比,确定该N个服务器中是否存在不包含于该M个服务器的服务器,i为大于零的整数,i的起始值为1,i小于或等于该多个非完备副本集的数量;
仲裁节点确定子模块2307,用于当确定该N个服务器全部包含于该M个服务器时,确定该第i个非完备副本集无法分配仲裁节点;或者,
当确定该N个服务器中存在不包含于该M个服务器的X个服务器时,获取处于该X个服务器的X个闲置仲裁节点,以及该X个服务器所处的机架,其中,X为大于零的整数,且X小于或等于N;
节点分配子模块2308,用于根据该M个服务器所处的机架,以及该X个服务器所处的机架的对比结果,从该X个闲置仲裁节点中确定分配至该第i个非完备副本集的一个目标仲裁节点;
循环执行子模块2309,用于另i=i+1,并再次执行将该多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与该分布式数据库中所有的N-1个闲置仲裁节点所在的N-1个服务器进行对比至该根据该M个服务器所处的机架,以及该X个服务器所处的机架的对比结果,从该X个闲置仲裁节点中确定分配至该第i个非完备副本集的一个目标仲裁节点的步骤。
可选的,该节点分配子模块2308,用于:
当确定该M个服务器同处于第一机架时,确定该X个服务器中是否存在处于该第一机架的服务器;
当确定该X个服务器中存在处于该第一机架的Y个服务器时,从该X个闲置仲裁节点中确定处于该Y个服务器上的Y个闲置仲裁节点,其中,Y为大于零的整数,且Y小于或等于X;
将该Y个闲置仲裁节点中的任一闲置仲裁节点分配至该第i个非完备副本集;或者,
当确定该M个服务器不所于同一机架,或者确定该M个服务器同处于该第一机架但该X个服务器中不存在处于该第一机架的服务器时,将该X个闲置仲裁节点中的任一闲置仲裁节点分配至该第i个非完备副本集。
图15是根据图10所示实施例示出的另一种节点分配模块的框图,该节点分配模块230可以用于执行图7所示的方法,参见图15,该节点分配模块230还可以包括:
节点重置子模块2310,用于当确定该第i个非完备副本集无法分配仲裁节点时,将该N个闲置仲裁节点中已分配的仲裁节点重新设置为闲置仲裁节点;
节点回溯子模块2311,用于重新执行该根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点的步骤,并且在重新执行时保证该N个闲置仲裁节点的分配方案与之前执行时得到历史分配方案不同,直至该多个非完备副本集均被配置为完备副本集。
图16是根据图10所示实施例示出的又一种分布式数据库的节点分配装置的框图,该装置200可以用于执行图8所示的方法,参见图16,该装置200还可以包括:
提醒输出模块240,用于当在执行该根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点的步骤到达k次,且该k次对应的k个分配方案均无法保证该多个非完备副本集均被配置为完备副本集时,输出提醒消息,该提醒消息用于提醒需要重新部署闲置仲裁节点,其中k为大于零的整数,k为所有该分配方案的总数量。
综上所述,本公开提供的分布式数据库的节点分配装置,能够获取分布式数据库中多个非完备副本集的第一位置信息,该非完备副本集为包含偶数个可投票节点的副本集,其中,该可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,该第一位置信息包括该非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;获取该分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,该第二位置信息包括该多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;根据该多个非完备副本集的该第一位置信息,以及该第二位置信息为该多个非完备副本集分配闲置仲裁节点,以使该多个非完备副本集均被配置为完备副本集。能够通过综合数据库中所有非完备副本集中的可投票节点和所有空闲仲裁节点所处的服务器和机架位置,在符合部署规则的前提下为所有副本集分配仲裁节点,避免人工部署副本集的繁琐步骤,增加副本集部署的效率和适应性。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图17是根据一示例性实施例示出的一种电子设备1700的框图。如图17所示,该电子设备1700可以包括:处理器1701,存储器1702,多媒体组件1703,输入/输出(I/O)接口1704,以及通信组件1705。
其中,处理器1701用于控制该电子设备1700的整体操作,以完成上述的分布式数据库的节点分配方法中的全部或部分步骤。存储器1702用于存储各种类型的数据以支持在该电子设备1700的操作,这些数据例如可以包括用于在该电子设备1700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1702或通过通信组件1705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1704为处理器1701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1705用于该电子设备1700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件1705可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备1700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的分布式数据库的节点分配方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1702,上述程序指令可由电子设备1700的处理器1701执行以完成上述的分布式数据库的节点分配方法。
图18是根据一示例性实施例示出的一种电子设备1800的框图。例如,电子设备1800可以被提供为一服务器。参照图18,电子设备1800包括处理器1822,其数量可以为一个或多个,以及存储器1832,用于存储可由处理器1822执行的计算机程序。存储器1832中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1822可以被配置为执行该计算机程序,以执行上述的分布式数据库的节点分配方法。
另外,电子设备1800还可以包括电源组件1826和通信组件1850,该电源组件1826可以被配置为执行电子设备1800的电源管理,该通信组件1850可以被配置为实现电子设备1800的通信,例如,有线或无线通信。此外,该电子设备1800还可以包括输入/输出(I/O)接口1858。电子设备1800可以操作基于存储在存储器1832的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1832,上述程序指令可由电子设备1800的处理器1822执行以完成上述的分布式数据库的节点分配方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种分布式数据库的节点分配方法,其特征在于,所述方法包括:
获取分布式数据库中多个非完备副本集的第一位置信息,所述非完备副本集为包含偶数个可投票节点的副本集,其中,所述可投票节点包括工作节点和仲裁节点,不同可投票节点部署在不同服务器上,所述第一位置信息包括所述非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;
获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,所述第二位置信息包括所述多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;
根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集。
2.根据权利要求1所述的方法,其特征在于,所述获取分布式数据库中多个非完备副本集的第一位置信息,包括:
获取所述分布式数据库中所有所述非完备副本集,得到所述多个非完备副本集;
确定所述多个非完备副本集中的每个非完备副本集的M个可投票节点所部署的M个服务器,其中,M为大于零的整数;
分别确定所述M个服务器所处的机架,所述M个服务器所处的机架为一个或多个机架。
3.根据权利要求1所述的方法,其特征在于,所述获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,包括:
获取所述分布式数据库中存在的N个闲置仲裁节点,其中,N为大于零的整数;
分别确定所述N个所述闲置仲裁节点所在的所述N个服务器;
分别确定所述N个服务器所处的机架,所述N个服务器所处的机架为一个或多个机架。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述多个闲置仲裁节点为N个闲置仲裁节点,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,包括:
当所述多个非完备副本集的数量大于N时,确认分配失败并输出提醒消息,所述提醒消息用于提醒需要重新部署闲置仲裁节点;
当所述多个非完备副本集的数量小于或等于N时,获取将所述N个闲置仲裁节点分配给所述多个非完备副本集的所有排列组合;
在所述所有排列组合中确定能够使所述多个非完备副本集均被配置为完备副本集的目标排列组合;
当所述目标排列组合的数量为零时,确认分配失败并输出所述提醒消息;
当所述目标排列组合的数量不为零时,获取每个所述目标排列组合中的规定副本集的数量,所述规定副本集为副本集中所有节点属于同一机架的副本集;
将包含所述规定副本集的数量最多的目标排列组合确定为所述N个闲置仲裁节点在所述多个非完备副本集中的分配方案。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述多个闲置仲裁节点为N个闲置仲裁节点,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,包括:
将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述N个闲置仲裁节点所在的N个服务器进行对比,确定所述N个服务器中是否存在不包含于所述M个服务器的服务器,i为大于零的整数,i的起始值为1,i小于或等于所述多个非完备副本集的数量;
当确定所述N个服务器全部包含于所述M个服务器时,确定所述第i个非完备副本集无法分配仲裁节点;或者,
当确定所述N个服务器中存在不包含于所述M个服务器的X个服务器时,获取处于所述X个服务器的X个闲置仲裁节点,以及所述X个服务器所处的机架,其中,X为大于零的整数,且X小于或等于N;
根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定被分配至所述第i个非完备副本集的一个目标仲裁节点;
另i=i+1,并再次执行将所述多个非完备副本集中的第i个非完备副本集中的M个可投票节点所在的M个服务器与所述分布式数据库中所有的N-1个闲置仲裁节点所在的N-1个服务器进行对比至所述根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点的步骤。
6.根据权利要求5所述的方法,其特征在于,所述根据所述M个服务器所处的机架,以及所述X个服务器所处的机架的对比结果,从所述X个闲置仲裁节点中确定分配至所述第i个非完备副本集的一个目标仲裁节点,包括:
当确定所述M个服务器同处于第一机架时,确定所述X个服务器中是否存在处于所述第一机架的服务器;
当确定所述X个服务器中存在处于所述第一机架的Y个服务器时,从所述X个闲置仲裁节点中确定处于所述Y个服务器上的Y个闲置仲裁节点,其中,Y为大于零的整数,且Y小于或等于X;
将所述Y个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集;或者,
当确定所述M个服务器不所于同一机架,或者确定所述M个服务器同处于所述第一机架但所述X个服务器中不存在处于所述第一机架的服务器时,将所述X个闲置仲裁节点中的任一闲置仲裁节点分配至所述第i个非完备副本集。
7.根据权利要求5所述的方法,其特征在于,所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集,还包括:
当确定所述第i个非完备副本集无法分配仲裁节点时,将所述N个闲置仲裁节点中已分配的仲裁节点重新设置为闲置仲裁节点;
重新执行所述根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点的步骤,并且在重新执行时保证所述N个闲置仲裁节点的分配方案与之前执行时得到历史分配方案不同,直至所述多个非完备副本集均被配置为完备副本集。
8.一种分布式数据库的节点分配装置,其特征在于,所述装置包括:
第一位置信息获取模块,用于获取分布式数据库中多个非完备副本集的第一位置信息,所述非完备副本集为包含偶数个可投票节点的副本集,其中,所述可投票节点包括工作节点和仲裁节点,其中,不同可投票节点部署在不同服务器上,所述第一位置信息包括所述非完备副本集中的多个可投票节点所在的多个服务器以及每个服务器所处的机架;
第二位置信息获取模块,用于获取所述分布式数据库中未被分配的多个闲置仲裁节点的第二位置信息,其中,不同的闲置仲裁节点部署在不同服务器上,所述第二位置信息包括所述多个闲置仲裁节点所在的多个服务器以及每个服务器所处的机架;
节点分配模块,用于根据所述多个非完备副本集的所述第一位置信息,以及所述第二位置信息为所述多个非完备副本集分配闲置仲裁节点,以使所述多个非完备副本集均被配置为完备副本集。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
权利要求9中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711488053.2A CN108199882B (zh) | 2017-12-29 | 2017-12-29 | 分布式数据库的节点分配方法、装置、储存介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711488053.2A CN108199882B (zh) | 2017-12-29 | 2017-12-29 | 分布式数据库的节点分配方法、装置、储存介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108199882A true CN108199882A (zh) | 2018-06-22 |
CN108199882B CN108199882B (zh) | 2021-03-09 |
Family
ID=62587321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711488053.2A Active CN108199882B (zh) | 2017-12-29 | 2017-12-29 | 分布式数据库的节点分配方法、装置、储存介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108199882B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109769022A (zh) * | 2019-01-15 | 2019-05-17 | 无锡华云数据技术服务有限公司 | 服务器分配方法、装置、设备及存储介质 |
CN111614733A (zh) * | 2020-04-29 | 2020-09-01 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078569A1 (en) * | 2002-10-21 | 2004-04-22 | Timo Hotti | Method and system for managing security material and sevices in a distributed database system |
CN105426427A (zh) * | 2015-11-04 | 2016-03-23 | 国家计算机网络与信息安全管理中心 | 基于raid 0 存储的mpp 数据库集群副本实现方法 |
CN107016056A (zh) * | 2017-03-07 | 2017-08-04 | 西安电子科技大学 | 一种物联网中海量异构传感数据的分布式存储系统和方法 |
CN107391033A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据迁移方法及装置、计算设备、计算机存储介质 |
-
2017
- 2017-12-29 CN CN201711488053.2A patent/CN108199882B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078569A1 (en) * | 2002-10-21 | 2004-04-22 | Timo Hotti | Method and system for managing security material and sevices in a distributed database system |
CN105426427A (zh) * | 2015-11-04 | 2016-03-23 | 国家计算机网络与信息安全管理中心 | 基于raid 0 存储的mpp 数据库集群副本实现方法 |
CN107016056A (zh) * | 2017-03-07 | 2017-08-04 | 西安电子科技大学 | 一种物联网中海量异构传感数据的分布式存储系统和方法 |
CN107391033A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据迁移方法及装置、计算设备、计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
马青纯: "基于Docker的云存储服务系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109769022A (zh) * | 2019-01-15 | 2019-05-17 | 无锡华云数据技术服务有限公司 | 服务器分配方法、装置、设备及存储介质 |
CN111614733A (zh) * | 2020-04-29 | 2020-09-01 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
CN111614733B (zh) * | 2020-04-29 | 2022-08-02 | 厦门市美亚柏科信息股份有限公司 | 一种分布式多分片集群的部署方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108199882B (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304255A (zh) | 分布式任务调度方法及装置、电子设备及可读存储介质 | |
CN103810045B (zh) | 资源分配方法、资源管理器、资源服务器及系统 | |
US9825960B2 (en) | System and method providing automatic pushdown hierarchical filters | |
CN110166278A (zh) | Kubernetes集群搭建方法、装置、计算机设备及存储介质 | |
CN107769938A (zh) | 一种Openstack平台支持多网络区域的系统和方法 | |
CN107257392A (zh) | 设备序列号设定方法和装置及计算机可读存储介质 | |
CN101572726A (zh) | 在基于多处理器网格的系统中用于分层路由的方法和装置 | |
CN111464659A (zh) | 节点的调度、节点的预选处理方法、装置、设备及介质 | |
CN108199882A (zh) | 分布式数据库的节点分配方法、装置、储存介质和设备 | |
CN105447296A (zh) | 扑克牌牌型序列和牌序序列的数据处理系统、装置和方法 | |
CN107544999A (zh) | 用于检索系统的同步装置及同步方法、检索系统及方法 | |
CN101676890A (zh) | 一种动态调整带宽分配的总线仲裁方法及仲裁器 | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储系统 | |
CN109218086A (zh) | 一种交换网构建方法与系统 | |
CN115242752A (zh) | 电池管理系统的地址分配方法、装置、设备及介质 | |
CN107943423A (zh) | 云系统中存储资源的管理方法和计算机可读存储介质 | |
WO2019228411A1 (zh) | 多通道pon带宽的分配方法、装置及设备 | |
CN108228339A (zh) | 一种内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN107770190A (zh) | 一种权限管理方法及装置 | |
CN110149352A (zh) | 一种业务请求处理方法、装置、计算机设备和存储介质 | |
CN106843751A (zh) | 放置存储卷的方法和设备 | |
CN107104829B (zh) | 一种基于网络拓扑数据的物理设备匹配分配方法及装置 | |
CN108595264A (zh) | 刷新任务分配方法、电子设备及计算机可读存储介质 | |
CN109298949A (zh) | 一种分布式文件系统的资源调度系统 | |
CN108428002A (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 |