CN110597809A - 一种支持树状数据结构的一致性算法系统及其实现方法 - Google Patents
一种支持树状数据结构的一致性算法系统及其实现方法 Download PDFInfo
- Publication number
- CN110597809A CN110597809A CN201910772660.4A CN201910772660A CN110597809A CN 110597809 A CN110597809 A CN 110597809A CN 201910772660 A CN201910772660 A CN 201910772660A CN 110597809 A CN110597809 A CN 110597809A
- Authority
- CN
- China
- Prior art keywords
- group
- data
- leader
- subtrees
- sub
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000008569 process Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 7
- 238000004064 recycling Methods 0.000 claims description 6
- 239000000370 acceptor Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000000306 component Substances 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持树状数据结构的一致性算法系统及其实现方法,所述系统包括若干虚拟计算节点,所述若干虚拟计算节点根据树状结构划分为具有上下级管理关系的Group,所有拥有上下级关系的Group均运行基于Multi‑Paxos算法的一致性算法,各Group由一部分虚拟计算节点组成且同时管理一部分的数据子树,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,将数据请求根据数据子树的请求路径进行分组处理,解决了单Leader节点的高负载问题。
Description
技术领域
本发明涉及一致性算法系统技术领域,特别是涉及一种支持树状数据结构的一致性算法系统及其实现方法。
背景技术
一致性算法作为分布式系统的基石,在分布式领域上起着不可替代的作用。现有的大部分分布式系统,包含分布式存储系统、分布式管理系统和分布式计算系统等,都需要实现一致性算法作为核心组件,这个核心组件需要保证在分布式系统中每一个客户端获取到的数据具有一致性,即多个节点中数据的值是一致的。因此,分布式系统可以存储关键的元数据到该组件上,在这种一致性保证下进一步完成相应的需求和功能;
Paxos算法是莱斯利·兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。这个算法被认为是一致性算法中最有效的。Paxos算法将多个节点之间区分为不同的角色,包括:提议者(Proposer)、决策者(Acceptor)、学习者(Learner),一个节点可以同时具有多种不同的角色。为了方便描述现实系统中的整个流程,这里添加产生议题者(Client)的角色,对于某个议题(确定某个值)而言,其由产生议题者(Client)产生,接着由提议者(Proposer)发起,由于可能存在多个提议者,所以首先需要确定该轮由哪个提议者主导,为了完成这一流程,每个可能的提议者需要生成一个全局唯一的递增编号,在这一阶段,决策者(Acceptors)需要向提议者(Proposer)承诺保证不再接受任何编号小于N的议题,提议者(Proposer)在确定超过半数的决策者(Acceptors)同意后,将发起第二轮请求,将特定的值发送给所有的决策者(Acceptors),在超过半数决策者(Acceptors)同意之后即将议题确定下来,最后由学习者(Learner)进行对议题的学习。议题拥有全局递增的编号,决策者(Acceptors)在决定议题的时候需要向提议者(Proposer)承诺保证不再接受任何编号小于N的议题,因此在基础的Paxos算法实现中需要包含:“确定该议题的最大协议号”和“确定最终决议好的值”两个阶段;
算法的原理与具体实现之间存在着巨大的鸿沟,在现有的大部分满足生产需要的一致性算法工业级系统中,核心算法都是在Paxos算法的基础上进行进一步的约束实现。一个最为广泛使用的是Multi-Paxos算法,这个算法提出了领导者(Leader)的概念,领导者(Leader)由决策者(Acceptor)通过领导选举算法产生,领导者(Leader)在一个周期内承担着发起议题的重要作用,所有的议题由领导者(Leader)发起,相比于基础的Paxos算法,Multi-Paxos算法的主要流程如下:对于某个议题(确定某个值)而言,其由产生议题者(Client)产生,接着由领导者(Leader)发起,在超过半数的决策者(Acceptors)同意之后即将议题确定下来,最后由学习者(Learner)进行对议题的学习,因此减少了“确定该议题的最大协议号”这一阶段,将Paxos算法中需要进行的两阶段过程缩减为一个阶段,大大提升了性能;
目前工业界实现的保证数据一致性的系统大部分都通过在Multi-Paxos算法上进一步改进来进行实现,如基于ZAB协议的Zookeeper,基于Raft协议的Etcd等,其中ZAB协议和Raft协议的主要区别在于Raft协议规定了只有拥有完整日志的决策者(Acceptor)才能参与领导选举的过程,即在领导选举过程后不需要进一步填充日志的“空洞”,进一步简化了算法实现的难度。除此之外,还有基于多个Paxos-Group的设计,包括腾讯开源的phxPaxos库,谷歌提出的Spanner数据库等,相比于Zookeeper和Etcd只能支持单个Paxos-Group,这部分系统原理上通过对数据进行分片来进一步解决高负载的问题.
然而,这部分系统在实现上普遍存在的问题是:在单个Paxos-Group上,领导者(Leader)所在的计算机节点经常处于高负载的状态中,相比之下决策者(Acceptor)所在的计算机节点则常处于较低负载的状态中。除此之外,Zookeeper、Etcd等系统的实现在超过半数的计算机节点不可用时会导致整体数据不可用。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种支持树状数据结构的一致性算法系统及其实现方法,以有效降低领导者(Leader)所在节点的负载,提高整体计算节点的资源利用率,同时保证整体数据的一致性,并在超半数计算节点不可用时,仍能保证局部数据保持可用性。
为达上述目的,本发明提出一种支持树状数据结构的一致性算法系统,包括若干虚拟计算节点,所述若干虚拟计算节点根据树状结构划分为具有上下级管理关系的Group,所有拥有上下级关系的Group均运行基于Multi-Paxos算法的一致性算法,各Group由一部分虚拟计算节点组成且同时管理一部分的数据子树,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,将数据请求根据数据子树的请求路径进行分组处理,以解决单Leader节点的高负载问题。
优选地,各Group的领导者Leader根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将其所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对该部分数据子树的管理权;各Group的Leader还根据负载情况进行SubGroup的回收,删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树。
优选地,所述虚拟计算节点的相关参数来自于虚拟计算节点的节点负载收集器,其收集的数据包括但不限于CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目。
优选地,所述数据子树的相关参数来自于虚拟计算节点的主进程,其收集的数据包括但不限于单位时间内数据读取量、单位时间内数据处理量和所有管辖内的数据子树的数据总量。
优选地,每个Group均收集其管理的数据子树的上诉负载数据情况,并上报负载信息到其父Group的Leader节点上。
优选地,每个虚拟计算节点均收集其上诉的负载数据情况,并上报到其所在的每个Group的Leader节点上。
为达到上述目的,本发明还提供一种支持树状数据结构的一致性算法系统的实现方法,包括如下步骤:
步骤S1,将集群中的虚拟计算节点根据树状结构划分为具有上下级管理关系的Group;
步骤S2,所有拥有上下级关系的组均运行基于Multi-Paxos算法的一致性算法,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数;
步骤S3,当接收到客户端发起的数据请求时,首先从其缓存器中获取数据子树对应的Group的Leader,然后再对Leader所在的虚拟计算节点发送请求。
优选地,于步骤S2中,各Group的领导者Leader根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将其所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对该部分数据子树的管理权;各Group的Leader还根据负载情况进行SubGroup的回收,删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树。
优选地,所述客户端缓存之前请求过的数据子树所在的Group,以及该Group的Leader节点,若缓存不存在或者缓存错误,则发送请求至可用的虚拟计算节点来进行辅助寻找。
优选地,所述辅助寻找的过程如下:首先检测当前虚拟计算节点所在的所有Group中是否存在拥有对该数据子树的管理权,若有则返回相应的Group Id和Leader节点,否则,将请求转发至其拥有的最大管辖权的Group的父Group中进行寻找,直到寻找成功;若到Root Group或者无父Group的情况下都没有找到该数据子树所在的Group,则说明目前该数据子树不存在或者处于不可用状态。
与现有技术相比,本发明一种支持树状数据结构的一致性算法系统及其实现方法通过将集群中的虚拟计算节点根据树状结构划分为具有上下级管理关系的Group,所有拥有上下级关系的Group均运行基于Multi-Paxos算法的一致性算法,各Group由一部分虚拟计算节点组成且同时管理一部分的数据子树,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,解决了单Leader节点的高负载问题。
附图说明
图1为本发明一种支持树状数据结构的一致性算法系统的系统架构图;
图2为本发明一种支持树状数据结构的一致性算法系统的实现方法的步骤流程图;
图3为本发明实施例从虚拟计算节点的角度上观察的Group划分的示意图;
图4为本发明实施例多个虚拟计算节点的进程间信息交流方式以及所在Group角色的示意图;
图5为本发明实施例中Client端请求不同子树的负载均衡示意图;
图6表示超半数节点宕机的情况下一部分Group(Group_2)仍可正常工作的示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种支持树状数据结构的一致性算法系统的系统架构图。如图1所示,本发明一种支持树状数据结构的一致性算法系统,包括若干虚拟计算节点,所述若干虚拟计算节点根据树状结构被划分为具有上下级管理关系的组(Group),所有拥有上下级关系的组均运行基于Multi-Paxos算法的一致性算法,并且各组(Group)由一部分虚拟计算节点组成且同时管理一部分的数据子树,各组内领导者(Leader)拥有组的相关管理权限,组内领导者(Leader)在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,将数据请求根据数据子树的请求路径进行分组处理,以解决单Leader节点的高负载问题,所述组内领导者(Leader)拥有组的相关管理权限包括但不限于:添加SubGroup、回收SubGroup和管理数据子树。具体地说,所述各组(Group)的领导者(Leader)可以根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将它所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对这部分数据子树的管理权;除此之外,领导者(Leader)也可以根据负载情况进行SubGroup的回收,即删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树,即该组(Group)重新管理这部分回收的数据子树。
具体地说,系统将集群中的所有计算节点虚拟化,以下统称为虚拟计算节点,同时根据树状结构的不同路径将所有虚拟计算节点划分为Level-N Group(层级N组)和LeafGroup(叶子组),其中Level-0Group也可称为Root Group(根组),两种不同类型的Group的区别在于Leaf Group(叶子组)不可再分。
根据Multi-Paxos算法,将多个虚拟计算节点之间区分为不同的角色,包括:提议者(Proposer)、决策者(Acceptor)、产生议题者(Client)、最终决策学习者(Learner),一个节点可以同时具有多种不同的角色,并且产生了领导者(Leader),领导者(Leader)由决策者(Acceptor)通过领导选举算法产生,对于某个议题(确定某个值)而言,其由产生议题者(Client)产生,接着由领导者(Leader)发起,在超过半数的决策者(Acceptors)同意之后即将议题确定下来,最后由学习者(Learner)进行对议题的学习,其过程简单举例说明如下:某个市民(被认为是Client)提出了“增加城市绿地”的议题(即产生议题),他可以给市(也可以是区、镇等,这相当于SubGroup,体现了权利划分)政府(即集群)任何人提出该想法,收到该议题的市政府人员(集群节点)将这个请求整理好发给市长(Leader)审批,如果市长觉得合适则开始进行投票流程(即发起议题)市长召集了智囊团(即Acceptors)一起对这个议题进行讨论(执行一致性算法流程),根据法定人数(占多数人)决定是否同意这个议题(完成了算法),然后把结果告诉市政府政策执行者(Learner),同时也把结果告诉了市民(Client),该市民(Client)从这个角度上也是一个Learner。
这里需说明的是,本发明与Multi-Paxos算法不同的是,Multi-Paxos算法可以认为只有一个Group(Group的Leader管理所有数据子数),而本发明系统拥有多个有上下级管理关系的Group,某个Group的Leader只管理部分数据子树。
在本发明具体实施例中,在一个虚拟计算节点的部署中,每个虚拟计算节点拥有两个进程,第一个进程为主进程,其主要工作是进行领导选举、提案处理、决策数据子树管理权、记录数据子树的负载情况和定时上传数据子树负载到它的父Group,所述主进程收集的负载数据包括单位时间内数据读取量、单位时间内数据处理量(包括增加、删除、修改等操作)和所有管辖内的数据子树的数据总量;第二个进程为节点负载均衡器,它收集该虚拟节点的负载参数,并上传至主进程,同时接受主进程的其它指令,所述节点负载均衡器收集的负载参数包括但不限于CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目。
在同一个组(Group)中,虚拟计算节点间互相进行通信,以进行该组内的领导选举、转发议题请求等工作,同时每个组(Group)内只有一个领导者(Leader)。在本发明中,每个组(Group)至少由三个虚拟计算节点组成,每个Group拥有对其内部分配的SubGroups(下级组)的管理权,即Level-i组拥有对其内部分配的所有Level-(i+1)组的管理权,这部分管理权由该Group的领导者(Leader)实际进行管理,具体管理权包括:添加SubGroup、回收SubGroup、管理数据子树。
本发明中,各组(Group)的领导者(Leader)可以根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,并将它所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,同时放弃对这部分数据子树的管理权;除此之外,也可以根据负载情况进行SubGroup的回收,即删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树,即该组(Group)重新管理这部分回收的数据子树。在本发明具体实施例中,所述虚拟计算节点的负载情况来自于虚拟计算节点的节点负载收集器,其收集的数据包括但不限于:CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目,所述数据子树的负载情况来自于虚拟计算节点的主进程,其收集的数据包括但不限于:单位时间内数据读取量、单位时间内数据处理量(包括增加、删除、修改等操作)和所有管辖内的数据子树的数据总量,这里的单位时间既可依赖前单位时间负载情况动态调节,也可根据需求静态配置。具体地,每个组(Group)均收集其管理的数据子树的上诉负载数据情况,并上报负载信息到其父Group,具体上报至父Group的领导者(Leader)节点上,进一步地,每个虚拟计算节点均收集其上诉的负载数据情况,并上报到其所在的每个组Group的领导者(Leader)节点上。
图2为本发明一种支持树状数据结构的一致性算法系统的实现方法的步骤流程图。如图2所示,本发明一种支持树状数据结构的一致性算法系统的实现方法,包括:
步骤S1,将集群中的虚拟计算节点根据树状结构划分为具有上下级管理关系的组(Group)。
具体地说,于步骤S1中,在集群中,将所有计算节点虚拟化,以下统称为虚拟计算节点;同时根据树状结构的不同路径将所有虚拟计算节点划分为Level-N Group(层级N组)和Leaf Group(叶子组),其中Level-0Group也可称为Root Group(根组),两种不同类型的Group的区别在于Leaf Group(叶子组)不可再分。
步骤S2,所有拥有上下级关系的组均运行基于Multi-Paxos算法的一致性算法,各组组内Leader拥有组的相关管理权限,组内Leader在执行相关管理权限的时候需要依赖于虚拟计算节点的相关参数以及数据子树的相关参数,所述组内Leader拥有组的相关管理权限包括但不限于:添加SubGroup、回收SubGroup和管理数据子树。具体地说,各组(Group)的领导者(Leader)可以根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将它所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对这部分数据子树的管理权;除此之外,领导者(Leader)也可以根据负载情况进行SubGroup的回收,即删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树,即该组(Group)重新管理这部分回收的数据子树。
在本发明中,每个Group均保存其管理的SubGroups的Group Id以及其关联的数据子树,并缓存这些SubGroups的领导者(Leader)节点,以便于快速找到数据子树的处理节点;其中,Group Id的产生方式通过在该组Leader产生SubGroup的时候进行分配,并使得该组内超半数节点知晓,保持Group Id的数据一致性,父Group会有它所有的SubGroups的所有IDs,相应的组内成员集合、管辖数据子树的映射关系:<GroupId,(组成员,管辖的数据子树)>。所述Group Id全局唯一,可用于进行Group的寻找。
在同一个组(Group)中,虚拟计算节点间互相进行通信,以进行该组内的领导选举、转发议题请求等工作,同时每个组(Group)内只有一个领导者(Leader)。每个组(Group)至少由三个虚拟计算节点组成,每个Group拥有对其内部分配的SubGroups(下级组)的管理权,即Level-i组拥有对其内部分配的所有Level-(i+1)组的管理权,这部分管理权由该Group的领导者(Leader)实际进行管理,具体管理权包括:添加SubGroup、回收SubGroup、管理数据子树。
在一个虚拟计算节点的部署中,每个虚拟计算节点拥有两个进程,第一个进程为主进程,其主要工作是进行领导选举、提案处理、决策数据子树管理权、记录数据子树的负载情况和定时上传数据子树负载到它的父Group,所述主进程收集的负载数据包括单位时间内数据读取量、单位时间内数据处理量(包括增加、删除、修改等操作)和所有管辖内的数据子树的数据总量,这里的单位时间既可依赖前单位时间负载情况动态调节,也可根据需求静态配置;第二个进程为节点负载均衡器,它收集该虚拟节点的负载参数,并上传至主进程,同时接受主进程的其它指令,所述节点负载均衡器收集的负载参数包括但不限于CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目。
在本发明具体实施例中,所述的每个Group均收集其管理的数据子树的上诉负载数据情况,并上报负载信息到其父Group,具体上报至父Group的领导者(Leader)节点上。进一步地,每个虚拟计算节点均收集其上诉的负载数据情况,并上报到其所在的每个Group的领导者(Leader)节点上;
步骤S3,当接收到客户端(即Client)发起的数据请求(产生议题)时,首先从其缓存器中获取数据子树对应的组的领导者(Leader),然后再对领导者(Leader)所在的虚拟计算节点发送请求。具体地说,首先需要根据请求的路径进行判断,假设该请求为“改变/a/b/c的值”,则需要找到/a/b/c属于哪个Group管辖,然后根据该GroupId找到缓存的Leader,再对该Leader所在的虚拟计算节点发送请求。
在本发明具体实施例中,客户端拥有缓存器和主进程两个组件,缓存器缓存的数据包括不同数据子树所在的组(Group),以及Group当前的领导者(Leader),主进程在发起议题请求的时候会根据缓存器记录的数据获取相应的虚拟节点进行请求发送,因为不同数据子树所在的Group可能不同,所以领导者(Leader)也可能不同。
具体地说,客户端会缓存之前请求过的数据子树所在的Group,即缓存数据子树所在的Group以及当前该Group的Leader节点,若缓存不存在或者缓存错误,则发送请求至可用的虚拟计算节点来进行辅助寻找。例如,一个Group之前有ABC三个节点,在上一次请求中A是Leader,所以进行了缓存,但是新一轮请求发起时A宕机了,而根据映射B也属于该Group,所以可以给B发请求,然后正常执行算法。
优选地,辅助寻找的过程如下:首先检测当前虚拟计算节点(即请求正由哪个节点处理的那个节点)所在的所有Group中是否存在拥有对该数据子树的管理权,若有则返回相应的Group Id和Leader节点,否则,将请求转发至其拥有的最大管辖权的Group的父Group中进行寻找,直到寻找成功;若到Root Group或者无父Group的情况下都没有找到该数据子树所在的Group,则说明目前该数据子树不存在或者处于不可用状态。例如,假如虚拟节点A接收到请求,但A所在的任何组都不拥有对该数据子树的管理权,则A会将请求转发给它的Group的某些节点(这里假设是B)进行处理,这时候当前的虚拟节点则由A变成了B,则又进行上述流程,其实质是个递归的过程。若到Root Group或者无父Group的情况下都没有找到该数据子树所在的Group,则说明目前该数据子树不存在或者处于不可用状态
在本发明具体实施例中,在每个Group寻找对应数据子树所在的Group的时候,首先检测目前该Group是否拥有该数据子树的管辖权,若有则返回自身,若无则在剔除掉上一层转发的SubGroup下,对其他的SubGroups进行递归寻找。
优选地,当找不到SubGroup的Leader节点的时候或者缓存数据错误时,通过所寻找的SubGroup的任意成员进行寻找,通过请求转发获取当前Leader节点,并缓存寻找的结果。
实施例1
在本实施例中,将从两种不同的视角对Group的划分进行说明:
如图1所示,从数据树的角度上看,Group Id为0的Group为Level-0 Group(RootGroup)的类型,它拥有其它非/a-0或/a-1路径的所有数据子树的管理权限,同时它拥有Group Id分别为1和2的SubGroups;Group Id为1的Group为Level-1Group的类型,它通过父Group(即Level-0Group)获取路径为/a-0的数据子树的管理权限(Group_1生成的时候不会管理任何数据子树,只有当父Group分类了这个/a-0数据子树给它,它才会管理该数据子树,相应地,当父Group分配出去后就不能再管理了),但是因为它将/a-0/b-1路径的数据子树管理权授予给了它的Group Id为3的SubGroup,所以它只拥有其它在/a-0前缀下的所有非/a-0/b-1路径的数据子树的管理权限;类似的,Group Id为2的Group为Level-1Group的类型,同样通过父Group获得了子树/a-1的所有管理权限,同时它不拥有SubGroups;最后的Group Id为3的Group为Level-2Group类型,从图1中看,因为它只有三个虚拟节点,不可再分,所以也是Leaf Group的类型,同样的它从父Group上获取了路径为/a-0/b-1的数据子树管理权限,同样也不拥有SubGroups。
如图3所示,为描述方便,以下Group_i指的是Group Id为i的Group,由于以上描述了每个Group的类型,所以在此不赘述;从虚拟计算节点的角度上看,Group_0拥有集群所有虚拟计算节点,在本实施例中拥有10个虚拟计算节点,也就是说当Leader发起它管理的数据子树的议题时,需要超过一半的节点同意,在本实施例中需要有6个;Group_1和Group_2都是它的SubGroup,它在进行分配的时候,都分配了4个虚拟计算节点给它们,实际上分配的虚拟节点可能有重叠,但在本实施例为了画图清晰则没有提供重叠的例子;而在Group_1中,其将它所属的3个虚拟节点分配给了他的SubGroup Group_2,但是这种分配必须要在它拥有的虚拟节点中进行挑选;接着Group_2则为普通的Level-2Group;最后看到的Group_3因为只拥有三个虚拟节点,所以它不可再分,为Leaf Group。
实施例2:
在本实施例中主要描述了虚拟节点的运行实例和它们之间的关系;为了清晰简单描述,在本实施例中只挑选了Group_1所拥有的虚拟节点;如图4,在一个虚拟节点的部署中,拥有两个进程,第一个进程为主进程,其主要工作是进行领导选举、提案处理、决策数据子树管理权、记录数据子树的负载情况和定时上传数据子树负载到它的父Group。第二个进程为节点负载均衡器,它收集该虚拟节点的负载参数,并上传至主进程,同时接受主进程的其它指令。
所述节点负载均衡器收集的数据包括CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目;所述主进程收集的负载数据包括单位时间内数据读取量、单位时间内数据处理量(包括增加、删除、修改等操作)和所有管辖内的数据子树的数据总量;
在同一个Group中,虚拟节点间互相进行通信,以进行该组内的领导选举、转发议题请求等工作,同时每个Group内只有一个Leader;
实施例3:
在本实施例中,如图5所示,Client端拥有缓存器和主进程两个组件,缓存器主要做的工作是缓存不同数据子树所在的Group,以及Group当前的Leader,主进程在发起议题请求的时候会根据缓存器记录的数据获取相应的虚拟节点进行请求发送,因为不同数据子树所在的Group可能不同,所以Leader也可能不同;在本实施例中客户端分别发送了/a-0/b-0/c-0和/a-0/b-1/c-1的请求,因为这两个数据子树的管理组不同,所以/a-0/b-0/c-0发送到了Group_1的Leader节点中,而/a-0/b-1/c-1则发送到了Group_3的Leader节点中,从例子中可以看到本发明起到了负载均衡的作用,有效地减少了单Leader高负载情况的可能性;
实施例4:
在本实施例中,如图6所示,描述了集群超半数虚拟节点宕机的情况,在这种情况下,因为Group_2所拥有的节点仍拥有超半数的虚拟节点,示例中为3个,所以在这种情况下仍能处理Group_2所管理的数据子树的议题请求,提高了极端条件下局部数据的可用性。
综上所述,本发明一种支持树状数据结构的一致性算法系统及其实现方法通过将集群中的虚拟计算节点根据树状结构划分为具有上下级管理关系的Group,所有拥有上下级关系的Group均运行基于Multi-Paxos算法的一致性算法,各Group由一部分虚拟计算节点组成且同时管理一部分的数据子树,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,解决了单Leader节点的高负载问题。
与现有技术相比,本发明具有如下优点:
第一,本发明通过领导分权的处理方案,可以将数据请求根据数据子树的请求路径进行分组处理,有效地降低了单个Leader的负载,均衡了虚拟节点的处理负载,提高了计算节点的资源利用率;
第二,本发明在大规模集群中超半数计算节点宕机的情况下,能保证在未宕机部分的虚拟计算节点中,仍可处理其管理的部分数据子树的客户端请求,有效地提高了极端条件下的数据可用性。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (10)
1.一种支持树状数据结构的一致性算法系统,包括若干虚拟计算节点,所述若干虚拟计算节点根据树状结构划分为具有上下级管理关系的Group,所有拥有上下级关系的Group均运行基于Multi-Paxos算法的一致性算法,各Group由一部分虚拟计算节点组成且同时管理一部分的数据子树,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数,通过组与组之间的上下级管理关系以及领导分权,将数据请求根据数据子树的请求路径进行分组处理,以解决单Leader节点的高负载问题。
2.如权利要求1所述的一种支持树状数据结构的一致性算法系统,其特征在于:各Group的领导者Leader根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将其所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对该部分数据子树的管理权;各Group的Leader还根据负载情况进行SubGroup的回收,删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树。
3.如权利要求2所述的一种支持树状数据结构的一致性算法系统,其特征在于:所述虚拟计算节点的相关参数来自于虚拟计算节点的节点负载收集器,其收集的数据包括但不限于CPU使用率、内存使用率、网络带宽利用率、网络延迟时间、磁盘IO速度、磁盘使用率和目前处理的Group数目。
4.如权利要求2所述的一种支持树状数据结构的一致性算法系统,其特征在于:所述数据子树的相关参数来自于虚拟计算节点的主进程,其收集的数据包括但不限于单位时间内数据读取量、单位时间内数据处理量和所有管辖内的数据子树的数据总量。
5.如权利要求2所述的一种支持树状数据结构的一致性算法系统,其特征在于:每个Group均收集其管理的数据子树的上诉负载数据情况,并上报负载信息到其父Group的Leader节点上。
6.如权利要求5所述的一种支持树状数据结构的一致性算法系统,其特征在于:每个虚拟计算节点均收集其上诉的负载数据情况,并上报到其所在的每个Group的Leader节点上。
7.一种支持树状数据结构的一致性算法系统的实现方法,包括如下步骤:
步骤S1,将集群中的虚拟计算节点根据树状结构划分为具有上下级管理关系的Group;
步骤S2,所有拥有上下级关系的组均运行基于Multi-Paxos算法的一致性算法,各Group内Leader拥有组的相关管理权限,各Group内Leader在执行相关管理权限的时候依赖于虚拟计算节点的相关参数以及数据子树的相关参数;
步骤S3,当接收到客户端发起的数据请求时,首先从其缓存器中获取数据子树对应的Group的Leader,然后再对Leader所在的虚拟计算节点发送请求。
8.如权利要求7所述的一种支持树状数据结构的一致性算法系统的实现方法,其特征在于:于步骤S2中,各Group的Leader根据目前管理的数据子树和虚拟计算节点的负载情况,决定是否产生新的SubGroup或者利用现有的SubGroup,将其所管理的数据子树中的其中一部分子树的管理权转交给SubGroup,并放弃对该部分数据子树的管理权;各Group的Leader还根据负载情况进行SubGroup的回收,删除该SubGroup以及该SubGroup的所有SubGroups,同时回收该SubGroup管辖内的所有数据子树。
9.如权利要求8所述的一种支持树状数据结构的一致性算法系统的实现方法,其特征在于:所述客户端缓存之前请求过的数据子树所在的Group,以及该Group的Leader节点,若缓存不存在或者缓存错误,则发送请求至可用的虚拟计算节点来进行辅助寻找。
10.如权利要求9所述的一种支持树状数据结构的一致性算法系统的实现方法,其特征在于,所述辅助寻找的过程如下:首先检测当前虚拟计算节点所在的所有Group中是否存在拥有对该数据子树的管理权,若有则返回相应的Group Id和Leader节点,否则,将请求转发至其拥有的最大管辖权的Group的父Group中进行寻找,直到寻找成功;若到Root Group或者无父Group的情况下都没有找到该数据子树所在的Group,则说明目前该数据子树不存在或者处于不可用状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910772660.4A CN110597809B (zh) | 2019-08-21 | 2019-08-21 | 一种支持树状数据结构的一致性算法系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910772660.4A CN110597809B (zh) | 2019-08-21 | 2019-08-21 | 一种支持树状数据结构的一致性算法系统及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597809A true CN110597809A (zh) | 2019-12-20 |
CN110597809B CN110597809B (zh) | 2023-05-23 |
Family
ID=68854855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910772660.4A Active CN110597809B (zh) | 2019-08-21 | 2019-08-21 | 一种支持树状数据结构的一致性算法系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597809B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364839A (zh) * | 2021-05-26 | 2021-09-07 | 武汉虹旭信息技术有限责任公司 | 服务调用方法、服务调用装置及zookeeper集群 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254342A1 (en) * | 2010-09-28 | 2012-10-04 | Metaswitch Networks Ltd. | Method for Providing Access to Data Items from a Distributed Storage System |
CN103152434A (zh) * | 2013-03-27 | 2013-06-12 | 江苏辰云信息科技有限公司 | 一种分布式云系统中的领导节点更替方法 |
CN104052789A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 用于虚拟联网系统的负载平衡 |
US20140344453A1 (en) * | 2012-12-13 | 2014-11-20 | Level 3 Communications, Llc | Automated learning of peering policies for popularity driven replication in content delivery framework |
US20160077936A1 (en) * | 2014-09-12 | 2016-03-17 | Facebook, Inc. | Failover mechanism in a distributed computing system |
US20160188426A1 (en) * | 2014-12-31 | 2016-06-30 | International Business Machines Corporation | Scalable distributed data store |
CN106936899A (zh) * | 2017-02-25 | 2017-07-07 | 九次方大数据信息集团有限公司 | 分布式统计分析系统的配置方法及分布式统计分析系统 |
US20170214737A1 (en) * | 2016-01-25 | 2017-07-27 | Vmware, Inc. | Integrated application-aware load balancer incorporated within a distributed-service-application-controlled distributed computer system |
US20170357687A1 (en) * | 2016-06-08 | 2017-12-14 | Brian J. Bulkowski | Methods and systems of managing deletes in a database node of a nosql database |
CN107832138A (zh) * | 2017-09-21 | 2018-03-23 | 南京邮电大学 | 一种扁平化的高可用namenode模型的实现方法 |
CN108462737A (zh) * | 2018-01-29 | 2018-08-28 | 哈尔滨工业大学深圳研究生院 | 基于批处理和流水线的分层数据一致性协议优化方法 |
US20190042591A1 (en) * | 2017-08-07 | 2019-02-07 | Weka.IO LTD | Metadata control in a load-balanced distributed storage system |
US20190196918A1 (en) * | 2017-11-04 | 2019-06-27 | Brian J. Bulkowski | Methods and systems of operating a database management system dmbs in a strong consistency mode |
CN109951508A (zh) * | 2017-12-21 | 2019-06-28 | 中国移动通信集团重庆有限公司 | 基于Zookeeper的请求协调方法及装置、计算机设备及存储介质 |
US20190251006A1 (en) * | 2017-08-18 | 2019-08-15 | Brian J. Bulkowski | Methods and systems of managing consistency and availability tradeoffs in a real-time operational dbms |
-
2019
- 2019-08-21 CN CN201910772660.4A patent/CN110597809B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120254342A1 (en) * | 2010-09-28 | 2012-10-04 | Metaswitch Networks Ltd. | Method for Providing Access to Data Items from a Distributed Storage System |
US20140344453A1 (en) * | 2012-12-13 | 2014-11-20 | Level 3 Communications, Llc | Automated learning of peering policies for popularity driven replication in content delivery framework |
CN104052789A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 用于虚拟联网系统的负载平衡 |
CN103152434A (zh) * | 2013-03-27 | 2013-06-12 | 江苏辰云信息科技有限公司 | 一种分布式云系统中的领导节点更替方法 |
US20160077936A1 (en) * | 2014-09-12 | 2016-03-17 | Facebook, Inc. | Failover mechanism in a distributed computing system |
US20160188426A1 (en) * | 2014-12-31 | 2016-06-30 | International Business Machines Corporation | Scalable distributed data store |
US20170214737A1 (en) * | 2016-01-25 | 2017-07-27 | Vmware, Inc. | Integrated application-aware load balancer incorporated within a distributed-service-application-controlled distributed computer system |
US20170357687A1 (en) * | 2016-06-08 | 2017-12-14 | Brian J. Bulkowski | Methods and systems of managing deletes in a database node of a nosql database |
CN106936899A (zh) * | 2017-02-25 | 2017-07-07 | 九次方大数据信息集团有限公司 | 分布式统计分析系统的配置方法及分布式统计分析系统 |
US20190042591A1 (en) * | 2017-08-07 | 2019-02-07 | Weka.IO LTD | Metadata control in a load-balanced distributed storage system |
US20190251006A1 (en) * | 2017-08-18 | 2019-08-15 | Brian J. Bulkowski | Methods and systems of managing consistency and availability tradeoffs in a real-time operational dbms |
CN107832138A (zh) * | 2017-09-21 | 2018-03-23 | 南京邮电大学 | 一种扁平化的高可用namenode模型的实现方法 |
US20190196918A1 (en) * | 2017-11-04 | 2019-06-27 | Brian J. Bulkowski | Methods and systems of operating a database management system dmbs in a strong consistency mode |
CN109951508A (zh) * | 2017-12-21 | 2019-06-28 | 中国移动通信集团重庆有限公司 | 基于Zookeeper的请求协调方法及装置、计算机设备及存储介质 |
CN108462737A (zh) * | 2018-01-29 | 2018-08-28 | 哈尔滨工业大学深圳研究生院 | 基于批处理和流水线的分层数据一致性协议优化方法 |
Non-Patent Citations (1)
Title |
---|
ZHE ZHANG ET,AL.: "Data-Structure-Model for Data Integration in Distributed Systems", 《2008 INTERNATIONAL MULTI-SYMPOSIUMS ON COMPUTER AND COMPUTATIONAL SCIENCES》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364839A (zh) * | 2021-05-26 | 2021-09-07 | 武汉虹旭信息技术有限责任公司 | 服务调用方法、服务调用装置及zookeeper集群 |
Also Published As
Publication number | Publication date |
---|---|
CN110597809B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lakshman et al. | Cassandra: a decentralized structured storage system | |
US8676951B2 (en) | Traffic reduction method for distributed key-value store | |
US7440977B2 (en) | Recovery method using extendible hashing-based cluster logs in shared-nothing spatial database cluster | |
JP2008533564A (ja) | データ管理のための方法および装置 | |
JP7270755B2 (ja) | 分散システムでのメタデータルーティング | |
US20150269239A1 (en) | Storage device selection for database partition replicas | |
US10320905B2 (en) | Highly available network filer super cluster | |
CN110798517B (zh) | 去中心化集群负载均衡方法、系统、移动终端及存储介质 | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
CN112199427A (zh) | 一种数据处理方法和系统 | |
US12032550B2 (en) | Multi-tenant partitioning in a time-series database | |
US11263270B1 (en) | Heat balancing in a distributed time-series database | |
CN113032356A (zh) | 一种客舱分布式文件存储系统及实现方法 | |
US11409771B1 (en) | Splitting partitions across clusters in a time-series database | |
CN110569307A (zh) | 一种基于ProxySQL和MGR的MySQL读写分离方法 | |
CN112507026B (zh) | 基于键值模型、文档模型和图模型的分布式高速存储方法 | |
CN107908713B (zh) | 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法 | |
US11366598B1 (en) | Dynamic lease assignments in a time-series database | |
CN110597809A (zh) | 一种支持树状数据结构的一致性算法系统及其实现方法 | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
CN108965387B (zh) | 一种提高p2p数据存储抗毁性的均衡方法及系统 | |
Tian et al. | CCESHP: Causal Consistency Model of Edge Storage Based on Hash Ring and Partial Geo-Replication | |
Xun-Yi et al. | P2P Replica-tree based Consistency Maintenance Strategy | |
CN114218326A (zh) | 一种分布式数据库提升数据路由效率的方法 | |
CN111538703B (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 |