Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COPY STORAGE DEVICE AND COPY STORAGE METHOD
Document Type and Number:
WIPO Patent Application WO/2015/039569
Kind Code:
A1
Abstract:
Provided in an embodiment are a copy storage device and copy storage method, comprising: partitioning mutually dependent Master space and Slave space for a Master and a Slave, and respectively performing data reading and writing operations and the like in the Master space and the Slave space; differentially processing a Master write request and a Slave write request, thus shortening processing time delay of the write request and improving write capability of a distributed system; using different files on a non-volatile storage medium to respectively store the records carried in the Master write request and the Slave write request so as to separately store the Master and the Slave, thus decreasing the number and size of files to be found when searching the Master records, and improving read capability of the distributed system, while reducing data traffic to be filtered when the range of the Master and the Slave changes, and reducing resource consumption of the distributed system.

Inventors:
LIANG XIAOHAO (CN)
Application Number:
PCT/CN2014/085993
Publication Date:
March 26, 2015
Filing Date:
September 05, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F11/14
Foreign References:
CN101706802A2010-05-12
CN103294787A2013-09-11
US20110161607A12011-06-30
Download PDF:
Claims:
权 利 要 求

1、 一种副本存储装置, 其特征在于, 包括:

分发模块;

主副本空间, 所述主副本空间包括第一内存表和第一副本文件; 所述第一 内存表, 用于存储所述主副本写请求所携带的记录, 并在所述第一内存表中所 有记录所占用的内存大小达到第一预设值时, 将所述第一内存表中所有记录存 储到所述第一副本文件中;

从副本空间, 所述从副本空间包括第二内存表和第二副本文件; 所述第二 内存表, 用于存储所述从副本写请求所携带的记录, 并在所述第二内存表中所 有记录所占用的内存大小达到第二预设值时, 将所述第二内存表中所有记录存 储到所述第二副本文件中;

其中, 所述分发模块接收发送节点发送的写请求, 并判定所述写请求的类 型: 若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所述主 副本空间的第一内存表; 若判定所述写请求为从副本写请求, 则将所述从副本 写请求提交给所述从副本空间的第二内存表。

2、根据权利要求 1所述的装置, 其特征在于, 所述主副本空间的第一内存 表的数目至少为一个;和 /或,所述从副本空间的第二内存表的数目至少为一个。

3、根据权利要求 2所述的装置, 其特征在于, 所述主副本空间还包括快速 选择模块; 所述快速选择模块, 用于接收所述分发模块提交的所述主副本写请 求, 根据所述主副本写请求所携带的记录的主键, 从各所述第一内存表中确定 用于存储所述主副本写请求所携带的记录的目标第一内存表, 并将所述主副本 写请求提交到所述目标第一内存表;

所述从副本空间还包括队列模块; 所述队列模块, 用于接收所述分发模块 提交的所述从副本写请求, 将所述从副本写请求插入队列, 当所述队列达到预 设的队列阈值时, 将所述队列中的所有从副本写请求提交到所述第二内存表。

4、 根据权利要求 3所述的装置, 其特征在于, 所述队列模块, 还用于在将 所述从副本写请求插入队列之后, 向所述发送节点发送从副本写请求响应。

5、根据权利要求 1-4中任一项所述的装置,其特征在于,所述第一内存表, 还用于在存储所述主副本写请求所携带的记录之后, 向预先设定的副本存储节 点发送携带所述记录的从副本写请求。 6、 一种副本存储方法, 其特征在于, 应用于副本存储装置, 其中, 所述副 本存储装置包括分发模块、 主副本空间和从副本空间;

所述主副本空间包括第一内存表和第一副本文件; 所述第一内存表, 用于 存储所述主副本写请求所携带的记录, 并在所述第一内存表中所有记录所占用 的内存大小达到第一预设值时, 将所述第一内存表中所有记录存储到所述第一 副本文件中;

所述从副本空间包括第二内存表和第二副本文件; 所述第二内存表, 用于 存储所述从副本写请求所携带的记录, 并在所述第二内存表中所有记录所占用 的内存大小达到第二预设值时, 将所述第二内存表中所有记录存储到所述第二 副本文件中;

所述副本存储方法包括:

所述分发模块接收发送节点发送的写请求, 并判定所述写请求的类型: 若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所述主 副本空间的第一内存表;

若判定所述写请求为从副本写请求, 则将所述从副本写请求提交给所述从 副本空间的第二内存表。

7、根据权利要求 6所述的方法, 其特征在于, 所述主副本空间的第一内存 表的数目至少为一个;和 /或,所述从副本空间的第二内存表的数目至少为一个。

8、根据权利要求 7所述的方法, 其特征在于, 所述主副本空间还包括快速 选择模块; 所述从副本空间还包括队列模块;

所述将所述主副本写请求提交给所述主副本空间的第一内存表, 包括: 所述分发模块将所述主副本写请求提交给所述快速选择模块;

所述快速选择模块, 接收所述分发模块提交的所述主副本写请求, 根据所 述主副本写请求所携带的记录的主键, 从所述主副本空间的各所述第一内存表 中确定用于存储所述主副本写请求所携带的记录的目标第一内存表, 并将所述 主副本写请求提交到所述目标第一内存表;

所述将所述从副本写请求提交给所述从副本空间的第二内存表, 包括: 所述分发模块将所述主副本写请求提交给所述队列模块;

所述队列模块, 接收所述分发模块提交的所述从副本写请求, 将所述从副 本写请求插入队列, 当所述队列达到预设的队列阈值时, 将所述队列中的所有 从副本写请求提交到所述第二内存表。 9、根据权利要求 8所述的方法, 其特征在于, 所述队列模块接收所述分发 模块提交的所述从副本写请求, 并将所述从副本写请求插入队列之后, 所述方 法还包括:

所述队列模块向所述发送节点发送从副本写请求响应。

10、 根据权利要求 6-9中任一项所述的方法, 其特征在于, 所述第一内存 表存储所述主副本写请求所携带的记录之后, 所述方法还包括:

所述第一内存表向预先设定的副本存储节点发送携带所述记录的从副本写 请求。

Description:
副本存储装置及副本存储方法 本申请要求于 2013 年 9 月 22 日提交中国专利局、 申请号为 201310432857. 6、发明名称为 "副本存储装置及副本存储方法" 的中国专利 申请的优先权, 其全部内容通过引用结合在本申请中。 技术领域 本发明实施例涉及计算机技术, 尤其涉及一种副本存储装置及副本存储方 法。 背景技术 分布式系统(distributed system) 是基于网络建立的软件系统。 如何更好地 利用每个分布式节点的性能, 合理设计节点间交互模式, 提高系统整体的读写 能力、 可用性与可扩展性, 并要求系统有一定的容灾能力, 一直是分布式系统 研究的热点。

在分布式系统中会对数据进行分片或者分区, 在考虑容灾的场景下, 需要 对数据片或数据区进行多副本备份, 例如, 客户端发送的写请求 (Master写请 求) 先被发送到主副本 (Master) , 然后, 主副本与从副本 (Slave) 进行数据 的同歩或异歩备份。 在现有技术的主、 从副本混合策略的节点 (Node) 中, 在 同一个节点上可以存储不同数据片的主副本和 从副本。

现有技术的分布式系统整体的读写能力不高、 资源消耗较大。 发明内容 本发明实施例提供一种副本存储装置及副本存 储方法, 以提高分布式系统 整体的写能力和读能力, 降低了分布式系统的资源消耗。

第一方面, 本发明实施例提供一种副本存储装置, 所述装置包括: 分发模块;

主副本空间, 所述主副本空间包括第一内存表和第一副本文 件; 所述第一 内存表, 用于存储所述主副本写请求所携带的记录, 并在所述第一内存表中所 有记录所占用的内存大小达到第一预设值时, 将所述第一内存表中所有记录存 储到所述第一副本文件中;

从副本空间, 所述从副本空间包括第二内存表和第二副本文 件; 所述第二 内存表, 用于存储所述从副本写请求所携带的记录, 并在所述第二内存表中所 有记录所占用的内存大小达到第二预设值时, 将所述第二内存表中所有记录存 储到所述第二副本文件中;

其中, 所述分发模块接收发送节点发送的写请求, 并判定所述写请求的类 型: 若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所述主 副本空间的第一内存表; 若判定所述写请求为从副本写请求, 则将所述从副本 写请求提交给所述从副本空间的第二内存表。

根据第一方面, 在第一方面的第一种可能的实现方式中, 所述主副本空间 的第一内存表的数目至少为一个; 和 /或, 所述从副本空间的第二内存表的数目 至少为一个。

根据第一方面的第一种可能的实现方式, 在第二种可能的实现方式中, 所 述主副本空间还包括快速选择模块; 所述快速选择模块, 用于接收所述分发模 块提交的所述主副本写请求, 根据所述主副本写请求所携带的记录的主键, 从 各所述第一内存表中确定用于存储所述主副本 写请求所携带的记录的目标第一 内存表, 并将所述主副本写请求提交到所述目标第一内 存表;

所述从副本空间还包括队列模块; 所述队列模块, 用于接收所述分发模块 提交的所述从副本写请求, 将所述从副本写请求插入队列, 当所述队列达到预 设的队列阈值时, 将所述队列中的所有从副本写请求提交到所述 第二内存表。

根据第一方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所 述队列模块, 还用于在将所述从副本写请求插入队列之后, 向所述发送节点发 送从副本写请求响应。

根据第一方面、 第一方面的第一种至第三种可能的实现方式, 在第四种可 能的实现方式中, 所述第一内存表, 还用于在存储所述主副本写请求所携带的 记录之后, 向预先设定的副本存储节点发送携带所述记录 的从副本写请求。

第二方面, 本发明实施例提供一种副本存储方法, 所述方法包括: 应用于副本存储装置, 其中, 所述副本存储装置包括分发模块、 主副本空 间和从副本空间;

所述主副本空间包括第一内存表和第一副本文 件; 所述第一内存表, 用于 存储所述主副本写请求所携带的记录, 并在所述第一内存表中所有记录所占用 的内存大小达到第一预设值时, 将所述第一内存表中所有记录存储到所述第一 副本文件中;

所述从副本空间包括第二内存表和第二副本文 件; 所述第二内存表, 用于 存储所述从副本写请求所携带的记录, 并在所述第二内存表中所有记录所占用 的内存大小达到第二预设值时, 将所述第二内存表中所有记录存储到所述第二 副本文件中;

所述副本存储方法包括:

所述分发模块接收发送节点发送的写请求, 并判定所述写请求的类型: 若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所述主 副本空间的第一内存表;

若判定所述写请求为从副本写请求, 则将所述从副本写请求提交给所述从 副本空间的第二内存表。

根据第二方面, 在第二方面的第一种可能的实现方式中, 所述主副本空间 的第一内存表的数目至少为一个; 和 /或, 所述从副本空间的第二内存表的数目 至少为一个。

根据第二方面的第一种可能的实现方式, 在第二种可能的实现方式中, 所 述主副本空间还包括快速选择模块; 所述从副本空间还包括队列模块;

所述将所述主副本写请求提交给所述主副本空 间的第一内存表, 包括: 所述分发模块将所述主副本写请求提交给所述 快速选择模块;

所述快速选择模块, 接收所述分发模块提交的所述主副本写请求, 根据所 述主副本写请求所携带的记录的主键, 从所述主副本空间的各所述第一内存表 中确定用于存储所述主副本写请求所携带的记 录的目标第一内存表, 并将所述 主副本写请求提交到所述目标第一内存表;

所述将所述从副本写请求提交给所述从副本空 间的第二内存表, 包括: 所述分发模块将所述主副本写请求提交给所述 队列模块;

所述队列模块, 接收所述分发模块提交的所述从副本写请求, 将所述从副 本写请求插入队列, 当所述队列达到预设的队列阈值时, 将所述队列中的所有 从副本写请求提交到所述第二内存表。

根据第二方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所 述队列模块接收所述分发模块提交的所述从副 本写请求, 并将所述从副本写请 求插入队列之后, 所述方法还包括: 所述队列模块向所述发送节点发送从副本写请 求响应。

根据第二方面、 第二方面的第一种至第三种可能的实现方式, 在第四种可 能的实现方式中, 所述第一内存表存储所述主副本写请求所携带 的记录之后, 所述方法还包括:

所述第一内存表向预先设定的副本存储节点发 送携带所述记录的从副本写 请求。

本发明实施例提供的副本存储装置及副本存储 方法, 通过为主副本和从副 本划分相互独立的主副本空间和从副本空间, 并以主副本空间和从副本空间为 界进行数据的读写等操作:通过对主副本写请 求和从副本写请求进行区别处理, 减少了写请求的处理时延, 提高了分布式系统的写能力; 通过使用非易失性存 储介质上的不同文件分别存储主、 从副本写请求所携带的记录, 使主副本和从 副本在存储上可以分离,减少了查询主副本记 录时需要查询的文件数量和大小, 提高了分布式系统的读能力, 同时也使得在主、 从副本范围 (range) 变更时, 减少了需要过滤的数据量, 降低了分布式系统的资源消耗。 附图说明 为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对实施 例或现有技术描述中所需要使用的附图作一简 单地介绍, 显而易见地, 下面描 述中的附图是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出 创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。

图 1为本发明实施例提供的副本存储装置的结构 意图;

图 2为本发明实施例提供的副本存储装置的另一 构示意图;

图 3为本发明实施例提供的副本存储装置的又一 构示意图;

图 4为本发明实施例提供的副本存储方法的流程 ;

图 5为本发明实施例提供的副本存储方法的另一 程图;

图 6为本发明实施例提供的副本存储方法的信令 程图。 具体实施方式 为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明 实施例中的附图, 对本发明实施例中的技术方案进行清楚、完整 地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于本发明中 的实施例, 本领域普通技术人员在没有作出创造性劳动前 提下所获得的所有其 他实施例, 都属于本发明保护的范围。

图 1为本发明实施例提供的副本存储装置的结构 意图。 如图 1所示, 本 实施例提供的副本存储装置 100, 包括: 分发模块 101、主副本空间 102及从副 本空间 103, 其中:

主副本空间 102,包括第一内存表 1021和第一副本文件 1022;所述第一内 存表 1021, 用于存储所述主副本写请求所携带的记录, 并在所述第一内存表 1021中所有记录所占用的内存大小达到第一预 值时,将所述第一内存表 1021 中所有记录存储到所述第一副本文件 1022中;

从副本空间 103,包括第二内存表 1031和第二副本文件 1032;所述第二内 存表 1031, 用于存储所述从副本写请求所携带的记录, 并在所述第二内存表 1031中所有记录所占用的内存大小达到第二预 值时,将所述第二内存表 1031 中所有记录存储到所述第二副本文件 1032中;

其中, 所述分发模块 101接收发送节点发送的写请求, 并判定所述写请求 的类型: 若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所 述主副本空间 102的第一内存表 1021 ; 若判定所述写请求为从副本写请求, 则 将所述从副本写请求提交给所述从副本空间 103的第二内存表 1031。

具体地, 副本存储装置 100可用于需要处理海量数据和业务的场景, 例如 分布式数据库、 分布式文件系统或分布式存储系统; 副本存储装置 100可以是 分布式系统中的一个节点或者节点上的功能实 体, 可以存储不同数据片的主副 本和从副本, 可以对主副本写请求和从副本写请求进行区别 处理, 并使用非易 失性存储介质上的不同文件分别存储主副本写 请求所携带的记录和从副本写请 求所携带的记录, 所述非易失性存储介质, 例如可以是硬盘、 磁阵等。 如图 1 所示, 副本存储装置 100 的存储空间被划分为主副本空间 102 和从副本空间 103,所述主副本空间 102负责处理所述主副本写请求并存储所述主副 本写请求 所携带的记录, 从副本空间 103负责处理所述从副本写请求并存储所述从副 本 写请求所携带的记录; 其中, 所述主副本空间 102和所述从副本空间 103相互 区别, 相互隔离, 例如两者通过目录、 文件名或文件属性等方式进行区别。 当 副本存储装置 100的分发模块 101接收到发送节点发送的写请求时, 首先判定 所述写请求的类型, 所述写请求的类型可以是主副本写请求或从副 本写请求: 若所述分发模块 101判定所述写请求为主副本写请求, 则将所述主副本写 请求提交给所述主副本空间 102的第一内存表 1021 ; 所述第一内存表 1021存 储所述主副本写请求所携带的记录;当所述第 一内存表 1021中存储的所有记录 所占用的内存大小达到第一预设值时,则将所 述第一内存表 1021中所有记录合 并转储到非易失性存储介质上的第一副本文件 1022中。

若所述分发模块 101判定所述写请求为从副本写请求, 则将所述从副本写 请求提交给所述从副本空间 103的第二内存表 1031 ; 所述第二内存表 1031存 储所述从副本写请求所携带的记录;当所述第 二内存表 1031中存储的所有记录 所占用的内存大小达到第二预设值时,则将所 述第二内存表 1031中所有记录合 并转储到非易失性存储介质上的第二副本文件 1032中。

本发明实施例提供的副本存储装置, 通过为主副本和从副本分别划分独立 的存储空间, 使用划分的主副本空间和从副本空间分别对主 副本写请求和从副 本写请求进行区别处理, 减少了写请求的处理时延, 提高了分布式系统的写能 力; 通过使用非易失性存储介质上的不同文件分别 存储主、 从副本写请求所携 带的记录, 使主副本和从副本在存储上可以分离, 减少了查询主副本记录时需 要查询的文件数量和大小, 提高了分布式系统的读能力, 同时也使得在主、 从 副本范围 (range) 变更时, 减少了需要过滤的数据量, 降低了分布式系统的资 源消耗。

图 2为本发明实施例提供的副本存储装置的另一 构示意图。 本实施例基 于图 1所示实施例来实现。 如图 2所示, 本实施例提供的副本存储装置 200, 也包括: 分发模块 101、 主副本空间 102及从副本空间 103。

可选的, 所述主副本空间 102的第一内存表 1021的数目至少为一个; 和 / 或, 所述从副本空间 103的第二内存表 1031的数目至少为一个。

可选的, 所述主副本空间 102还包括快速选择模块 1023 ; 所述快速选择模 块 1023, 用于接收所述分发模块 101提交的所述主副本写请求, 根据所述主副 本写请求所携带的记录的主键,从各所述第一 内存表 1021中确定用于存储所述 主副本写请求所携带的记录的目标第一内存表 , 并将所述主副本写请求提交到 所述目标第一内存表;

所述从副本空间 103还包括队列模块 1033 ;所述队列模块 1033,用于接收 所述分发模块 101提交的所述从副本写请求, 将所述从副本写请求插入队列, 当所述队列达到预设的队列阈值时, 将所述队列中的所有从副本写请求提交到 所述第二内存表 1031。 进一歩地, 所述队列模块 1033, 还用于在将所述从副本写请求插入队列之 后, 向所述发送节点发送从副本写请求响应。

可选的, 所述第一内存表 1021, 还用于在存储所述主副本写请求所携带的 记录之后, 向预先设定的副本存储节点发送携带所述记录 的从副本写请求。

具体地, 在一种可选的实现方式中, 一个节点中同时可以存在一个或一个 以上所述第一内存表 1021 ; 主副本空间 102的快速选择模块 1023接收到所述 分发模块 101提交的所述主副本写请求后, 根据所述主副本写请求所携带的记 录的主键计算对应值, 并根据所述对应值的对应区间从各所述第一内 存表 1021 中确定用于存储所述主副本写请求所携带的记 录的目标第一内存表, 并将所述 主副本写请求提交到所述目标第一内存表, 其中, 计算对应值的方式, 例如可 以是哈希、 前缀等方式。 实际中, 如果需要写入日志 Gog) 文件, 例如为了实 现容灾等功能,则所述快速选择模块 1023在将所述主副本写请求提交到所述目 标第一内存表之前,先将所述主副本写请求写 入 log文件。所述第一内存表 1021 接收并处理所述快速选择模块 1023提交的所述主副本写请求,存储所述主副 写请求所携带的记录;所述第一内存表 1021在存储所述主副本写请求所携带的 记录之后, 根据路由表向预先设定的副本存储节点发送携 带所述记录的从副本 写请求: 当写从副本的模式为同歩模式时, 等待所述副本存储节点返回的从副 本写请求响应, 并在接收到所述从副本写请求响应后, 向所述发送节点发送主 副本写请求响应; 当写从副本的模式为异歩模式时, 不等待所述副本存储节点 返回的从副本写请求响应, 而是在向所述副本存储节点发送所述从副本写 请求 后直接向所述发送节点发送主副本写请求响应 。

在另一种可选的实现方式中, 一个节点中同时可以存在一个或一个以上所 述第二内存表 1031。从副本空间 103的队列模块 1033接收到所述分发模块 101 提交的所述从副本写请求后, 判断队列是否达到预设的队列阈值 (例如时间或 队列大小): 若所述队列未达到所述队列阈值, 则队列模块 1033将所述从副本 写请求插入队列, 然后向所述发送节点发送从副本写请求响应; 若所述队列达 到所述队列阈值, 则队列模块 1033将所述队列切换为空的队列,然后将所述 副本写请求插入所述空的队列, 并向所述发送节点发送从副本写请求响应, 同 时, 将所述达到队列阈值的队列中的所有从副本写 请求批量提交 (合并转储) 到所述第二内存表 1031。 实际中, 如果需要写入 log文件, 例如为了实现容灾 等功能,则所述队列模块 1033在将所述从副本写请求提交到所述目标第 内存 表 1031之前, 先将所述从副本写请求写入 log文件。

本发明实施例提供的副本存储装置, 通过为主副本空间分配多个第一内存 表, 根据主副本写请求所携带的记录的键值从各所 述第一内存表中确定目标第 一内存表, 将主副本写请求提交到确定目标第一内存表, 降低了主副本写请求 的写入时延; 通过在将接收到的从副本写请求插入队列后, 就向发送节点返回 从副本写请求响应, 在队列达到队列阈值时将队列中的所有从副本 写请求提交 到从副本空间的第二内存表, 降低了从副本写请求的写入时延; 从而提高了分 布式系统的写能力。

图 3为本发明实施例提供的副本存储装置的又一 构示意图。 本实施例基 于图 2所示实施例来实现。 如图 3所示, 本实施例提供的副本存储装置 300, 也包括: 分发模块 101、 主副本空间 102及从副本空间 103。

可选的, 所述副本存储装置 300还包括文件管理模块 301 ; 所述文件管理 模块 301用于接收内存表提交的存储请求, 判断存储请求中携带的指示信息: 若确定该存储请求为所述第一内存表 1021提交的存储请求,则将所述第一内存 表 1021中所有记录合并转储到非易失性存储介质 的第一副本文件 1022中; 若确定该存储请求为所述第二内存表 1031提交, 则将所述第二内存表 1031中 所有记录合并转储到非易失性存储介质上的第 二副本文件 1032中。

具体地,当所述第一内存表 1021中存储的所有记录所占用的内存大小达到 第一预设值时, 则向所述文件管理模块 301提交存储请求; 所述文件管理模块 301判断确定该存储请求为所述第一内存表 1021提交的存储请求时, 将所述第 一内存表 1021 中所有记录合并转储到非易失性存储介质上的 第一副本文件 1022中。

当所述第二内存表 1031 中存储的所有记录所占用的内存大小达到第二 预 设值时, 则向所述文件管理模块 301提交存储请求; 所述文件管理模块 301判 断确定该存储请求为所述第二内存表 1031提交的存储请求时,将所述第一内存 表 1031中所有记录合并转储到非易失性存储介质 的第一副本文件 1032中。

进一歩, 所述文件管理模块 301, 还用于处理主副本空间及从副本空间的 文件合并请求。 实际中, 所述文件管理模块 301可以包括主副本空间文件请求 队列、 从副本空间文件请求队列及请求调度单元: 主副本文件合并请求提交到 主副本空间文件请求队列, 从副本文件合并请求提交到从副本空间文件请 求队 列,请求调度单元根据优先级等条件来触发执 行文件合并请求。请求调度算法, 例如可以是: 每次请求调度单元都先查询主副本空间文件请 求队列 (具有高优 先级) , 在其无请求的条件下, 才调度从副本空间文件请求队列的文件合并请 求, 其中, 主副本空间的文件操作优先级大于从副本空间 。

图 4为本发明实施例提供的副本存储方法的流程 。 所述方法可以应用于 副本存储装置, 其中, 所述副本存储装置包括分发模块、 主副本空间和从副本 空间; 所述主副本空间包括第一内存表和第一副本文 件; 所述第一内存表, 用 于存储所述主副本写请求所携带的记录, 并在所述第一内存表中所有记录所占 用的内存大小达到第一预设值时, 将所述第一内存表中所有记录存储到所述第 一副本文件中; 所述从副本空间包括第二内存表和第二副本文 件; 所述第二内 存表, 用于存储所述从副本写请求所携带的记录, 并在所述第二内存表中所有 记录所占用的内存大小达到第二预设值时, 将所述第二内存表中所有记录存储 到所述第二副本文件中。 所述方法可用于需要处理海量数据和业务的场 景, 例 如分布式数据库、 分布式文件系统或分布式存储系统。 如图 4所示, 所述方法 包括:

401、 分发模块接收发送节点发送的写请求。

402、 分发模块判定所述写请求的类型。

403、若判定所述写请求为主副本写请求, 则将所述主副本写请求提交给所 述主副本空间的第一内存表。

404、若判定所述写请求为从副本写请求, 则将所述从副本写请求提交给所 述从副本空间的第二内存表。

可选的, 所述主副本空间的第一内存表的数目至少为一 个; 和 /或, 所述从 副本空间的第二内存表的数目至少为一个。

进一歩, 所述主副本空间还包括快速选择模块; 所述将所述主副本写请求 提交给所述主副本空间的第一内存表, 包括: 所述分发模块将所述主副本写请 求提交给所述快速选择模块; 所述快速选择模块, 接收所述分发模块提交的所 述主副本写请求, 根据所述主副本写请求所携带的记录的主键, 从所述主副本 空间的各所述第一内存表中确定用于存储所述 主副本写请求所携带的记录的目 标第一内存表, 并将所述主副本写请求提交到所述目标第一内 存表。

所述从副本空间还包括队列模块; 所述将所述从副本写请求提交给所述从 副本空间的第二内存表, 包括: 所述分发模块将所述主副本写请求提交给所述 队列模块; 所述队列模块, 接收所述分发模块提交的所述从副本写请求, 将所 述从副本写请求插入队列, 当所述队列达到预设的队列阈值时, 将所述队列中 的所有从副本写请求提交到所述第二内存表。

进一歩, 所述队列模块接收所述分发模块提交的所述从 副本写请求, 并将 所述从副本写请求插入队列之后, 所述方法还包括: 所述队列模块向所述发送 节点发送从副本写请求响应。

可选的, 所述第一内存表存储所述主副本写请求所携带 的记录之后, 所述 方法还包括: 所述第一内存表向预先设定的副本存储节点发 送携带所述记录的 从副本写请求。

本发明实施例提供的副本存储方法, 通过为主副本和从副本分别划分独立 的存储空间, 使用划分的主副本空间和从副本空间分别对主 副本写请求和从副 本写请求进行区别处理, 减少了写请求的处理时延, 提高了分布式系统的写能 力; 通过使用非易失性存储介质上的不同文件分别 存储主、 从副本写请求所携 带的记录, 使主副本和从副本在存储上可以分离, 减少了查询主副本记录时需 要查询的文件数量和大小, 提高了分布式系统的读能力, 同时也使得在主、 从 副本范围变更时, 减少了需要过滤的数据量, 降低了分布式系统的资源消耗。

图 5为本发明实施例提供的副本存储方法的另一 程图。 本实施例基于图 4所示实施例实现, 执行主体为副本存储装置。 如图 5所示, 所述方法包括:

501、 分发模块接收发送节点发送的写请求。

502、判定写请求的类型: 若判定所述写请求的类型为主副本写请求, 则转 到歩骤 503 ; 若判定写请求为从副本写请求, 则转到歩骤 506。

503、 根据主副本写请求所携带的记录的主键计算对 应值。

504、 根据对应值的对应区间从各所述第一内存表中 确定目标第一内存表, 并将所述主副本写请求提交到目标第一内存表 。

505、根据路由表向预先设定的副本存储节点发 送携带所述记录的从副本写 请求; 当写从副本的模式为同歩模式时, 等待所述副本存储节点返回的从副本 写请求响应 (异歩模式无需等待) ; 转到歩骤 509。

506、 判定队列是否达到队列阈值: 若是, 则转到歩骤 507 ; 若否, 则转到 歩骤 508。

507、 切换队列。

508、将从副本写请求插入队列(将达到队列阈 值的队列中的所有从副本写 请求批量提交到第二内存表) 。 509、 向发送节点发送主副本写请求响应。

图 6为本发明实施例提供的副本存储方法的信令 程图。 所述方法由发送 节点、 第一副本存储节点和第二副本存储节点配合执 行。 其中, 所述第一副本 存储节点和第二副本存储节点可以采用本发明 实施例所提供的任意副本存储装 置。 如图 6所示, 所述方法包括:

601、 发送节点向第一副本存储节点发送主副本写请 求。

602、第一副本存储节点接收所述写请求, 并判定所述写请求的类型为主副 本写请求; 根据所述主副本写请求所携带的记录的主键, 从第一副本存储节点 的主副本空间的各第一内存表中确定用于存储 所述主副本写请求所携带的记录 的目标第一内存表, 并将所述主副本写请求提交到所述目标第一内 存表。

603、第一副本存储节点向预先设定的第二副本 存储节点发送携带所述记录 的从副本写请求。

604、第二副本存储节点接收所述写请求,判定 所述写请求的类型为从副本 写请求; 判断队列是否达到预设的队列阈值: 若未达到所述队列阈值, 则将所 述从副本写请求插入所述队列; 若达到所述队列阈值则将所述队列切换为空的 队列, 然后将所述从副本写请求插入所述空的队列。

605、第二副本存储节点向第一副本存储节点发 送从副本写请求响应。同时, 将所述达到队列阈值的队列中的所有从副本写 请求批量提交 (合并转储) 到所 述第二内存表。

606、 第一副本存储节点向发送节点发送主副本写请 求响应。

在本发明所提供的几个实施例中, 应该理解到, 所揭露的装置和方法, 可 以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示意性的, 例 如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可以有另外的划 分方式, 例如多个单元或组件可以结合或者可以集成到 另一个系统, 或一些特 征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间的耦合或直接耦合 或通信连接可以是通过一些接口, 装置或单元的间接耦合或通信连接, 可以是 电性, 机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可 以不是物理上分开的, 作为 单元显示的部件可以是或者也可以不是物理单 元, 即可以位于一个地方, 或者 也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。 另外, 在本发明各个实施例中的各功能单元可以集成 在一个处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单元 中。 上述集成的单元既可以采用硬件的形式实现, 也可以采用硬件加软件功能 单元的形式实现。

上述以软件功能单元的形式实现的集成的单元 , 可以存储在一个计算机可 读取存储介质中。 上述软件功能单元存储在一个存储介质中, 包括若干指令用 以使得一台计算机设备 (可以是个人计算机, 服务器, 或者网络设备等) 或处 理器 (processor) 执行本发明各个实施例所述方法的部分歩骤。 而前述的存储 介质包括: U盘、 移动硬盘、 只读存储器(Read-Only Memory, ROM) 、 随机 存取存储器(Random Access Memory, RAM) 、 磁碟或者光盘等各种可以存储 程序代码的介质。

本领域技术人员可以清楚地了解到, 为描述的方便和简洁, 仅以上述各功 能模块的划分进行举例说明, 实际应用中, 可以根据需要而将上述功能分配由 不同的功能模块完成, 即将装置的内部结构划分成不同的功能模块, 以完成以 上描述的全部或者部分功能。 上述描述的装置的具体工作过程, 可以参考前述 方法实施例中的对应过程, 在此不再赘述。

最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对其 限制; 尽管参照前述各实施例对本发明进行了详细的 说明, 本领域的普通技术 人员应当理解: 其依然可以对前述各实施例所记载的技术方案 进行修改, 或者 对其中部分或者全部技术特征进行等同替换; 而这些修改或者替换, 并不使相 应技术方案的本质脱离本发明各实施例技术方 案的范围。