CN104283906B - 分布式存储系统、集群节点及其区间管理方法 - Google Patents

分布式存储系统、集群节点及其区间管理方法 Download PDF

Info

Publication number
CN104283906B
CN104283906B CN201310274957.0A CN201310274957A CN104283906B CN 104283906 B CN104283906 B CN 104283906B CN 201310274957 A CN201310274957 A CN 201310274957A CN 104283906 B CN104283906 B CN 104283906B
Authority
CN
China
Prior art keywords
subinterval
clustered node
section
node
clustered
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
Application number
CN201310274957.0A
Other languages
English (en)
Other versions
CN104283906A (zh
Inventor
刘哲
沈柯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310274957.0A priority Critical patent/CN104283906B/zh
Priority to PCT/CN2014/080025 priority patent/WO2015000359A1/zh
Priority to EP14819963.1A priority patent/EP3001644B1/en
Publication of CN104283906A publication Critical patent/CN104283906A/zh
Priority to US14/983,853 priority patent/US10348827B2/en
Application granted granted Critical
Publication of CN104283906B publication Critical patent/CN104283906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Abstract

一种分布式存储系统、集群节点及其区间管理方法,包括:集群节点按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中第一路由表项是指副本信息中记录有表示该集群节点的信息的路由表项;集群节点为每个子区间分别创建一个日志队列;以及集群节点根据来自客户端的数据操作请求的关键字段确定对应的子区间,针对确定的子区间执行相应的数据读写操作,并据此更新与对应的日志队列。通过在集群节点上将一段连续的数据存储区间切分为至少两个子区间、并针对每个子区间创建并维护一个日志队列,使得集群节点上原来针对整段区间的串行操作变成分别针对至少两个子区间的并行操作,可以有效提高系统整体的吞吐量。

Description

分布式存储系统、集群节点及其区间管理方法
技术领域
本发明涉及分布式存储系统,尤其涉及分布式存储系统中的集群节点及其区间管理方法。
背景技术
分布式存储系统的组网拓扑可如图1所示,主要包括客户端(client)、一个管理(manager)节点和若干个集群(cluster)节点(node)。一般来说,一个节点就是一个物理机,集群节点是主(master)节点和备(slave)节点的统称,每个主节点对应有一个或多个备节点,并且各个节点之间通过网络进行通信。
对于图1所示的分布式存储系统,为了提高数据处理的吞吐量和整体性能,一般对数据进行分片存储和分片查询。其中,常用的分片是进行区间切分(range partition),即将一个大的数据存储区间分成几个小区间,每个节点(node)负责一段连续的区间。其中,所谓“某个节点负责某个区间”,是指由该节点管理、控制和/或执行针对该区间的数据读写操作。在进行读写操作时,客户端会基于数据操作的关键字段遍历路由表的表项,根据表项内的区间找到负责该区间的节点(主节点)上去执行该读写操作。以下将主节点负责的区间称为路由区间(routing range),以表示客户端能够通过路由表找到负责该区间的主节点并执行相应的数据操作的意思。
另一方面,为了可靠性的考虑,在分布式存储系统中一般会为每个节点做至少一个数据备份,并且备份数据通常分布在不同的节点上(备节点)。在进行主备间数据同步时,主节点会向备节点发送包含数据操作记录等信息的同步请求,备节点会响应于该同步请求,基于数据操作记录的关键字段遍历路由表的表项,针对表项内的区间进行相应的备份数据同步操作。以下将主节点和备节点进行数据操作的区间称为同步区间(sync range),以表示备节点能够通过路由表找到该区间并执行相应的备份数据同步操作的意思。
在现有技术中,路由区间和同步区间的大小是一致的。例如,假设节点A作为主节点负责区间[0,100],并且节点B作为节点A在区间[0,100]上的备节点,则相对于客户端来说,区间[0,100]是用于找到节点A的路由区间,而相对于节点A和节点B来说,区间[0,100]是两者进行数据操作的同步区间。
这使得,在集群节点个数一定的情况下,如果一个节点上维护的区间个数较少,例如基于主键进行区间切分的数据库Spinnake,则有可能出现多个线程竞争对同一个区间进行数据操作的权限的情况,尤其对于一些热点分区,容易造成串行执行现象。这势必会导致访问时间的延长以及数据读写效率和备份效率的降低,从而影响系统的数据处理吞吐量。
另一方面,在集群节点个数一定的情况下,如果一个节点上维护的区间个数较多,例如基于主键和非主键均进行区间切分的分布式键值数据库HyperDex,则由于路由区间的个数比较多,从而会增加客户端的路由开销。
发明内容
有鉴于此,本发明实施例要解决的技术问题是,如何进行分布式存储系统中的集群节点上的区间管理,以在不增加客户端的路由开销的前提下有效提高系统的数据处理吞吐量。
为了解决上述技术问题,根据本发明实施例的第一方面,提供了一种区间管理方法,该方法应用于包括集群节点和客户端的分布式系统中的集群节点。该方法主要包括:所述集群节点按照配置参数将与本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中,所述本地路由表包括至少一个路由表项,每个所述路由表项至少包括区间信息和副本信息,所述区间信息表示与所述路由表项对应的区间的信息,所述副本信息用于记录与所述区间相对应的集群节点集的信息,所述第一路由表项是指所述副本信息中记录有表示所述集群节点的信息的路由表项;所述集群节点为每个所述子区间分别创建一个日志队列;在接收到来自所述客户端的数据操作请求时,所述集群节点根据所述数据操作请求的关键字段确定对应的子区间;所述集群节点根据确定的所述子区间执行与所述数据操作请求对应的数据读写操作,并根据所述数据读写操作更新与确定的所述子区间对应的日志队列。
结合第一方面,在第一种可能的实现方式中,在所述集群节点更新了所述本地路由表的情况下,该方法还包括:所述集群节点按照所述配置参数对更新后的所述本地路由表中的第一路由表项对应的区间进行切分;对于在所述更新之后切分出的每个子区间,所述集群节点判断所述集群节点上是否存在与所述子区间对应的日志队列;若所述集群节点上存在与所述子区间对应的日志队列,则所述集群节点基于所述第一路由表项中的副本信息更新所述子区间对应的同步节点信息,其中所述同步节点信息表示在所述子区间上与所述集群节点保持数据同步的其它集群节点的信息;以及若所述集群节点上不存在与所述子区间对应的日志队列,则所述集群节点为所述子区间创建一个日志队列。
结合第一方面的第一种实现方式,在第二种可能的实现方式中,该方法还包括:对于在所述集群节点上存在对应的日志队列的每个子区间,所述集群节点判断所述子区间是否属于结果集以及所述子区间对应的日志队列是否为空;以及在所述子区间不属于结果集并且所述子区间对应的日志队列为空的情况下,将所述子区间及所述子区间对应的日志队列从所述集群节点上删除。其中,所述结果集是指根据所述配置参数对所述集群节点当前的本地路由表中的第一路由表项对应的区间进行切分所得到的子区间的集合。
结合第一方面、第一方面的第一种实现方式或第一方面的第二种实现方式,在第三种可能的实现方式中,在所述集群节点按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间之后,还包括:所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送切分请求。其中,所述切分请求包含表示所述区间的信息以及所述配置参数,以使所述其它集群节点也根据所述配置参数对所述区间进行切分。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式或第一方面的第三种实现方式,在第四种可能的实现方式中,所述集群节点根据所述数据操作请求的关键字段确定对应的子区间,包括:所述集群节点对所述数据操作请求的关键字段按照一定的哈希算法进行哈希;所述集群节点根据所述哈希的结果查找对应的子区间;以及在未查找到对应的子空间的情况下,所述集群节点向所述客户端返回表示路由错误的响应。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式或第一方面的第四种实现方式,在第五种可能的实现方式中,在所述集群节点为每个所述子区间分别创建一个日志队列之后,还包括:所述集群节点为每个所述子区间单独配置读写操作权限。
结合第一方面的第五种实现方式,在第六种可能的实现方式中,所述集群节点根据确定的所述子区间执行相应的数据读写操作,并更新与确定的所述子区间对应的日志队列,包括:所述集群节点获得确定的所述子区间的读写操作权限;所述集群节点将所述数据操作请求的操作数据以新的序列号写入与确定的所述子区间对应的日志队列;以及所述集群节点将所述操作数据写入内存,并向所述客户端反馈处理结果。
结合第一方面的第六种实现方式,在第七种可能的实现方式中,在所述集群节点将所述操作数据写入内存之前,还包括:所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送同步请求。其中,所述其它集群节点是指所述分布式存储系统中用于对所述集群节点在所述区间上的数据进行备份的节点;所述同步请求包含所述子区间的信息以及所述操作数据,以使所述其它集群节点基于所述子区间与所述集群节点保持数据同步。
结合第一方面和第一方面的上述所有可能的实现方式中的任意一种,在第八种可能的实现方式中,所述配置参数为分段数,所述分段数表示要从一个所述第一路由表项对应的区间切分出的子区间的个数。
结合第一方面的第七种可能的实现方式,在第九种可能的实现方式中,所述分段数与表示所述区间的信息一起记录在所述本地路由表中的与所述区间对应的路由表项内。
第二方面,本发明实施例还提供一种集群节点,该集群节点应用于包括集群节点和客户端的分布式系统,主要包括:网络模块,与所述客户端连接,用于接收来自所述客户端的数据操作请求;路由表管理模块,与所述网络模块连接,用于管理所述集群节点的本地路由表、处理所述数据操作请求、并按照配置参数将与所述本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中,所述本地路由表包括至少一个路由表项,每个所述路由表项至少包括区间信息和副本信息,所述区间信息表示与所述路由表项对应的区间的信息,所述副本信息用于记录与所述区间相对应的集群节点集的信息,所述第一路由表项是指所述副本信息中记录有表示所述集群节点的信息的路由表项;数据同步管理模块,与所述网络模块以及所述路由表管理模块连接,用于为每个所述子区间分别创建一个日志队列;以及存储模块,与所述数据同步管理模块连接,用于进行数据存储以及持久化。其中,在所述网络模块接收到所述数据操作请求时:所述路由表管理模块根据所述数据操作请求的关键字段确定对应的子区间;所述数据同步管理模块根据确定的所述子区间执行与所述数据操作请求对应的数据读写操作,并根据所述数据读写操作更新与确定的所述子区间对应的日志队列。
结合第二方面,在第一种可能的实现方式中,所述网络模块还被配置为,接收所述分布式系统的最新版本路由表;所述路由表管理模块还被配置为,将所述本地路由表更新为所述最新版本路由表,并按照所述配置参数对更新后的所述本地路由表中的第一路由表项对应的区间进行切分;以及所述数据同步管理模块还被配置为,对于在所述更新之后切分出的每个子区间,判断所述集群节点上是否存在与所述子区间对应的日志队列,若判断结果为存在与所述子区间对应的日志队列,则所述数据同步管理模块基于所述第一路由表项中的副本信息更新所述子区间对应的同步节点信息,其中所述同步节点信息表示在所述子区间上与所述集群节点保持数据同步的其它集群节点的信息;若判断结果为不存在与所述子区间对应的日志队列,则所述数据同步管理模块所述数据同步管理模块为所述子区间创建一个日志队列。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据同步管理模块还被配置为:对于在所述集群节点上存在对应的日志队列的每个子区间,判断所述子区间是否属于结果集以及所述子区间对应的日志队列是否为空;以及在所述子区间不属于结果集并且所述子区间对应的日志队列为空的情况下,将所述子区间及所述子区间对应的日志队列从所述集群节点上删除。其中,所述结果集是指根据所述配置参数对所述集群节点当前的本地路由表中的第一路由表项对应的区间进行切分所得到的子区间的集合。
结合第二方面、第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述路由表管理模块还被配置为,在按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间之后,生成切分请求,其中,所述切分请求包含表示所述区间的信息以及所述配置参数;以及所述网络模块还被配置为,向所述第一路由表项的副本信息中记录的其它集群节点发送所述切分请求,以使所述其它集群节点也根据所述配置参数对所述区间进行切分。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述数据同步管理模块还被配置为:为每个所述子区间单独配置读写操作权限。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述配置参数为分段数,所述分段数表示要从一个所述第一路由表项对应的区间切分出的子区间的个数。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述分段数与表示所述区间的信息一起记录在所述本地路由表中的与所述区间对应的路由表项内。
第三方面,本发明实施例提供一种分布式存储系统,其包括客户端和至少两个本发明任一实施例所述的集群节点。其中,各所述集群节点与所述客户端连接,各所述集群节点用于响应于来自所述客户端的数据操作请求以进行数据处理操作,并向所述客户端返回所述数据处理操作的处理结果。
可见,本发明实施例提供的区间管理方法和装置,通过在集群节点上将一段连续的区间切分为至少两个子区间、并针对每个子区间创建并维护一个日志(log)队列,根据本发明实施例的分布式存储系统、集群节点及其区间管理方法使得集群节点上原来针对整段连续区间的串行操作可变成分别针对所切分出的至少两个子区间的并行操作,从而对于整个分布式存储系统来说,可以有效提高吞吐量,尤其在多线程并行写的情况下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出分布式存储系统的组网拓扑的示意图;
图2示出分布式存储系统中的客户端、作为主节点的集群节点(以下又称为集群主节点或主节点)、作为备节点的集群节点(以下又称为集群备节点或备节点)和管理节点的模块组成以及相互间交互的示意图;
图3示出分布式存储系统中客户端上路由表的表项的数据结构的示意图;
图4示出分布式存储系统中客户端上路由表的表项内的区间的数据结构的示意图;
图5示出分布式存储系统中客户端响应于数据操作需求所执行的处理的流程示意图;
图6示出分布式存储系统中集群节点响应于来自客户端的数据操作请求所执行的处理的流程示意图;
图7示出分布式存储系统中集群节点上路由表的表项的数据结构的示意图;
图8示出分布式存储系统中集群节点上区间与日志队列的对应关系的示意图;
图9示出分布式存储系统中集群主节点同步给集群备节点的数据结构的示意图;
图10示出分布式存储系统中集群节点上存储模块内的数据流向的示意图;
图11示出分布式存储系统中作为主节点的集群节点上的数据流向的示意图;
图12示出分布式存储系统中集群节点以异步提交方式进行主备间数据同步的第一阶段的处理流程示意图;
图13示出分布式存储系统中集群节点以异步提交方式进行主备间数据同步的第二阶段的处理流程示意图;
图14示出分布式存储系统中管理节点维护路由表和表结构的处理流程示意图;
图15示出分布式存储系统在新节点加入集群时的处理流程的示意图;
图16示出分布式存储系统在新节点加入前后的区间分配的示例图;
图17示出根据本发明一实施例的区间管理方法的处理流程的示意图;
图18示出图17所示区间管理方法中区间与切分出的至少两个子区间之间的对应关系的示意图;
图19示出根据本发明另一实施例的区间管理方法中集群节点上路由表的表项内的区间的数据结构示意图;
图20示出根据本发明又一实施例的区间管理方法中子区间更新的处理流程的示意图;
图21示出根据本发明又一实施例的区间管理方法中子区间清理的处理流程的示意图;
图22示出根据本发明又一实施例的区间管理方法在新节点加入时的处理流程的示意图;以及
图23示出根据本发明又一实施例的一种集群节点设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明的一部分示例性的实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
如背景技术部分所述,对于分布式存储系统,如何进行节点的区间管理,以在不增加客户端的路由开销的前提下尽量提高系统数据处理吞吐量,是目前亟待解决的问题。
图2示出了图1所示分布式存储系统中的客户端、主节点、备节点和管理节点的模块组成以及相互间交互的示意图。如图2所示,分布式存储系统中的通信主要包括:
①客户端和集群节点之间的交互
如图2所示,客户端主要包括路由表管理模块和网络模块,其中路由表管理模块主要进行路由表的初始化和更新操作,而网络模块用于连接集群主节点。客户端上路由表的初始化,是从连接到的第一个集群节点上获得的。客户端上路由表所包括的表项主要由区间和主节点构成,具体组成结构可如图3所示。
在一种可能的实现方式中,区间是大整数(BigInteger)的集合。这样,路由表的表项所包括的区间主要由左值(Left_BigInteger)和右值(Right_BigInteger)组成,具体结构可如图4所示。
响应于数据操作需求,客户端基于主键字段(例如,利用MD算法将主键字段进行哈希,并基于哈希结果)遍历本地路由表的表项,根据表项内的区间值找到对应的主节点,并向该主节点发送数据操作请求,以使该主节点执行相应的数据读或写操作。具体处理流程可如图5所示。
集群节点在接收到来自客户端的数据操作请求后,一旦发现路由错误、即本地不是主节点,则向客户端返回失败。响应于接收到集群节点返回的路由失败,客户端将向所连接的集群节点发送路由表更新请求,以使集群节点将本地的路由表返回给客户端,并且客户端根据所接收到的来自集群节点的路由表对本地的路由表进行更新,具体处理流程可如图6所示。需要说明的是,集群节点之间不进行路由表的转发。
②集群节点之间的交互
如图2所示,集群节点本地包括路由表管理模块、数据同步管理模块、存储模块和网络模块。
其中,集群节点的路由表管理模块主要进行集群节点本地路由表的管理和客户端数据操作请求的处理。所有集群节点和管理节点共用一份路由表。路由表的表项不仅包含该集群节点的路由信息,还包含其它所有集群节点的路由信息。例如,假设一共有两个集群节点A和B,如果节点A负责区间[0,10]、节点B负责区间[20,30],那么路由表的表项数就是2,节点A和节点B上的路由表都一样,都包括这两个表项,从而既具有集群节点自身所负责区间的信息,也具有与自身无关的其它节点的信息。并且,路由表的表项包括区间信息和副本信息,具体组成结构可如图7所示。其中,副本信息主要记录与该区间对应的集群节点集,可包括主节点和备节点,以表示某个集群节点是作为主节点还是作为备节点负责该区间。
集群节点的数据同步管理模块用来管理区间以实现主备间数据同步。在一种可能的实现方式中,集群节点之间采用log队列来实现主备间数据同步。具言之,一个区间对应一个log队列,并且主节点上区间对应的log队列与备节点上区间对应的log队列是保持一致的。区间与log队列的具体对应关系可如图8所示。其中,R1~R3是区间的值,L1~LN、L1’~LN’和L1’’~LN’’分别为对应log队列中的记录。L1、L1’和L1’’分别为log队列的头,有新记录时,从对应log队列的尾部写入。为了保证主备节点间数据的一致性,主节点向备节点同步时会把新记录和对应的区间的值一并发送给备节点。主节点发送给备节点的数据结构可如图9所示。
集群节点的存储模块用于进行数据存储以及持久化,可包括日志(commitlog)子模块、内存(memtree)子模块和持久化(sstree)子模块,并且这三个子模块之间的数据流向可如图10所示。
主节点在接收到来自客户端的数据操作请求后,在本地调用路由表管理模块,并将该数据操作请求传递给数据同步管理模块以进行主备间数据同步。然后,主节点在接收到备节点返回的响应后,在本地调用存储模块以进行数据的存储。在集群节点上的数据流向可如图11所示。
在一种可能的实现方式,以异步提交方式来进行集群节点的主备间数据同步,即在主节点将记录写入内存并且备节点将记录写入对应的log队列后就向客户端返回数据写入成功的结果,然后再由主节点定期向备节点发送提交请求以使备节点将记录写入内存。换言之,以异步提交方式进行的主备间数据同步可分为两个阶段,其中第一阶段的流程图可如图12所示。响应于来自客户端的数据操作请求,主节点对记录进行本地处理后,向备节点发送同步请求,其中该同步请求可包含该条记录和对应的区间等信息。响应于接收到来自主节点的同步请求,备节点在对该同步请求进行本地处理后,返回响应给主节点。最后,由主节点将处理结果(成功或失败)返回给客户端。如图12所示,主节点的本地处理包括:将该条记录以一个新的序列号写入区间对应的log队列;以及,当备节点返回或超时未返回针对该同步请求的响应时,将该条记录写入内存。备节点的本地处理包括:将该条记录写入区间对应的log队列,并根据序列号对log队列进行排序。
以异步提交方式进行集群节点的主备间数据同步的第二阶段的具体处理流程可如图13所示。主节点定时向备节点发送提交请求,其中该提交请求可包含区间和序列号等信息。响应于接收到来自主节点的提交请求,备节点判断该区间对应的log队列是否有记录缺失,如果有,就向主节点请求缺失的记录;如果没有,就将log队列中与该序列号对应的记录写入内存。
③集群节点与管理节点之间的交互
如图2所示,管理节点主要包括心跳检测模块、路由表管理模块、表结构(schema)管理模块和网络模块。
其中,管理节点的心跳检测模块基于集群节点发送的心跳来定期检查并维护集群节点的状态,以向集群节点推送最新版本的路由表和表结构。集群节点发送心跳的主要内容包括本地路由表和表结构的版本号。管理节点维护路由表和表结构的具体处理流程可如图14所示。
管理节点的路由表管理模块主要用于:a)维护路由表和路由表的版本号,路由表每更新一次,版本号加1,管理节点和所有集群节点共用一份路由表(路由表的表项的数据结构可如图7所示),管理节点上路由表的版本号总是大于或等于集群节点上路由表的版本号;以及b)进行区间的切分和分配,这主要发生在新节点加入时和进行负载均衡时。
在一种可能的实现方式中,在有新的集群节点加入时,直接向管理节点发送加入请求,管理节点遍历路由表的表项,进行区间的负载统计,然后按照一定的策略,对现有的区间进行切分,将切分出的某段区间分配给新节点。新节点从该区间对应的原始主节点上请求属于该区间的数据,待数据传送完成后,原始主节点和新节点依次更新路由表。这样,新节点以负责这个区间的主节点身份加入集群,具体处理流程可如图15所示。
例如,假设现有六个节点,分别作为主节点所负责的区间为[0,100]、[101,200]、[201,300]、[301,400]、[401,500]和[501,900],则新节点加入前后的区间划分可如图16所示。其中,新节点作为主节点所负责的区间[751,900]是通过切分原区间[501,900]所得。
为了提高集群节点本地的写入速度和并发处理能力、而不增加客户端的路由开销,可以考虑在集群节点上将连续的某段区间切分成更小的粒度。例如,在一种可能的实现方式中,如图17所示,集群节点(可具体由路由表管理模块)按照特定的配置参数将本地路由表中的相关表项对应的区间切分为至少两个子区间(S1710),并且(可具体由数据同步管理模块)为每个子区间分别创建一个日志队列(S1720)。其中,所述相关表项是指该集群节点作为主节点或者备节点所负责的区间所对应的路由表项。换言之,所述相关表项是指副本信息中记录有表示该集群节点的信息的路由表项。此外,所述区间与所切分出的子区间的对应关系可如图18所示。
这样,客户端仍能够按照所述区间向集群节点发送数据操作请求。具言之,客户端仍将基于数据操作请求的关键字段遍历本地路由表的表项,根据表项内的区间值找到对应的集群节点,并向该集群节点发送数据操作请求。
但是,集群节点(可具体由数据同步管理模块)将按照所切分出的子区间执行本地处理(S1730)。具言之,在集群节点(可具体由网络模块)接收到来自客户端的数据操作请求后,该集群节点将(可具体由路由表管理模块)首先如图6所示判断本地是否为负责该数据操作请求的关键字段对应的区间的主节点。在路由错误、即集群节点发现本地不是主节点的情况下,集群节点(可具体由网络模块)将向客户端返回失败,具体处理流程可如图6所示。然而,在路由正确的情况下,集群节点(可具体由路由表管理模块)将基于该数据操作请求的关键字段找到对应的子区间,然后(可具体由数据同步管理模块)对该子区间执行相应的数据读写操作并更新与该区间对应的日志队列,具体处理流程可如图12所示。
在一种可能的实现方式中,每个子区间可单独配置一把锁、即对该子区间进行读写操作的权限设置。例如,在多线程插入时,为了保证线程安全,集群节点(可具体由数据同步管理模块)给每个子区间配置一把读写锁,使得虽然同一个子区间的log队列是串行执行的,但不同子区间的log队列之间是并行执行。这样,在集群节点本地,可将原来针对整个连续区间的串行操作变成分别针对所切分出的至少两个子区间的并行操作,从而能够显著提高整个分布式存储系统的吞吐量,尤其在多线程并发写的情况下。
下表1示出了在1000万条记录下,吞吐量随单个集群节点上的一段连续区间被切分成子区间的段数而变化的实验结果。
表1
从表1所示可以看出,通过在集群节点上将一段连续的区间切分为至少两个子区间、并针对每个子区间创建并维护一个log队列,对于整个分布式存储系统来说,不仅可以有效提高吞吐量,还可以有效降低平均延迟时间,这显然非常有助于用户体验的提升。此外,可以基于至少两个子区间进行数据的负载均衡,从而消除由于数据在多个集群节点上存放的差异以及数据本身热点的产生和转移而导致的集群节点间负载不均衡以及集群节点处理性能下降等。
在一种可能的实现方式中,由分布式存储系统中的管理节点(可具体由心跳检测模块)来控制一段连续区间被切分成子区间的个数。这样,在管理节点向集群节点下发的路由表的表项内所包括的区间的数据结构中,可增加区间的分段数作为配置参数。具体的数据结构可如图19所示。换言之,分段数可与表示区间的信息一起记录在集群节点的本地路由表中的与该区间对应的路由表项内。
由于只在集群节点上将一段连续区间切分为至少两个子区间,而并不更改整个分布式存储系统的路由表,这使得集群节点上路由表的更新将包括本地路由表的更新(也可视为集群节点的路由表管理模块中的路由表更新)和子区间的更新(也可视为集群节点的数据同步管理模块中的同步用子区间更新)。其中,本地路由表的更新可采用全部覆盖的方式,即用由管理节点(可具体由心跳检测模块)如图14所示推送的最新版本路由表来替换本地的路由表。然而,子区间的更新却需要结合最新版本的路由表和关于区间切分的配置参数来进行,并且具体的处理流程可如图20所示。
如图20所示,由本地路由表的更新触发子区间的更新(S2010),并且仅在遍历完成最新版本的路由表中的所有表项的情况下才认为针对该最新版本路由表的子区间更新完成(S2020、S2030、S2030Y)。对于路由表中的每个表项,首先要判断该表项是否是该集群节点的相关表项、即该表项的副本信息中是否记录有表示该集群节点的信息(S2030N);如果判断为否,则返回步骤S2020以处理下一个表项;如果判断为是,则需要首先根据配置参数对区间进行切分(S2040),并然后仅在遍历完成所切分出的所有子区间的情况下才认为针对该表项的子区间更新完成(S2050、S2060)。并且,对于所切分出的每个子区间,具体的更新步骤可包括:首先判断该集群节点本地是否存在该子区间对应的log队列(S2070);在判断为本地已存在该子区间对应的log队列的情况下,认为该次本地路由表的更新可能主要是副本信息的更新,因此仅需基于本地路由表的表项中的副本信息更新该子区间对应的同步节点信息(S2080),其中所述同步节点信息表示与该集群节点在该子区间上保持数据同步的其它集群节点的信息;然而,在判断为本地不存在该子区间对应的log队列的情况下,认为该子区间是新产生的子区间,则创建与该子区间对应的log队列(S2090)。
通过上述介绍可知,每次本地路由表的更新都会触发子区间的更新。然而,为了确保集群节点的主备间数据的一致性,在备节点上的提交完成前不应删除主节点上的对应log队列,尤其在以异步提交方式进行主备间数据同步的情况下。因此,在响应于本地路由表的更新进行的子区间更新完成后,在集群节点上有可能出现新的子区间及其log队列与旧的子区间及其log队列共存,并需要在备节点上的提交全部完成后才能将旧的子区间及其log队列删除。此外,一般来说,集群节点会定时清空其上log队列中的记录,例如,可由路由表管理模块起一个定时器来定时指示数据同步管理模块进行log队列的记录清空,以避免维护log队列占用过多内存。这样,集群节点(可具体由数据同步管理模块)可如图21所示来进行子区间的清理。
如图21所示,由定时进行的log队列清空触发子区间的清理(S2110),并且仅在遍历完成集群节点本地的所有子区间的情况下才认为该次的子区间清理完成(S2120、S2130),之后等待下一定时的log队列清空。对于集群节点本地的每个子区间,具体的清理操作可包括:首先判断该子区间是否属于结果集(S2140),其中所述结果集为根据配置参数对当前的本地路由表中的相关表项对应的区间进行切分所得到的子区间的集合,其中相关表项是指副本信息中记录有表示该集群节点的信息的路由表项;若判断为该子区间不属于结果集,则可认为该子区间是旧的子区间,从而进一步判断该子区间对应的log队列是否为空(S2150);若判断为该子区间对应的log队列不为空,则认为基于该子区间进行的主备间数据同步可能尚未完成、尤其在异步提交方式下,因此暂时不应该删除该子区间;然而,若该子区间既不属于结果集并且对应的log队列为空,则认为该子区间是已被弃用的旧子区间,因此需要将该子区间及其log队列删除(S2160),以释放它们占用的内存,并然后返回步骤S2120以处理下一个子区间。
需要说明的是,尽管图21示出先判断是否属于结果集、再判断对应log队列是否为空,但本领域技术人员应能理解,这两个判断的执行顺序应不限于此,只要能够筛选出既不属于结果集并且对应log队列为空的子区间即可。例如,可以先判断对应log队列是否为空、再判断是否属于结果集,也可以同时进行这两个判断。
如上参考图15所述,新节点加入集群会触发路由表的更新。这使得,在集群节点将一个区间切分为至少两个子区间的情况下,新节点加入集群还将进一步触发子区间的更新,具体的处理流程可如图22所示。
如图22所示,对于加入集群的新节点,首先将以主节点的身份从管理节点获取路由表以及要负责的区间的信息(S2211)。然后,该新节点(可具体由路由表管理模块)将根据预定的配置参数(例如,路由表项内的区间信息中所包括的分段数等)对该区间进行切分,并(可具体由数据同步管理模块)为切分出的每个子区间分别创建对应的log队列(S2212)。换言之,主节点上的区间切分为子区间可发生在作为新节点加入集群时。
在一种可能的实现方式中,新节点加入集群还可能触发备节点上的区间切分。具言之,如图22所示,在以主节点的身份加入集群(S2213)后,该新节点(可具体由路由表管理模块)将根据路由表项内的副本信息判断是否存在备节点(S2214)。并且,在判断为存在备节点的情况下,向备节点发送切分请求(S2214Y),其中所述切分请求包含表示所述区间的信息以及所述配置参数,以使得备节点能够响应于该切分请求而根据配置参数对该区间进行切分、并为所切分出的每个子区间分别创建对应的log队列,从而使得主备节点对一段区间的切分能够保持一致。然而,在判断为不存在备节点的情况下,该新节点将直接进入等待管理节点触发副本修复的状态(S2215)。
在一种可能的具体实现方式中,管理节点可以如图22所示以定时发送副本修复请求的方式来触发新节点进行副本修复(S2221)。响应于该副本修复请求,该新节点(可具体由路由表管理模块)通常会向备节点发送备份请求(S2222),以使该新节点能够与备节点实现加入前数据的一致性,并响应于来自备节点的数据备份完成报告,向管理节点报告副本修复完成(S2223)。
在一种可能的具体实现方式中,如图22所示,在如上进行副本修复的过程中,新节点有可能接收到来自客户端的数据操作请求,并且将基于该数据操作请求进行数据操作并产生新的log记录(S2231)。这时,该新节点(可具体由数据同步管理模块)需要向备节点发送同步请求(S2232),其中该同步请求包含表示子区间的信息以及相应的操作数据,以使该新节点能够与备节点实现加入后数据的一致性。
图23示出了本发明的另一个实施例的一种集群节点设备的结构框图。所述集群节点设备2300可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述集群节点设备2300包括处理器(processor)2310、通信接口(CommunicationsInterface)2320、存储器(memory array)2330和总线2340。其中,处理器2310、通信接口2320、以及存储器2330通过总线2340完成相互间的通信。
通信接口2320用于与网元通信,其中网元包括例如虚拟机管理中心、共享存储等。
处理器2310用于执行程序。处理器2310可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器2330用于存放文件。存储器2330可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器2330也可以是存储器阵列。存储器2330还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于针对集群节点和客户端的分布式系统中的集群节点,使得所述集群节点:按照配置参数将与本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中,所述本地路由表包括至少一个路由表项,每个所述路由表项至少包括区间信息和副本信息,所述区间信息表示与所述路由表项对应的区间的信息,所述副本信息用于记录与所述区间相对应的集群节点集的信息,所述第一路由表项是指所述副本信息中记录有表示所述集群节点的信息的路由表项;为每个所述子区间分别创建一个日志队列;在接收到来自所述客户端的数据操作请求时,根据所述数据操作请求的关键字段确定对应的子区间;以及根据确定的所述子区间执行与所述数据操作请求对应的数据读写操作,并根据所述数据读写操作更新与确定的所述子区间对应的日志队列。
对于上述程序,在一种可能的实现方式中,在所述集群节点更新了所述本地路由表的情况下,还使得所述集群节点:按照所述配置参数对更新后的所述本地路由表中的第一路由表项对应的区间进行切分;对于在所述更新之后切分出的每个子区间,判断所述集群节点上是否存在与所述子区间对应的日志队列;若所述集群节点上存在与所述子区间对应的日志队列,则基于所述第一路由表项中的副本信息更新所述子区间对应的同步节点信息,其中所述同步节点信息表示在所述子区间上与所述集群节点保持数据同步的其它集群节点的信息;以及若所述集群节点上不存在与所述子区间对应的日志队列,则为所述子区间创建一个日志队列。
对于上述程序,在一种可能的实现方式中,还使得所述集群节点:对于在所述集群节点上存在对应的日志队列的每个子区间,判断所述子区间是否属于结果集以及所述子区间对应的日志队列是否为空;以及在所述子区间不属于结果集并且所述子区间对应的日志队列为空的情况下,将所述子区间及所述子区间对应的日志队列从所述集群节点上删除。其中,所述结果集是指根据所述配置参数对所述集群节点当前的本地路由表中的第一路由表项对应的区间进行切分所得到的子区间的集合。
对于上述程序,在一种可能的实现方式中,在使得所述集群节点按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间之后,还使得所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送切分请求。其中,所述切分请求包含表示所述区间的信息以及所述配置参数,以使所述其它集群节点也根据所述配置参数对所述区间进行切分。
对于上述程序,在一种可能的实现方式中,使得所述集群节点根据所述数据操作请求的关键字段确定对应的子区间,包括:使得所述集群节点对所述数据操作请求的关键字段按照一定的哈希算法进行哈希;使得所述集群节点根据所述哈希的结果查找对应的子区间;以及在未查找到对应的子空间的情况下,使得所述集群节点向所述客户端返回表示路由错误的响应。
对于上述程序,在一种可能的实现方式中,在使得所述集群节点为每个所述子区间分别创建一个日志队列之后,还使得所述集群节点为每个所述子区间单独配置读写操作权限。
对于上述程序,在一种可能的实现方式中,使得所述集群节点根据确定的所述子区间执行相应的数据读写操作,并更新与确定的所述子区间对应的日志队列,包括:使得所述集群节点获得确定的所述子区间的读写操作权限;使得所述集群节点将所述数据操作请求的操作数据以新的序列号写入与确定的所述子区间对应的日志队列;以及使得所述集群节点将所述操作数据写入内存,并向所述客户端反馈处理结果。
对于上述程序,在一种可能的实现方式中,在使得所述集群节点将所述操作数据写入内存之前,还使得所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送同步请求。其中,所述其它集群节点是指所述分布式存储系统中用于对所述集群节点在所述区间上的数据进行备份的节点;所述同步请求包含所述子区间的信息以及所述操作数据,以使所述其它集群节点基于所述子区间与所述集群节点保持数据同步。
对于上述程序,在一种可能的实现方式中,所述配置参数为分段数,所述分段数表示要从一个所述第一路由表项对应的区间切分出的子区间的个数。在一种可能的具体实现方式中,所述分段数与表示所述区间的信息一起记录在所述本地路由表中的与所述区间对应的路由表项内。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种区间管理方法,应用于包括集群节点和客户端的分布式系统中的集群节点,其特征在于,包括:
所述集群节点按照配置参数将与本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中,所述本地路由表包括至少一个路由表项,每个所述路由表项至少包括区间信息和副本信息,所述区间信息表示与所述路由表项对应的区间的信息,所述副本信息用于记录与所述区间对应的集群节点集的信息,所述第一路由表项是指所述副本信息中记录有表示所述集群节点的信息的路由表项;
所述集群节点为每个所述子区间分别创建一个日志队列;
在接收到来自所述客户端的数据操作请求时,所述集群节点根据所述数据操作请求的关键字段确定对应的子区间;
所述集群节点根据确定的所述子区间执行与所述数据操作请求对应的数据读写操作,并根据所述数据读写操作更新与确定的所述子区间对应的日志队列。
2.根据权利要求1所述的区间管理方法,其特征在于,在所述集群节点更新了所述本地路由表的情况下,还包括:
所述集群节点按照所述配置参数对更新后的所述本地路由表中的第一路由表项对应的区间进行切分;
对于在所述更新之后切分出的每个子区间,所述集群节点判断所述集群节点上是否存在与所述子区间对应的日志队列;
若所述集群节点上存在与所述子区间对应的日志队列,则所述集群节点基于所述第一路由表项中的副本信息更新所述子区间对应的同步节点信息,其中所述同步节点信息表示在所述子区间上与所述集群节点保持数据同步的其它集群节点的信息;以及
若所述集群节点上不存在与所述子区间对应的日志队列,则所述集群节点为所述子区间创建一个日志队列。
3.根据权利要求2所述的区间管理方法,其特征在于,还包括:
对于在所述集群节点上存在对应的日志队列的每个子区间,所述集群节点判断所述子区间是否属于结果集以及所述子区间对应的日志队列是否为空;以及
在所述子区间不属于结果集并且所述子区间对应的日志队列为空的情况下,将所述子区间及所述子区间对应的日志队列从所述集群节点上删除,
其中,所述结果集是指根据所述配置参数对所述集群节点当前的本地路由表中的第一路由表项对应的区间进行切分所得到的子区间的集合。
4.根据权利要求1至3中任一项所述的区间管理方法,其特征在于,在所述集群节点按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间之后,还包括:
所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送切分请求,
其中,所述切分请求包含表示所述区间的信息以及所述配置参数,以使所述其它集群节点也根据所述配置参数对所述区间进行切分。
5.根据权利要求1至3中任一项所述的区间管理方法,其特征在于,所述集群节点根据所述数据操作请求的关键字段确定对应的子区间,包括:
所述集群节点对所述数据操作请求的关键字段按照一定的哈希算法进行哈希;
所述集群节点根据所述哈希的结果查找对应的子区间;以及
在未查找到对应的子空间的情况下,所述集群节点向所述客户端返回表示路由错误的响应。
6.根据权利要求1至3中任一项所述的区间管理方法,其特征在于,在所述集群节点为每个所述子区间分别创建一个日志队列之后,还包括:
所述集群节点为每个所述子区间单独配置读写操作权限。
7.根据权利要求6所述的区间管理方法,其特征在于,所述集群节点根据确定的所述子区间执行相应的数据读写操作,并更新与确定的所述子区间对应的日志队列,包括:
所述集群节点获得确定的所述子区间的读写操作权限;
所述集群节点将所述数据操作请求的操作数据以新的序列号写入与确定的所述子区间对应的日志队列;以及
所述集群节点将所述操作数据写入内存,并向所述客户端反馈处理结果。
8.根据权利要求7所述的区间管理方法,其特征在于,在所述集群节点将所述操作数据写入内存之前,还包括:
所述集群节点向所述第一路由表项的副本信息中记录的其它集群节点发送同步请求,
其中,所述其它集群节点是指分布式储系统中用于对所述集群节点在所述区间上的数据进行备份的节点,
所述同步请求包含所述子区间的信息以及所述操作数据,以使所述其它集群节点基于所述子区间与所述集群节点保持数据同步。
9.根据权利要求1至3中任一项所述的区间管理方法,其特征在于,所述配置参数为分段数,所述分段数表示要从一个所述第一路由表项对应的区间切分出的子区间的个数。
10.根据权利要求9所述的区间管理方法,其特征在于,所述分段数与表示所述区间的信息一起记录在所述本地路由表中的与所述区间对应的路由表项内。
11.一种集群节点,应用于包括集群节点和客户端的分布式系统,其特征在于,包括:
网络模块,与所述客户端连接,用于接收来自所述客户端的数据操作请求;
路由表管理模块,与所述网络模块连接,用于管理所述集群节点的本地路由表、处理所述数据操作请求、并按照配置参数将与所述本地路由表中的第一路由表项对应的区间切分为至少两个子区间,其中,所述本地路由表包括至少一个路由表项,每个所述路由表项至少包括区间信息和副本信息,所述区间信息表示与所述路由表项对应的区间的信息,所述副本信息用于记录与所述区间对应的集群节点集的信息,所述第一路由表项是指所述副本信息中记录有表示所述集群节点的信息的路由表项;
数据同步管理模块,与所述网络模块以及所述路由表管理模块连接,用于为每个所述子区间分别创建一个日志队列;以及
存储模块,与所述数据同步管理模块连接,用于进行数据存储以及持久化,
其中,在所述网络模块接收到所述数据操作请求时:所述路由表管理模块根据所述数据操作请求的关键字段确定对应的子区间;所述数据同步管理模块根据确定的所述子区间执行与所述数据操作请求对应的数据读写操作,并根据所述数据读写操作更新与确定的所述子区间对应的日志队列。
12.根据权利要求11所述的集群节点,其特征在于,
所述网络模块还被配置为,接收所述分布式系统的最新版本路由表;
所述路由表管理模块还被配置为,将所述本地路由表更新为所述最新版本路由表,并按照所述配置参数对更新后的所述本地路由表中的第一路由表项对应的区间进行切分;以及
所述数据同步管理模块还被配置为,对于在所述更新之后切分出的每个子区间,判断所述集群节点上是否存在与所述子区间对应的日志队列,
若判断结果为存在与所述子区间对应的日志队列,则所述数据同步管理模块基于所述第一路由表项中的副本信息更新所述子区间对应的同步节点信息,其中所述同步节点信息表示在所述子区间上与所述集群节点保持数据同步的其它集群节点的信息;
若判断结果为不存在与所述子区间对应的日志队列,则所述数据同步管理模块所述数据同步管理模块为所述子区间创建一个日志队列。
13.根据权利要求12所述的集群节点,其特征在于,所述数据同步管理模块还被配置为:
对于在所述集群节点上存在对应的日志队列的每个子区间,判断所述子区间是否属于结果集以及所述子区间对应的日志队列是否为空;以及
在所述子区间不属于结果集并且所述子区间对应的日志队列为空的情况下,将所述子区间及所述子区间对应的日志队列从所述集群节点上删除,
其中,所述结果集是指根据所述配置参数对所述集群节点当前的本地路由表中的第一路由表项对应的区间进行切分所得到的子区间的集合。
14.根据权利要求11至13中任一项所述的集群节点,其特征在于,
所述路由表管理模块还被配置为,在按照配置参数将本地路由表中的第一路由表项对应的区间切分为至少两个子区间之后,生成切分请求,其中,所述切分请求包含表示所述区间的信息以及所述配置参数;以及
所述网络模块还被配置为,向所述第一路由表项的副本信息中记录的其它集群节点发送所述切分请求,以使所述其它集群节点也根据所述配置参数对所述区间进行切分。
15.根据权利要求11至13中任一项所述的集群节点,其特征在于,所述数据同步管理模块还被配置为:为每个所述子区间单独配置读写操作权限。
16.根据权利要求11至13中任一项所述的集群节点,其特征在于,所述配置参数为分段数,所述分段数表示要从一个所述第一路由表项对应的区间切分出的子区间的个数。
17.根据权利要求16所述的集群节点,其特征在于,所述分段数与表示所述区间的信息一起记录在所述本地路由表中的与所述区间对应的路由表项内。
18.一种分布式系统,其特征在于,包括:
客户端;和
至少两个根据权利要求11至17中任一项所述的集群节点,
其中,各所述集群节点与所述客户端连接,各所述集群节点用于响应于来自所述客户端的数据操作请求以进行数据处理操作,并向所述客户端返回所述数据处理操作的处理结果。
CN201310274957.0A 2013-07-02 2013-07-02 分布式存储系统、集群节点及其区间管理方法 Active CN104283906B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310274957.0A CN104283906B (zh) 2013-07-02 2013-07-02 分布式存储系统、集群节点及其区间管理方法
PCT/CN2014/080025 WO2015000359A1 (zh) 2013-07-02 2014-06-17 分布式存储系统、集群节点及其区间管理方法
EP14819963.1A EP3001644B1 (en) 2013-07-02 2014-06-17 Distributed storage system, cluster node and interval management method thereof
US14/983,853 US10348827B2 (en) 2013-07-02 2015-12-30 Distributed storage system, cluster node and range management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310274957.0A CN104283906B (zh) 2013-07-02 2013-07-02 分布式存储系统、集群节点及其区间管理方法

Publications (2)

Publication Number Publication Date
CN104283906A CN104283906A (zh) 2015-01-14
CN104283906B true CN104283906B (zh) 2018-06-19

Family

ID=52143087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310274957.0A Active CN104283906B (zh) 2013-07-02 2013-07-02 分布式存储系统、集群节点及其区间管理方法

Country Status (4)

Country Link
US (1) US10348827B2 (zh)
EP (1) EP3001644B1 (zh)
CN (1) CN104283906B (zh)
WO (1) WO2015000359A1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150030036A (ko) * 2013-09-11 2015-03-19 삼성전자주식회사 분산 처리 방법, 마스터 서버 및 분산 클러스터
US10469580B2 (en) * 2014-12-12 2019-11-05 International Business Machines Corporation Clientless software defined grid
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
US9826041B1 (en) * 2015-06-04 2017-11-21 Amazon Technologies, Inc. Relative placement of volume partitions
US9826030B1 (en) 2015-06-04 2017-11-21 Amazon Technologies, Inc. Placement of volume partition replica pairs
CN105391755B (zh) * 2015-09-30 2018-10-19 华为技术有限公司 一种分布式系统中数据处理方法、装置及系统
CN105491101B (zh) * 2015-11-17 2018-09-21 华为技术有限公司 数据的处理方法和装置
CN106844399B (zh) * 2015-12-07 2022-08-09 中兴通讯股份有限公司 分布式数据库系统及其自适应方法
CN106933550B (zh) * 2015-12-29 2021-01-08 阿里巴巴集团控股有限公司 全局信息获取、处理及更新方法、装置和系统
CN106933548B (zh) * 2015-12-29 2021-01-12 阿里巴巴集团控股有限公司 全局信息获取、处理及更新、方法、装置和系统
CN106933547B (zh) * 2015-12-29 2020-12-01 阿里巴巴集团控股有限公司 全局信息获取及处理的方法、装置和更新系统
CN107094114A (zh) * 2016-01-13 2017-08-25 英特尔公司 用于模块化转发表可缩放性的技术
JP6846111B2 (ja) * 2016-02-26 2021-03-24 オムロン株式会社 マスタ装置、スレーブ装置、情報処理装置、イベントログ収集システム、マスタ装置の制御方法、スレーブ装置の制御方法、および制御プログラム
CN107181686B (zh) * 2016-03-09 2020-06-23 阿里巴巴集团控股有限公司 路由表的同步方法、装置及系统
CN107306223B (zh) * 2016-04-21 2020-08-14 华为技术有限公司 数据传输系统、方法及装置
TWI620074B (zh) * 2016-07-12 2018-04-01 緯創資通股份有限公司 伺服器系統及儲存單元的控制方法
CN107644035B (zh) * 2016-07-21 2022-07-22 百度在线网络技术(北京)有限公司 一种数据库系统及其部署方法
US10873501B2 (en) * 2016-12-09 2020-12-22 Vmware, Inc. Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment
CN109729129B (zh) 2017-10-31 2021-10-26 华为技术有限公司 存储集群系统的配置修改方法、存储集群及计算机系统
EP3714577A4 (en) * 2017-11-20 2021-07-21 Mako Networks Nz Limited DATA TRANSMISSION PROCESS AND SYSTEM
CN110555075B (zh) * 2018-03-29 2023-07-07 阿里云计算有限公司 数据处理方法、装置、电子设备以及计算机可读存储介质
CN110198269B (zh) * 2018-04-03 2021-10-08 腾讯科技(深圳)有限公司 分布式机群的路由同步系统、方法及相关装置
CN110377577B (zh) * 2018-04-11 2022-03-04 北京嘀嘀无限科技发展有限公司 数据同步方法、装置、系统和计算机可读存储介质
CN108830724B (zh) * 2018-04-12 2023-04-14 平安科技(深圳)有限公司 一种资源数据包处理方法及终端设备
CN109542356B (zh) * 2018-11-30 2021-12-31 中国人民解放军国防科技大学 面向容错的nvm持久化过程冗余信息的压缩方法和装置
CN109981467B (zh) * 2019-03-29 2022-02-11 中国人民银行清算总中心 静态路由更新方法和路由集中管理分发方法
CN111078712B (zh) * 2019-10-15 2022-08-26 平安科技(深圳)有限公司 大数据集群的更新方法、装置、计算机设备和存储介质
CN111008233B (zh) * 2019-11-24 2023-02-28 浪潮电子信息产业股份有限公司 一种kv数据库的访问方法、装置及设备
CN111541762B (zh) * 2020-04-20 2023-08-01 广州酷狗计算机科技有限公司 数据处理的方法、管理服务器、设备及存储介质
CN113822015A (zh) * 2020-06-16 2021-12-21 北京沃东天骏信息技术有限公司 序列号生成方法、装置、电子设备及计算机可读介质
CN113297318B (zh) * 2020-07-10 2023-05-02 阿里云计算有限公司 数据处理方法、装置、电子设备及存储介质
CN112052230B (zh) * 2020-09-02 2024-03-15 掌阅科技股份有限公司 多机房数据同步方法、计算设备及存储介质
CN112162698B (zh) * 2020-09-17 2024-02-13 北京浪潮数据技术有限公司 一种缓存分区重建方法、装置、设备及可读存储介质
CN114625595A (zh) * 2020-12-14 2022-06-14 网联清算有限公司 一种业务系统动态配置信息的复核方法、装置和系统
CN112671905B (zh) * 2020-12-23 2023-04-28 广州三七互娱科技有限公司 服务调度方法、装置及系统
CN112953835B (zh) * 2021-01-18 2023-03-14 广州三七互娱科技有限公司 数据传输方法、装置及系统
CN113297159B (zh) * 2021-02-08 2024-03-08 阿里巴巴集团控股有限公司 数据存储方法以及装置
CN113505177A (zh) * 2021-07-08 2021-10-15 中国工商银行股份有限公司 分布式系统集群在线分片扩容方法及装置
CN113726546B (zh) * 2021-07-12 2023-11-21 锐捷网络股份有限公司 配置方法、装置、系统、计算设备及存储介质
WO2023070633A1 (zh) * 2021-10-30 2023-05-04 华为技术有限公司 一种d2d通信方法
CN114237497B (zh) * 2021-11-30 2024-03-12 北京达佳互联信息技术有限公司 一种分布式存储方法及装置
CN114844910B (zh) * 2022-04-19 2023-07-25 重庆紫光华山智安科技有限公司 分布式存储系统的数据传输方法、系统、设备及介质
CN115809301B (zh) * 2023-02-03 2023-04-21 天翼云科技有限公司 数据库处理方法、装置、电子设备及可读存储介质
CN116055397B (zh) * 2023-03-27 2023-08-18 井芯微电子技术(天津)有限公司 队列表项维护方法与装置
CN116975076B (zh) * 2023-07-28 2024-05-07 深圳市丕微科技企业有限公司 一种多终端交互的数据传输控制方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101483670A (zh) * 2009-02-25 2009-07-15 南京邮电大学 基于分布式哈希表的区域化对等计算数据一致性维护方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065540B2 (en) * 1998-11-24 2006-06-20 Oracle International Corporation Managing checkpoint queues in a multiple node system
WO2003094446A1 (en) * 2002-04-30 2003-11-13 International Business Machines Corporation Method and arrangement for local synchronization in master-slave distributed communication systems
IL185417A (en) * 2005-02-24 2012-06-28 Xeround Systems Ltd Method and apparatus for distributed data management in a switching network
JP5557840B2 (ja) * 2008-10-03 2014-07-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 分散データベースの監視メカニズム
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
CN102325093B (zh) * 2011-11-01 2014-07-23 西安电子科技大学 一种结构化p2p网络中的路由系统构建方法
CN102739526B (zh) * 2012-06-13 2015-02-25 烽火通信科技股份有限公司 一种高效分布式路由表的实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101483670A (zh) * 2009-02-25 2009-07-15 南京邮电大学 基于分布式哈希表的区域化对等计算数据一致性维护方法

Also Published As

Publication number Publication date
EP3001644A1 (en) 2016-03-30
EP3001644A4 (en) 2016-06-01
US20160112516A1 (en) 2016-04-21
WO2015000359A1 (zh) 2015-01-08
CN104283906A (zh) 2015-01-14
EP3001644B1 (en) 2018-08-08
US10348827B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
CN104283906B (zh) 分布式存储系统、集群节点及其区间管理方法
CN109074306B (zh) 分布式存储系统中的混合垃圾收集
CN105739924B (zh) 基于缓存集群的缓存方法和系统
EP1569120B1 (en) Computer system for recovering data based on priority of the data
US7257690B1 (en) Log-structured temporal shadow store
US9122698B2 (en) Peer-to-peer redundant file server system and methods
CN101699439B (zh) 一种数据库的事务提交方法和装置
CN110377395A (zh) 一种Kubernetes集群中的Pod迁移方法
JP2005196602A (ja) 無共有型データベース管理システムにおけるシステム構成変更方法
CN103098015A (zh) 存储系统
CN103218455A (zh) Key-Value数据库用户请求的高速并发处理方法
CN108509462A (zh) 一种同步活动事务表的方法及装置
JP3877519B2 (ja) システム回復方法およびその実施計算機システム並びにその処理プログラムを記録した記録媒体
CN108064377A (zh) 一种多系统共享内存的管理方法及装置
CN110196818A (zh) 缓存数据的方法、缓存设备和存储系统
CN109063192A (zh) 一种高性能海量文件存储系统工作方法
WO2014135011A1 (zh) 数据库系统以及数据同步方法
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
US10983709B2 (en) Methods for improving journal performance in storage networks and devices thereof
CN103814352B (zh) 一种虚拟设备重建方法与装置
CN109361777A (zh) 分布式集群节点状态的同步方法、同步系统及相关装置
CN110196788B (zh) 一种数据读取方法、装置、系统及存储介质
CN115408342A (zh) 文件处理方法、装置及电子设备
CN1902620B (zh) 虚拟文件系统
JP7332488B2 (ja) ストレージシステム及びストレージシステムの制御方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant