一种数据合并方法和设备的制造方法_2

文档序号:9687195阅读:来源:国知局
的结构示意图。
【具体实施方式】
[0035]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0036]实施例一
[0037]针对现有技术中存在的问题,本申请实施例一提供一种数据合并方法,以图1为本申请实施例的应用场景示意图,该方法应用于包括数据平台、数据更新服务器和多个数据存储服务器的系统中。在使用LSM Tree的数据存储模型时,可以将数据划分为内存和磁盘多级。对于数据的写操作,并不将数据直接写入到磁盘上,而是将数据写入内存,因而具备较高的写入性能。为了释放内存或者提高读性能,通过合并操作将内存中的数据持久化到磁盘文件(或者将多个磁盘文件进行合并)。在图1所示的应用场景下,数据更新服务器作为数据存储模型的内存,数据存储服务器作为数据存储模型的磁盘。
[0038]其中,数据存储服务器具体可以为数据存储模型的数据副本存储服务器。
[0039]在基于LSM Tree的数据存储模型中,将数据划分成读写分离的两个部分,一部分为基准数据,另一部分为增量数据。其中,各数据存储服务器用于存储基准数据,基准数据为按照一定的规则划分的不存在交叉的许多小的数据分片,每个数据分片在逻辑上称为Tablet (小块)。数据更新服务器用于存储增量数据,且增量数据是整体以Btree (平衡二叉树)的形式存放在数据更新服务器中。进一步的,基准数据的Tablet存放在数据存储服务器的磁盘上,每个Tablet会保存多个副本在不同的数据存储服务器的磁盘上。其中,一个集群管理多个数据存储服务器,按照数据存储服务器的物理位置将多个数据存储服务器划分为多个分组(Group),并通过负载均衡保证每个分组包含所有Tablet数据的全集,同时也只包含了所有Tablet的所有副本集合的一个子集。如图2所示,集群共有6个Tablet (Tablet A_F),每个Tablet包含两份副本,图2中的4个数据存储服务器构成两个分组(Group A 和 Group B)。
[0040]基于数据存储服务器以及数据更新服务器的存储结构,多个数据存储服务器以及数据更新服务器构成了 LMS Tree的多级存储结构,写操作只修改数据更新服务器。当数据更新服务器内写入的增量数据的数据量达到预设阈值(预设阈值可以根据实际经验任意设置,如数据更新服务器存储空间的80% )时,则触发合并操作,需要将数据更新服务器内的增量数据合并到多个数据存储服务器,且合并到数据存储服务器的增量数据变成新的基准数据。
[0041]为了方便描述,本申请实施例中,以包括数据存储服务器I和数据存储服务器2,且Group A内只包含数据存储服务器1,该数据存储服务器I需要存储数据更新服务器内的所有数据,Group B内只包含数据存储服务器2,该数据存储服务器2需要存储数据更新服务器内的所有数据为例进行说明。
[0042]现有技术中,如图1所示,在需要将数据更新服务器内的数据合并到多个数据存储服务器时,需要同时将数据更新服务器内的数据合并到多个数据存储服务器,此时,各数据存储服务器均需要执行数据合并操作,且需要对外部读写流量进行处理。执行合并操作会占用系统大量的1资源,直接影响系统正常读写操作的吞吐和响应时间,导致系统读写服务发生强烈抖动,这种抖动在高并发情况下对延时的影响非常大,导致系统的整体稳定性很差。
[0043]为了有效降低合并对读写服务的影响,本申请实施例中,采用不同副本的错峰合并方式,控制不同分组(即不同的数据存储服务器,如数据存储服务器I和数据存储服务器2)交错进行合并,而不是并发同时进行数据合并,每个数据存储服务器在开始数据合并的准备阶段,会将其上的外部服务流量迁移到未进行合并的数据存储服务器上,通过这种方式将系统内部的合并操作和外部的读写服务进行物理上的隔离,从而保证了相互不产生影响。
[0044]基于上述应用场景,如图3所示,在需要将数据更新服务器内的数据合并到多个数据存储服务器时,该数据合并方法具体可以包括以下步骤:
[0045]步骤301,数据平台确定当前需要进行数据合并的数据存储服务器。
[0046]本申请实施例中,在确定当前需要进行数据合并的数据存储服务器的过程中,数据平台判断当前是否存在没有合并数据更新服务器内数据的数据存储服务器;如果存在,则数据平台从没有合并数据更新服务器内数据的数据存储服务器中选择一个当前需要进行数据合并的数据存储服务器;如果不存在,则数据平台从数据更新服务器内删除已经合并到数据存储服务器的数据。
[0047]例如,在需要将数据更新服务器内的数据合并到数据存储服务器I和数据存储服务器2时,数据平台判断当前存在没有合并数据更新服务器内数据的数据存储服务器I和数据存储服务器2,选择一个当前需要进行数据合并的数据存储服务器I。在数据被合并到数据存储服务器I完成之后,数据平台判断当前存在没有合并数据更新服务器内数据的数据存储服务器2,选择一个当前需要进行数据合并的数据存储服务器2。在数据被合并到数据存储服务器2完成之后,数据平台判断当前不存在没有合并数据更新服务器内数据的数据存储服务器,从数据更新服务器内删除已经合并到数据存储服务器的数据。
[0048]步骤302,数据平台将数据存储服务器的外部读写流量切换到其它数据存储服务器。例如,在当前需要进行数据合并的数据存储服务器为数据存储服务器I时,则数据平台将数据存储服务器I的外部读写流量切换到数据存储服务器2。在当前需要进行数据合并的数据存储服务器为数据存储服务器2时,则数据平台将数据存储服务器2的外部读写流量切换到数据存储服务器I。
[0049]本申请实施例中,数据平台将数据存储服务器的外部读写流量切换到其它数据存储服务器,具体包括:数据平台生成流量控制表,在该流量控制表中,该数据存储服务器的流量比重为O ;以使客户端从该数据平台读取流量控制表,并在发送外部读写流量时,按照该流量控制表中记录的数据存储服务器的流量比重向数据存储服务器发送外部读写流量。
[0050]进一步的,在一种具体实现方式中,数据平台将数据存储服务器的外部读写流量切换到其它数据存储服务器的过程中,切换过程按照先慢后快的原则,逐步将数据存储服务器的外部读写流量切换到其它数据存储服务器。
[0051]例如,数据平台将数据存储服务器I的外部读写流量切换到数据存储服务器2之前,数据存储服务器I的流量比重为50%,数据存储服务器2的流量比重为50%,且数据平台生成的流量控制表中,数据存储服务器I的流量比重为50%,数据存储服务器2的流量比重为50%,此时,客户端从数据平台读取流量控制表,对于客户端发送的外部读写流量,有50%的外部读写流量发送给数据存储服务器1,有50%的外部读写流量发送给数据存储服务器2。数据平台将数据存储服务器I的外部读写流量切换到数据存储服务器2的过程中,数据平台第I分钟生成的流量控制表中,数据存储服务器I的流量比重为45%,数据存储服务器2的流量比重为55%,此时,客户端从数据平台读取流量控制表,对于客户端发送的外部读写流量,有45 %的外部读写流量发送给数据存储服务器I,有55 %的外部读写流量发送给数据存储服务器2。数据平台第2分钟生成的流量控制表中,数据存储服务器I的流量比重为30%,数据存储服务器2的流量比重为70%,此时,客户端从数据平台读取流量控制表,对于客户端发送的外部读写流量,有30 %的外部读写流量发送给数据存储服务器1,有70%的外部读写流量发送给数据存储服务器2。数据平台第3分钟生成的流量控制表中,数据存储服务器I的流量比重为0%,数据存储服务器2的流量比重为100%,此时,客户端从数据平台读取流量控制表,对于客户端发送的外部读写流量,有O %的外部读写流量发送给数据存储服务器1,有100%的外部读写流量发送给数据存储服务器2,即客户端不再向数据存储服务器I发送外部读写流量。基于此,数据平台将数据存储服务器I的外部读写流量全部切换到数据存储服务器2。
[0052]步骤303,在外部读写流量被切换到其它数据存储服务器之后,数据平台将数据更新服务器内的数据合并到数据存储服务器中。例如,在外部读写流量被切换到数据存储服务器2之后,数据平台将数据更新服务器内的数据合并到数据存储服务器I中。又例如,在外部读写流量被切换到数据存储服务器I之后,数据平台将数据更新服务器内的数据合并到数据存储服务器2中。
[0053]步骤304,在数据被合并到数据存储服务器(如数据存储服务器I)完成之后,数据平台将数据存储服务器的已经切换到其它数据存储服务器的外部读写流量恢复到该数据存储服务器。
[0054]本步骤304之后,继续执行步骤301,确定下一个需要进行数据合并的数据存储服务器,以此类推,一直到不存在没有合并数据更新服务器内数据的数据存储服务器,则结束数据合并流程,该过程在此不再重复赘述。
[0055]本申请实施例中,数据平台将数据存储服务器的已经切换到其它数据存储服务器的外部读写流量恢复到数据存储服务器的过程,具体包括但不限于如下方式:数据平台生成流量控制表,在该流量控制表中,该数据存储服务器的流量比重为特定比重数值,该特定比重数值是数据平台未对该数据存储服务器进行数据合并时,该数据存
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1