CN106210038B - 数据操作请求的处理方法及*** - Google Patents
数据操作请求的处理方法及*** Download PDFInfo
- Publication number
- CN106210038B CN106210038B CN201610538490.XA CN201610538490A CN106210038B CN 106210038 B CN106210038 B CN 106210038B CN 201610538490 A CN201610538490 A CN 201610538490A CN 106210038 B CN106210038 B CN 106210038B
- Authority
- CN
- China
- Prior art keywords
- back end
- data
- identification information
- bucket
- barrel
- 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
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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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
- H04L67/1097—Protocols 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据操作请求的处理方法及***。其中,该方法包括:接入层代理获取数据操作请求,其中,数据操作请求中携带有桶标识信息和文件标识信息;接入层代理根据桶标识信息选取第一数据节点;接入层代理将数据操作请求转发至第一数据节点,其中,文件标识信息用于在第一数据节点上与桶标识信息对应的第一桶获取待操作的数据存储位置。本发明解决了相关技术中所提供的数据分布式存储方式同步效率低下,可拓展性不高,组织数据不灵活,而且在高并发访问量下,容易达到性能瓶颈,吞吐量低的技术问题。
Description
技术领域
本发明涉及数据分布式存储领域,具体而言,涉及一种数据操作请求的处理方法及***。
背景技术
目前,在分布式存储领域中,为了能够实现高可用性和高可靠性,针对一份数据通常需要存储多个备份,而且这些备份还需要分布在不同机房,不同主机,不同磁盘的数据节点上,由此,在其中一个备份出现故障的情况下,并不会影响其他备份提供正常服务。因此,数据备份如何存储到不同的数据节点上,以及每当数据修改后数据节点上多个备份如何保持数据同步,进而实现数据一致性,是分布式存储中亟待解决的重要问题。
相关技术中所提供的主从模型通常是以主机为单位进行同步,并遵循主从模型,即存在一个主数据节点以及一个或多个从数据节点,数据写入操作与数据修改操作都在这个主数据节点上进行,然后由主数据节点将写入或修改的数据发送至从数据节点。
然而,这种同步方式存在以下技术缺陷:
(1)同步粒度较粗,同步并发度较低,以主机为单位进行数据同步式效率低,缺乏灵活性。在需要更新的数据量较大的情况下,数据同步通常是按照预设队列顺序依次发送至各个从数据节点进行数据备份,同步速度较慢,全部从数据节点同步数据完毕需要等待较长时间;另外,如果特定记录或者某段数据发生异常,那么可能需要遍历全部从数据节点才能够查找到这些记录或数据,进而有可能导致后续同步更新的数据需要重新同步。
(2)从数据节点仅能执行同步操作,而不能执行修改和读写操作,从数据节点同步或者恢复数据只能从主数据节点中获取,因此,没有充分利用其它从数据节点。由于主从模型过分依赖主数据节点,特别是在高峰访问期间,数据处理压力完全落在主数据节点上,故而易造成主数据节点达到性能瓶颈,负载不均匀,水平拓展性差。
(3)当主数据节点进行一系列的数据写入、删除、更新操作时,由于数据组织以主数据节点粒度为单位,而且从数据节点都仅能与主数据节点进行通信,写入、删除、更新等事件发生通常仅能通过串行方式通知从数据节点,由此易造成从数据节点感知数据写入、删除、更新事件速度慢,进而造成数据同步延时高。
综合整个集群的数据同步过程会发现相关技术中提供的主从模型整体同步效率低下,可拓展性不高,组织数据不灵活,而且在高并发访问量下,容易达到性能瓶颈,吞吐量低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据操作请求的处理方法及***,以至少解决相关技术中所提供的数据分布式存储方式同步效率低下,可拓展性不高,组织数据不灵活,而且在高并发访问量下,容易达到性能瓶颈,吞吐量低的技术问题。
根据本发明实施例的一个方面,提供了一种数据操作请求的处理方法,包括:
接入层代理获取数据操作请求,其中,数据操作请求中携带有桶标识信息和文件标识信息;接入层代理根据桶标识信息选取第一数据节点;接入层代理将数据操作请求转发至第一数据节点,其中,文件标识信息用于在第一数据节点上与桶标识信息对应的第一桶获取待操作的数据存储位置。
可选地,接入层代理根据桶标识信息选取第一数据节点包括:接入层代理根据桶标识信息从中心数据库中查找到与桶标识信息对应的多个数据节点,其中,中心数据库为数据节点集群中各个数据节点共享的存储空间,且中心数据库用于记录与桶标识信息对应的多个桶在数据节点集群中的分布位置;接入层代理从多个数据节点中随机选取第一数据节点。
可选地,在接入层代理将数据操作请求转发至第一数据节点之后,还包括:第一数据节点根据桶标识信息查找到位于第一数据节点上的第一桶;第一桶利用文件标识信息访问与第一数据节点相关联的本地数据库,获取待操作的数据存储位置;第一桶对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作。
可选地,在接入层代理将数据操作请求转发至第一数据节点之后,还包括:第一数据节点创建与数据操作请求对应的数据操作记录日志;第一数据节点将在数据操作记录日志存储在与桶标识信息对应的文件中,其中,数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
可选地,在第一桶对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作之后,还包括:多个第二数据节点向第一数据节点发送日志获取请求,其中,日志获取请求用于获取数据操作记录日志,多个第二数据节点是桶标识信息对应的除第一桶之外的其他桶所在的数据节点;多个第二数据节点上的其他桶在获取到数据操作记录日志后,根据数据操作记录日志执行数据同步操作。
可选地,在接入层代理获取数据操作请求之前,还包括:接入层代理根据数据备份需求确定待创建的桶的数量并根据待创建的桶的数量确定待选用的数据节点的数量;接入层代理在每个待选用的数据节点上创建一个或多个桶;接入层代理将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至中心数据库;接入层代理在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
根据本发明实施例的另一方面,还提供了一种数据操作请求的处理***,该***包括:接入层代理;接入层代理包括:获取模块,用于获取数据操作请求,其中,数据操作请求中携带有桶标识信息和文件标识信息;选取模块,用于根据桶标识信息选取第一数据节点;发送模块,用于将数据操作请求转发至第一数据节点,其中,文件标识信息用于在第一数据节点上与桶标识信息对应的第一桶获取待操作的数据存储位置。
可选地,选取模块包括:查找单元,用于根据桶标识信息从中心数据库中查找到与桶标识信息对应的多个数据节点,其中,中心数据库为数据节点集群中各个数据节点共享的存储空间,且中心数据库用于记录与桶标识信息对应的多个桶在数据节点集群中的分布位置;选取单元,用于从多个数据节点中随机选取第一数据节点。
可选地,上述***还包括:数据节点集群,数据节点集群包括:第一数据节点;第一数据节点包括:查找模块,用于根据桶标识信息查找到位于第一数据节点上的第一桶;获取模块,用于利用文件标识信息访问与第一数据节点相关联的本地数据库,获取待操作的数据存储位置;执行模块,用于对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作。
可选地,第一数据节点还包括:第一创建模块,用于创建与数据操作请求对应的数据操作记录日志;记录模块,用于将在数据操作记录日志存储在与桶标识信息对应的文件中,其中,数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
可选地,数据节点集群还包括:多个第二数据节点;每个第二数据节点均包括:请求模块,用于向第一数据节点发送日志获取请求,其中,日志获取请求用于获取数据操作记录日志,多个第二数据节点是桶标识信息对应的除第一桶之外的其他桶所在的数据节点;同步模块,用于在获取到数据操作记录日志后,根据数据操作记录日志执行数据同步操作。
可选地,接入层代理还包括:确定模块,用于根据数据备份需求确定待创建的桶的数量并根据待创建的桶的数量确定待选用的数据节点的数量;第二创建模块,用于在每个待选用的数据节点上创建一个或多个桶;处理模块,用于将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至中心数据库;启动模块,用于在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
在本发明实施例中,采用完全对称的集群架构,去中心化设计,将数据节点细化成多个桶,并以桶为单位进行分布式数据存储和数据同步,从而增强了数据同步的并发度、数据组织的灵活性;同时采用完全对称的集群架构,每个桶都可以同时对数据执行相关操作,而且每个桶还可以从其他桶获取备份数据,由此分担了整个***的压力,提高***的容纳能力和水平拓展能力,进而解决了相关技术中所提供的数据分布式存储方式同步效率低下,可拓展性不高,组织数据不灵活,而且在高并发访问量下,容易达到性能瓶颈,吞吐量低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据操作请求的处理方法的流程图;
图2是根据本发明优选实施例的数据写入过程的流程图;
图3是根据本发明优选实施例的数据操作记录日志格式的示意图;
图4是根据本发明优选实施例的伙伴桶之间执行数据同步过程的流程图;
图5是根据本发明优选实施例的桶创建过程的流程图;
图6是根据本发明优选实施例的伙伴桶相互连接的拓扑结构示意图;
图7是根据本发明实施例的数据操作请求的处理***的结构框图;
图8是根据本发明优选实施例的数据操作请求的处理***的结构框图;
图9是根据本发明优选实施例的分布式存储中多副本同步的集群架构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种数据操作请求的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的数据操作请求的处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,接入层代理获取数据操作请求,其中,数据操作请求中携带有桶标识信息和文件标识信息;
步骤S104,接入层代理根据桶标识信息选取第一数据节点;
步骤S106,接入层代理将数据操作请求转发至第一数据节点,其中,文件标识信息用于在第一数据节点上与桶标识信息对应的第一桶获取待操作的数据存储位置。
通过上述步骤,采用去中心化的设计,将数据节点细化成桶(BUCKET,其为组织数据的逻辑单位),用桶组织数据,桶跟备份桶的标识符完全一致,结成伙伴桶(即备份桶),伙伴桶之间相互建立连接,时刻保持通信;一份数据指定写入某个桶,那么***就知道这份数据属于哪个数据节点,从而建立和这个数据节点的通信;数据写入后这个桶的伙伴桶也能迅速从相互之间得到消息,从而请求数据同步。
可选地,在步骤S104中,接入层代理根据桶标识信息选取第一数据节点可以包括以下执行步骤:
步骤S1041,接入层代理根据桶标识信息从中心数据库(例如:中心REDIS数据库,其为集群数据节点内所有数据节点共享的数据库;REDIS是一个KEY-VALUE形式存储的内存数据库,内存数据可以持久化到磁盘中)中查找到与桶标识信息对应的多个数据节点,其中,中心数据库为数据节点集群中各个数据节点共享的存储空间,且中心数据库用于记录与桶标识信息对应的多个桶在数据节点集群中的分布位置;
步骤S1042,接入层代理从多个数据节点中随机选取第一数据节点。
在优选实施例中,可以在集群架构中部署一个接入层代理和一个中心REDIS数据库。另外,为了能够更加清楚地解释本发明,该优选实施例以数据节点集群使用三台主机(三个数据节点)为例加以说明。每台主机上部署一个数据节点实例(当然也可以部署多个数据节点实例)和一个本地的REDIS数据库,其中,这三台主机可以分布在不同的机架或者机房,以提高其可用性。
假设一个桶标识信息对应三个桶,这三个桶分别位于一个数据节点上,那么接入层代理便可以从上述三台主机中任选一台主机。
可选地,在步骤S106,接入层代理将数据操作请求转发至第一数据节点之后,还可以包括以下执行步骤:
步骤S107,第一数据节点根据桶标识信息查找到位于第一数据节点上的第一桶;
步骤S108,第一桶利用文件标识信息访问与第一数据节点相关联的本地数据库(例如:本地REDIS数据库,其为集群数据节点内每个数据节点分别搭建的本地数据库,仅供该数据节点自身访问),获取待操作的数据存储位置;
步骤S109,第一桶对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作。
在优选实施例中,没有主从数据节点的概念,每个数据节点都可以成为主节点,都可以对数据执行相应操作(例如:读取、写入、删除),数据节点上每个桶都相互连接处于同一备份的桶成为伙伴桶,无论哪个桶获得数据,伙伴桶都能快速的从更新桶或者已经更新好伙伴桶中获取数据进行同步,其优势在于:增加了***并发度,提高获取数据更新事件的感知敏感度,加快同步数据的传输速率,以更小的粒度进行同步,同时增强读取更新数据的灵活性。
可选地,在步骤S106,接入层代理将数据操作请求转发至第一数据节点之后,还可以包括以下执行步骤:
步骤S110,第一数据节点创建与数据操作请求对应的数据操作记录日志(binlog);
步骤S111,第一数据节点将在数据操作记录日志存储在与桶标识信息对应的文件中,其中,数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
在本发明实施例提供的对称型的集群架构中设计了一种精简的binlog日志格式,用于协商数据节点之间的数据同步。每个数据节点下创建多个桶,以桶为粒度进行同步,桶的数据备份到伙伴桶中,即桶与伙伴桶进行数据同步。通过采用binlog日志格式,有利于减少通信的开销,减少binlog的占用空间,并且能准确定位数据节点和桶的同步位置,保证数据可靠性,能充分利用资源,提高***的并发度,减少数据的读写延时,提高整个集群的吞吐量。
作为本发明的一个优选实施例,图2是根据本发明优选实施例的数据写入过程的流程图。如图2所示,该流程可以包括以下处理步骤:
步骤S202:接入层代理接收到来自于用户的数据写入请求,其中,所述数据写入请求中携带有bucket_id;
步骤S204:接入层代理根据bucket_id访问中心REDIS数据库,得到bucket所在的数据节点列表nodes;
步骤S206:接入层代理从nodes列表中随机选择其中一个node并读取node服务信息;
步骤S208:接入层代理根据选取的node服务信息进行连接,请求数据写入服务;
步骤S210:数据节点接收来自于接入层代理的数据写入请求,构建一条数据写入记录binlog。
图3是根据本发明优选实施例的数据操作记录日志格式的示意图。如图3所示,数据操作记录日志可以包括但不限于:数据节点编号(node_id),操作码(op_code),文件的id编号(file_id),数据写入的时间(timestamp,其单位为毫秒)。
在该优选实施例中,主要定义了以下2种opcode:
0:更新文件内容;
1:删除文件内容;
node_id和opcode合并成一个整型(int),即combine=node_id*0x100+opcode,因此,binlog的结构即为combine|file_id|timestamp总共16个字节,由此可见,一条数据操作记录日志需要的存储空间非常少。
步骤S212:数据节点将binlog写入到bucket_id为目录下的文件中,按照序号N(N为整数,从0开始起算)命名文件,当一个文件上的binlog的存储量累积达到预设阈值(例如:100M),则需要创建一个新的文件来继续写入后续生成的binlog,其新文件可以命名为N+1;
步骤S214:在数据节点成功保存上述文件后,可以将更新消息推送到其他数据节点的伙伴桶中;例如:接入层代理将数据写入BUCKET_A,选择的数据节点为node_1,那么数据成功写入完毕后,node_1可以通知BUCKET_A的伙伴桶,然后,由伙伴桶对写入BUCKET_A的数据进行同步;
在数据写入的过程中,接入层代理可以选取任意一个伙伴桶执行写入操作,其操作十分灵活;另外,数据写入事件采用binlog进行记录,由于binlog格式非常精简,因此,便于存储和传输。
可选地,在步骤S109,第一桶对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作之后,还可以包括以下执行步骤:
步骤S112,多个第二数据节点向第一数据节点发送日志获取请求,其中,日志获取请求用于获取数据操作记录日志,多个第二数据节点是桶标识信息对应的除第一桶之外的其他桶所在的数据节点;
步骤S113,多个第二数据节点上的其他桶在获取到数据操作记录日志后,根据数据操作记录日志执行数据同步操作。
当对与桶标识信息对应的多个桶的其中一个桶执行数据操作时,以桶为单位构造一条操作日志binlog写入到磁盘,伙伴桶之间相互请求binlog,并根据binlog进行事件回放以完成数据同步。如果任意一个桶中的数据发生异常并不会影响到其他桶中的数据,并且在分布式存储过程中,还可以随时加入一个新桶与旧桶成为伙伴,新桶会从伙伴桶中请求binlog进行数据同步。整个架构是完全对称的,无论从数据节点还是桶单位角度,都可以进行数据操作,由此平衡了整个***的数据处理压力。
图4是根据本发明优选实施例的伙伴桶之间执行数据同步过程的流程图。如图4所示,该流程可以包括以下处理步骤:
步骤S402:桶可以存在以下两种方式获取伙伴桶发生的更新事件,其一是伙伴桶推送给自身的更新消息,表明伙伴桶存在新的binlog需要读取;其二是自身定时主动访问伙伴桶的binlog;
步骤S404:本地桶在接收到伙伴桶推送的更新消息或者本地桶定时访问伙伴桶的binlog确定需要执行更新操作时,本地桶会向伙伴桶发起读取binlog的请求;本地桶查询本地的REDIS数据库,获取上一次已经从伙伴桶读取的binlog条数的偏移量offset,那么此次向伙伴桶请求offset+1开始的新binlog;
步骤S406:本地桶封装offset变量,向伙伴桶发送获取binlog的请求;
步骤S408:伙伴桶接收到请求桶(即上述本地桶)发送的获取binlog的请求;
步骤S410:伙伴桶根据请求的偏移量offset,读取日志文件从开始偏移量到末尾的binlog;
步骤S412:伙伴桶将读取到的binlog进行封装,发给至请求桶;
步骤S414:本地桶在接收到封装的binlog后,根据binlog的格式解析出全部binlog;
步骤S416:本地桶逐一解析binlog中,得到opcode,在该优选实施例中,操作码主要有两种操作:更新文件内容、删除文件内容;如果是删除文件内容,直接转到步骤S424;如果是更新文件内容,直接转到步骤S418;
步骤S418:本地桶根据opcode构建数据更新请求,并发送至伙伴桶;
步骤S420:伙伴桶根据数据更新请求返回待更新数据;
步骤S422:本地桶在接收到待更新数据后执行数据同步;
步骤S424:如果opcode是删除文件内容,本地桶将执行删除文件内容操作;
步骤S426:在处理完毕binlog之后,记录已经从这个伙伴桶读取binlog的偏移量offset,以便在下次构建获取binlog请求时从offset+1开始继续读取。
通过上述流程伙伴桶之间同步数据是非常灵活和高效的,任意一个桶更新,伙伴桶都能够快速感知到事件发生,并请求binlog进行事件回放,从而实现自动化管理;另外,使用偏移量记录同步进度,既简单准确,同时又能够确保灵活地选择需要备份的数据内容。
可选地,在步骤S102,接入层代理获取数据操作请求之前,还可以包括以下执行步骤:
步骤S114,接入层代理根据数据备份需求确定待创建的桶的数量并根据待创建的桶的数量确定待选用的数据节点的数量;
步骤S115,接入层代理在每个待选用的数据节点上创建一个或多个桶;
步骤S116,接入层代理将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至中心数据库;
步骤S117,接入层代理在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
作为本发明的另一个优选实施例,图5是根据本发明优选实施例的桶创建过程的流程图。如图5所示,可以将数据节点划分为多个桶(BUCKET),由BUCKET组织数据、备份数据以及同步数据。在数据节点创建完毕多个桶后,便可以分配给用户进行数据写入操作。该流程可以包括以下处理步骤:
步骤S502:根据用户的需求确定数据副本数量,其中,副本数量决定同一个桶的伙伴个数,这些伙伴桶的ID以及保存的数据都是一致的;例如:假设副本数量为3,那么同一个桶便有3个伙伴桶;
步骤S504:选择需要创建桶的数据节点,需要创建多少个伙伴桶,就需要选择多少个数据节点,而选择数据节点也即选择物理主机;在选择过程中,可以根据地域隔离性尽量选择位于不同地域、不同机架上的主机,其优势在于:如果其中一个地方的机房或者一个机架上发生故障,其他的副本并不会因此而受到影响;
步骤S506:在选取数据节点后,需要在相应的数据节点上分别创建一个线程程序服务对象,这个对象即称为桶的实例;并将桶的信息写入到本地的REDIS数据中;例如:创建的桶的名字为BUCKET_A,选取的数据节点为:node_1、node_2、node_3,则需要在这3个数据节点上创建BUCKET_A;
步骤S508:在全部数据节点创建完毕桶的实例之后,将桶所在数据节点注册到中心的REDIS数据库,即在REDIS中创建以BUCKET_A为KEY,数据节点node_1、node_2、node_3列表为VALUE的键值对;
步骤S510:在全部数据节点向中心的REDIS数据库注册完毕之后,各数据节点为桶实例开启一个线程,并分配一个通信端口监听来自伙伴桶的连接;
步骤S512:各数据节点根据本地的REDIS数据库保存的桶标识信息,向中心的REDIS数据库读取伙伴桶,从而获得伙伴桶的数据节点信息,比如:BUCKET_A,伙伴桶所在的位置是数据节点node_1、node_2、node_3;
步骤S514:各个数据节点为桶的实例开启一个线程,分别向伙伴桶的通信监听端口发送连接请求;图6是根据本发明优选实施例的伙伴桶相互连接的拓扑结构示意图。如图6所示,伙伴桶BUCKET_A_1、BUCKET_A_2和BUCKET_A_3进行相互连接,BUCKET_B_1和BUCKET_C_2进行相互连接,BUCKET_C_1和BUCKET_C_2进行相互连接以及BUCKET_D_1和BUCKET_D_2进行相互连接,分别开启同步功能。
在上述优选实施例中,通过将数据节点细化为桶进行管理可以增加同步的并发度,伙伴桶相互连接可以提高桶更新的时间的感知灵敏度,同时,从选择隔离地域的数据节点创建桶还可以提高数据的可靠性和可用性,以及操作的灵活性。
根据本发明实施例,还提供了一种数据操作请求的处理***的实施例。图7是根据本发明实施例的数据操作请求的处理***的结构框图。如图7所示,该***可以包括:接入层代理10;接入层代理10可以包括:获取模块100,用于获取数据操作请求,其中,数据操作请求中携带有桶标识信息和文件标识信息;选取模块102,用于根据桶标识信息选取第一数据节点;发送模块104,用于将数据操作请求转发至第一数据节点,其中,文件标识信息用于在第一数据节点上与桶标识信息对应的第一桶获取待操作的数据存储位置。
可选地,选取模块102可以包括:查找单元(图中未示出),用于根据桶标识信息从中心数据库中查找到与桶标识信息对应的多个数据节点,其中,中心数据库为数据节点集群中各个数据节点共享的存储空间,且中心数据库用于记录与桶标识信息对应的多个桶在数据节点集群中的分布位置;选取单元(图中未示出),用于从多个数据节点中随机选取第一数据节点。
可选地,图8是根据本发明优选实施例的数据操作请求的处理***的结构框图。如图8所示,上述***还可以包括:数据节点集群20,数据节点集群20包括:第一数据节点;第一数据节点可以包括:查找模块200,用于根据桶标识信息查找到位于第一数据节点上的第一桶;获取模块202,用于利用文件标识信息访问与第一数据节点相关联的本地数据库,获取待操作的数据存储位置;执行模块204,用于对存储在待操作的数据存储位置上的数据执行与数据操作请求对应的操作。
可选地,如图8所示,第一数据节点还可以包括:第一创建模块206,用于创建与数据操作请求对应的数据操作记录日志;记录模块208,用于将在数据操作记录日志存储在与桶标识信息对应的文件中,其中,数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
可选地,如图8所示,数据节点集群20还可以包括:多个第二数据节点;每个第二数据节点均包括:请求模块210,用于向第一数据节点发送日志获取请求,其中,日志获取请求用于获取数据操作记录日志,多个第二数据节点是桶标识信息对应的除第一桶之外的其他桶所在的数据节点;同步模块212,用于在获取到数据操作记录日志后,根据数据操作记录日志执行数据同步操作。
可选地,如图8所示,接入层代理10还可以包括:确定模块106,用于根据数据备份需求确定待创建的桶的数量并根据待创建的桶的数量确定待选用的数据节点的数量;第二创建模块108,用于在每个待选用的数据节点上创建一个或多个桶;处理模块110,用于将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至中心数据库;启动模块112,用于在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
下面将结合图9所示的优选实施方式对上述优选实施过程作进一步地描述。
图9是根据本发明优选实施例的分布式存储中多副本同步的集群架构图。如图9所示,集群架构可以分为以下三个部分:接入层代理、中心REDIS数据库和数据节点集群。下面将分别对每个部分的功能做进一步地阐述。
接入层代理负责处理用户写入、读取、删除数据等操作请求,并将操作请求转发至数据节点集群,然后再将数据节点集群的处理结果返回给用户。
中心REDIS数据库负责存储伙伴桶相互间的存储位置关系,即伙伴桶各自位于哪些数据节点上。
数据节点集群由多个主机组成,每个主机由本地的REDIS数据库(其负责存储文件标识信息(file_id),物理磁盘的位置以及binlog位移信息)和数据节点进程组成,负责将数据持久化到物理磁盘以及将数据从物理磁盘中读取出来。
用户在执行读取/写入数据操作时,会指定桶标识信息(bucket_id)和文件标识信息(file_id)。首先,接入层代理需要将bucket_id和file_id解析出来,并根据bucket_id查找中心REDIS数据库,得到伙伴桶的位置信息。其次,接入层代理从这些存储位置中随机选择一个,即对应的数据节点。然后,接入层代理与该数据节点进行通信交互,并将数据操作请求转发给该数据节点。数据节点根据bucket_id查找到该数据节点上对应的桶,以使该桶能够根据file_id信息访问本地的REDIS数据库,得到数据对应的物理磁盘位置,从而进行数据的读取/写入。在数据节点对数据操作请求处理完毕后还会将处理结果返回至接入层代理,并进一步由接入层代理将处理结果转发给用户。
通过采用完全对称的***架构,一方面可以使得***可以无限地横向拓展,增强***的可拓展性和***的容纳能力,另一方面也使得整个***压力分布平均,充分利用整个***的资源。而且,将数据节点细化为桶管理,用桶组织数据,增大了数据节点之间的同步并发度,降低数据损坏的范围,便于执行数据的查找和恢复。另外,通过备份桶之间形成相互连接的伙伴桶,增强了伙伴桶之间的数据更新事件的感知速度;对称的结构也同样使得伙伴桶分担的压力平均,备份桶可以根据需求随时灵活的加入进来。进一步地,通过采用精简的数据操作记录日志格式设计,能够减少存储空间的消耗和传输带宽的开销;伙伴桶之间通过binlog进行协商通信,既能够确保数据一致性,又能够避免无效的数据传输。
综上所述,本发明实施例所提供的上述集群架构能够充分利用整个***的资源,提高***的并发度,减少数据的读写延时,增强组织数据的灵活性,降低同步通信的开销低,提升数据同步的效率以及整个集群性能、可靠性和吞吐量。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据操作请求的处理方法,其特征在于,包括:
接入层代理获取数据操作请求,其中,所述数据操作请求中携带有桶标识信息和文件标识信息;
所述接入层代理根据所述桶标识信息选取第一数据节点;
所述接入层代理将所述数据操作请求转发至所述第一数据节点,其中,所述文件标识信息用于在所述第一数据节点上与所述桶标识信息对应的第一桶获取待操作的数据存储位置;
其中,在所述第一桶对存储在所述待操作的数据存储位置上的数据执行与所述数据操作请求对应的操作之后,还包括:多个第二数据节点向所述第一数据节点发送日志获取请求,其中,所述日志获取请求用于获取所述数据操作记录日志,所述多个第二数据节点是所述桶标识信息对应的除所述第一桶之外的其他桶所在的数据节点;所述多个第二数据节点上的其他桶在获取到所述数据操作记录日志后,根据所述数据操作记录日志执行数据同步操作。
2.根据权利要求1所述的方法,其特征在于,所述接入层代理根据所述桶标识信息选取所述第一数据节点包括:
所述接入层代理根据所述桶标识信息从中心数据库中查找到与所述桶标识信息对应的多个数据节点,其中,所述中心数据库为数据节点集群中各个数据节点共享的存储空间,且所述中心数据库用于记录与所述桶标识信息对应的多个桶在所述数据节点集群中的分布位置;
所述接入层代理从所述多个数据节点中随机选取所述第一数据节点。
3.根据权利要求2所述的方法,其特征在于,在所述接入层代理将所述数据操作请求转发至所述第一数据节点之后,还包括:
所述第一数据节点根据所述桶标识信息查找到位于所述第一数据节点上的所述第一桶;
所述第一桶利用所述文件标识信息访问与所述第一数据节点相关联的本地数据库,获取所述待操作的数据存储位置;
所述第一桶对存储在所述待操作的数据存储位置上的数据执行与所述数据操作请求对应的操作。
4.根据权利要求3所述的方法,其特征在于,在所述接入层代理将所述数据操作请求转发至所述第一数据节点之后,还包括:
所述第一数据节点创建与所述数据操作请求对应的数据操作记录日志;
所述第一数据节点将在所述数据操作记录日志存储在与所述桶标识信息对应的文件中,其中,所述数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
5.根据权利要求3所述的方法,其特征在于,在所述接入层代理获取所述数据操作请求之前,还包括:
所述接入层代理根据数据备份需求确定待创建的桶的数量并根据所述待创建的桶的数量确定待选用的数据节点的数量;
所述接入层代理在每个待选用的数据节点上创建一个或多个桶;
所述接入层代理将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至所述中心数据库;
所述接入层代理在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
6.一种数据操作请求的处理***,其特征在于,所述***包括:接入层代理;
所述接入层代理包括:
获取模块,用于获取数据操作请求,其中,所述数据操作请求中携带有桶标识信息和文件标识信息;
选取模块,用于根据所述桶标识信息选取第一数据节点;
发送模块,用于将所述数据操作请求转发至所述第一数据节点,其中,所述文件标识信息用于在所述第一数据节点上与所述桶标识信息对应的第一桶获取待操作的数据存储位置;
其中,所述数据节点集群还包括:多个第二数据节点;每个第二数据节点均包括:请求模块,用于向所述第一数据节点发送日志获取请求,其中,所述日志获取请求用于获取所述数据操作记录日志,所述多个第二数据节点是所述桶标识信息对应的除所述第一桶之外的其他桶所在的数据节点;同步模块,用于在获取到所述数据操作记录日志后,根据所述数据操作记录日志执行数据同步操作。
7.根据权利要求6所述的***,其特征在于,所述选取模块包括:
查找单元,用于根据所述桶标识信息从中心数据库中查找到与所述桶标识信息对应的多个数据节点,其中,所述中心数据库为数据节点集群中各个数据节点共享的存储空间,且所述中心数据库用于记录与所述桶标识信息对应的多个桶在所述数据节点集群中的分布位置;
选取单元,用于从所述多个数据节点中随机选取所述第一数据节点。
8.根据权利要求7所述的***,其特征在于,所述***还包括:所述数据节点集群,所述数据节点集群包括:所述第一数据节点;
所述第一数据节点包括:
查找模块,用于根据所述桶标识信息查找到位于所述第一数据节点上的所述第一桶;
获取模块,用于利用所述文件标识信息访问与所述第一数据节点相关联的本地数据库,获取所述待操作的数据存储位置;
执行模块,用于对存储在所述待操作的数据存储位置上的数据执行与所述数据操作请求对应的操作。
9.根据权利要求8所述的***,其特征在于,所述第一数据节点还包括:
第一创建模块,用于创建与所述数据操作请求对应的数据操作记录日志;
记录模块,用于将在所述数据操作记录日志存储在与所述桶标识信息对应的文件中,其中,所述数据操作记录日志与先前创建的数据操作记录日志按照时间先后顺序存放。
10.根据权利要求8所述的***,其特征在于,所述接入层代理还包括:
确定模块,用于根据数据备份需求确定待创建的桶的数量并根据所述待创建的桶的数量确定待选用的数据节点的数量;
第二创建模块,用于在每个待选用的数据节点上创建一个或多个桶;
处理模块,用于将每个待选用的数据节点所创建的一个或多个桶的标识信息记录至关联的本地数据库中并将与每个桶的标识信息对应的多个桶在多个待选用的数据节点上的分布信息注册至所述中心数据库;
启动模块,用于在与每个桶的标识信息对应的多个桶之间开启数据同步功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610538490.XA CN106210038B (zh) | 2016-07-06 | 2016-07-06 | 数据操作请求的处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610538490.XA CN106210038B (zh) | 2016-07-06 | 2016-07-06 | 数据操作请求的处理方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106210038A CN106210038A (zh) | 2016-12-07 |
CN106210038B true CN106210038B (zh) | 2019-01-29 |
Family
ID=57474180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610538490.XA Active CN106210038B (zh) | 2016-07-06 | 2016-07-06 | 数据操作请求的处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106210038B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008031B (zh) * | 2018-01-05 | 2022-04-15 | 北京金山云网络技术有限公司 | 设备操作方法、集群***、电子设备及可读取存储介质 |
CN110008732B (zh) * | 2018-12-29 | 2023-02-24 | 创新先进技术有限公司 | 数据的关联方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136003A (zh) * | 2011-03-25 | 2011-07-27 | 上海交通大学 | 大规模分布式存储*** |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
CN104008152A (zh) * | 2014-05-21 | 2014-08-27 | 华南理工大学 | 支持海量数据访问的分布式文件***的架构方法 |
CN104461792A (zh) * | 2014-12-03 | 2015-03-25 | 浪潮集团有限公司 | 一种解决hadoop分布式文件***namenode单点故障的ha方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781908A (en) * | 1995-12-18 | 1998-07-14 | J.D. Edwards World Source Company | File data synchronizer in a distributed data computer network |
-
2016
- 2016-07-06 CN CN201610538490.XA patent/CN106210038B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136003A (zh) * | 2011-03-25 | 2011-07-27 | 上海交通大学 | 大规模分布式存储*** |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
CN104008152A (zh) * | 2014-05-21 | 2014-08-27 | 华南理工大学 | 支持海量数据访问的分布式文件***的架构方法 |
CN104461792A (zh) * | 2014-12-03 | 2015-03-25 | 浪潮集团有限公司 | 一种解决hadoop分布式文件***namenode单点故障的ha方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106210038A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124301B (zh) | 一种对象存储设备的数据一致性存储方法及*** | |
US11397721B2 (en) | Merging conflict resolution for multi-master distributed databases | |
CN109074306B (zh) | 分布式存储***中的混合垃圾收集 | |
CN109547512B (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
WO2018059032A1 (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
CN105814544B (zh) | 用于支持分布式数据网格中的持久化分区恢复的***和方法 | |
US6950833B2 (en) | Clustered filesystem | |
US9515878B2 (en) | Method, medium, and system for configuring a new node in a distributed memory network | |
US8010558B2 (en) | Relocation of metadata server with outstanding DMAPI requests | |
CN110209726A (zh) | 分布式数据库集群***、数据同步方法及存储介质 | |
US9864791B2 (en) | Flow for multi-master replication in distributed storage | |
US7593968B2 (en) | Recovery and relocation of a distributed name service in a cluster filesystem | |
CN103701913B (zh) | 数据同步方法及装置 | |
CN102831156A (zh) | 一种云计算平台上的分布式事务处理方法 | |
JP6086463B2 (ja) | ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
CN109144416A (zh) | 查询数据的方法和装置 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
WO2017000693A1 (zh) | 一种集群设备性能同步统计方法及*** | |
WO2015014170A1 (zh) | 分区日志队列同步管理方法及设备 | |
CN109344122A (zh) | 一种基于文件预创策略的分布式元数据管理方法及*** | |
CN113268472B (zh) | 一种分布式数据存储***及方法 | |
CN109684273A (zh) | 一种快照管理方法、装置、设备及可读存储介质 | |
CN107168970A (zh) | 一种分布式文件***hdfs的管理方法、装置及*** | |
US20190332500A1 (en) | Method and system for global snapshots of distributed storage |
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 |