数据的写入方法及写入装置与流程

文档序号:12068233阅读:504来源:国知局
数据的写入方法及写入装置与流程

本申请涉及计算机技术领域,尤其涉及一种数据的写入方法及写入装置。



背景技术:

云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。云存储的高可用是一个非常非常重要的指标,因为往往影响着上千万用户,其最重要的是满足数据不丢和数据服务不中断两点要求。

然而,现有技术的云存储往往不能同时满足两点要求。参见图1所示的云存储中数据的备份模式示意图,图1中,在正常模式下,由第一存储服务端为客户端提供数据服务(如,数据的写入/读取),第一存储单元与第一存储服务端相对应,用于对客户端向第一存储服务端写入的数据进行存储,其也可以称为本地主机房的存储单元;第二存储单元为同机房的存储单元,用于对写入第一存储单元的数据进行备份;第三存储单元与第二存储服务端相对应,其为不在主机房的异地存储单元,第三存储单元的数据是通过异步方式写入的,也即现有技术中,对数据的备份模式是同机房备份以及异步异地备份。当第一存储单元故障时,若根据第二存储单元的数据,恢复第一存储单元中的数据,往往需要耗费很长的时间(如,几小时或者几天),也即不能满足数据服务不中断的要求;而通过第三存储单元为客户端提供数据服务时,由于该两个存储单元的数据存在时间差,也即第三存储单元提供的数据 存在数据丢失的可能,因此不能满足数据不丢的要求。

因此,需要提供一种数据的写入方法,以同时满足数据不丢和数据服务不中断两点要求。



技术实现要素:

本申请实施例提供了一种数据的写入方法及写入装置,可以实现在不增大客户端访问时延的情况下,同时满足数据不丢和数据服务不中断两点要求。

第一方面,提供了一种数据的写入方法,该写入方法包括:

客户端接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的数据构成;

将所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量;

将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。

第二方面,提供了一种数据的写入装置,该写入装置包括:接收单元、分装单元和写入单元;

所述接收单元,用于接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的数据构成;

所述分装单元,用于将所述接收单元接收的所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量;

所述写入单元,用于将所述分装单元分装的所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。

本申请提供的数据的写入方法及写入装置,客户端接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的文件数 据构成;将所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量;将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。由此可以看出,本申请采用了数据的同步异地备份模式,也即本地存储服务端与异地存储服务端的文件数据不存在时间差,以便在本地存储服务端故障时,直接通过异地存储服务端对客户端提供数据服务,从而可以同时满足数据不丢和数据服务不中断两点要求;此外,通过增大传输的数据块的大小,可以大大减小客户端与存储服务端之间交互的次数,从而可以大幅度地减小客户端的访问时延。

附图说明

图1为现有技术的云存储中数据的备份模式示意图;

图2为本申请一种实施例提供的数据的写入方法流程图;

图3为本申请提供的数据块的划分示意图;

图4为本申请提供的数据的写入方法示意图;

图5为本申请另一种实施例提供的数据的写入装置示意图。

具体实施方式

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

为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。

本申请实施例提供的数据的写入方法及写入装置,适用于云存储中客户 端向存储服务端写入数据的场景,如,可以适用于阿里云的开放存储服务(Open Storage Service,OSS)中阿里云客户端向阿里云存储服务端写入数据的场景。此处,阿里云客户端可以为阿里云手机客户端,或者也可以为阿里云个人计算机(Personal Computer,PC)客户端;而写入的数据则可以为任一组/串有序的数据,如,文件数据流。在本申请中,以写入的数据为文件数据流为例说明,其它有序数据的写入方法与文件数据流的写入方法类似。

本申请中的存储服务端可以包括两种类型:本地存储服务端和异地存储服务端,其中,异地存储服务端的个数可以为多个,且多个异地存储服务端可以分别部署在不同的地方,如,在存储服务端为阿里云存储服务端时,则多个异地存储服务端可以分别部署在“青岛”、“深圳”等城市。此外,上述本地存储服务端或者异地存储服务端均可以包括存储单元,该存储单元可以为数据库,或者也可以为分布式文件系统等存储架构。具体地,客户端可以将文件数据流同步写入到本地存储服务端的存储单元和异地存储服务端的存储单元,以便在本地存储服务端故障时,直接通过异地存储服务端对客户端提供数据服务,从而可以同时满足数据不丢和数据服务不中断两点要求。

然而上述客户端将文件数据流同步写入本地存储服务端和异地存储服务端的方法,也即本申请提供的高容灾级的同步异地数据备份模式,相比于异步异地备份模式,往往会大大增加客户端的访问时延,从而严重影响用户的体验。特别是在写入的文件数据流比较大(如,兆级别以上文件)时,访问文件本身就会消耗比较大的时间(一般为几百毫秒到几分钟),而客户端的访问速度只能达到M/s,如果再对数据进行同步异地数据备份,那客户端的访问时延会严重受到影响。具体时延的增长幅度根据客户端与异地存储服务端的距离而定,一般是几倍到数量级的增长幅度。举例来说,假设客户端待写入的文件数据流为一个10M的照片,如果客户端只将该文件数据流写入本地存储服务端,则需要10秒,如果要同步写入本地存储服务端和异地存储服务端,则可能需要20秒甚至几分钟级别。

上述客户端的访问时延可以参考目前支付宝异地部署(支付宝客户端在深圳,支付宝服务端在杭州)时跨城一笔支付的时延,而实际文件的数据流大小是一笔付款的几个数量级。比如完成一笔付款支付宝客户端需要访问支付宝服务端100次以上,杭州-深圳每次网络访问时延在30ms,这样需要对支付客户端有100*30ms=3秒的时延影响,同时支付服务端提供的性能容量也会数量级别下降。

由于客户端的访问时延主要取决于异地网络的交互上,因此为了解决上述客户端访问时延大的问题,本申请客户端在将文件数据流同步写入本地存储服务端和异地存储服务端时,增大单次在客户端与存储服务端之间传输的数据块的大小,以此来减小客户端与存储服务端之间交互的次数。其中,上述增大单次在客户端与存储服务端之间传输的数据块的大小的主要原理是:文件传输协议的文件传输只要保证文件数据流的顺序即可,无需客户端与存储服务端之间高频交互。

以下将通过实施例的方式介绍本申请如何在不增大客户端访问时延的情况下,来同时满足数据不丢和数据服务不中断两点要求。

图2为本申请一种实施例提供的数据的写入方法流程图。所述方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,如图2所示,所述方法具体包括:

步骤210,客户端接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的数据构成。

具体地,可以是由客户端的应用程序接收写文件指令。此处,客户端可以是阿里云手机客户端,或者也可以为阿里云PC客户端;写文件指令可以是由用户点击客户端的保存文件按钮触发。此外,上述待写入的文件数据流可以为一部对账文件、一个个人视频或者一组/串有序的数据。

可选地,客户端的应用程序在接收到写文件指令之后,可以启动应用程序的至少一个线程。

步骤220,将所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量。

需要说明的是,文件传输协议(如,超文本传输协议(HTTP,Hyper Text Transfer Protocol))传输的文件数据流与其它业务或者数据库访问的远程过程调用协议(Remote Procedure Call Protocol,RPC)不一样,其只要保证文件数据流的顺序即可,无需客户端与存储服务端之间来回高频交互,因此,在固定网络带宽下,可以增大文件传输协议传输的数据块的字节数量,也即可以重新设置数据块的字节数量,在一个例子中,可以将数据块的字节数量重新设置为文件传输协议默认传输的数据块的字节数量的N倍,N为自然数。

可以理解的是,通过增大文件传输协议传输的数据块的字节数量,就可以增大单次在客户端与存储服务端之间传输的数据块的大小,以此来减小客户端与存储服务端之间交互的次数。而由于本申请中客户端同时向本地存储服务端和异地存储服务端写入文件数据流时,客户端的访问时延主要取决于异地网络交互上,因此在交互次数较小的情况下,可以很好的避免客户端的访问时延问题。

举例来说,在OSS中,http协议默认传输的数据块的字节数量为1K-8K,以4K为例来说,在待写入的文件数据流的大小为20M(即20000K)时,则可以将文件数据流分装成20000/4=5000个默认传输的数据块,也即写入20M的文件数据流需要客户端与存储服务端之间交互5000次,在异地存储服务端距离较远的情况下,客户端的访问时延是相当大的。而在将数据块的字节数量重新设置为默认传输的数据块的字节数量的32倍,即指定大小的数据块的字节数量为32*4=128K时,则在待写入的文件数据流的大小为20M时,可以将文件数据流划分为20000/128=160个指定大小的数据块,也即写入20M的文件数据流只需要客户端与存储服务端之间交互160次,这可以大大减小客户 端的访问时延。

需要说明的是,虽然上述例子以指定大小的数据块的字节数量为128K进行了说明,在实际应用中,也可以将指定大小的数据块的字节数量设置为其它值。然而,由于数据块设置过大会受到服务端的硬件设备缓冲,而设置过小会影响网络时延等限制,因此,可以结合客户端与异地存储服务端的异地距离的时延大小、网络带宽以及硬件设备等进行设置,优选地,可以将数据块设置为32K-1024K之间的任一值。

回到步骤220中,当启动至少一个线程时,则可以由至少一个线程完成上述分装至少一个指定大小的数据块的步骤。

参见图3所示的本申请提供的数据块的划分示意图,图3中,301表示网络时延,比如,在客户端与异地存储服务端之间的距离为1000公里时,这个网络时延可以为30ms;每个302表示分装成的一个指定大小的数据块,在网络中传输时,该指定大小的数据块也可以理解为数据包;多个302组合起来就是一个文件数据流,这个文件数据流中的数据是有序的。

步骤230,将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。

参见图4所示的本申请提供的数据的写入方法示意图,图4中,客户端可以同步将文件数据流写入本地存储服务端和异地存储服务端。具体地,当启动一个线程时,则该一个线程按照先后顺序将至少一个指定大小的数据块写入本地存储服务端和异地存储服务端;而当启动两个线程时,则由两个线程同时将文件数据流写入本地存储服务端和异地存储服务端,由此,可以实现高容灾级的数据的同步异地备份模式。

图4中,第一存储单元是与本地存储服务端对应的存储单元,该第一存储单元可以为数据库,也可以为分布式文件系统等其它存储架构,即客户端可以将文件数据流写入本地存储服务端的数据库或者分布式文件系统中;第二存储单元是与异地存储服务端对应的存储单元,该第二存储单元可以为数 据库,也可以为分布式文件系统等其它存储架构,即客户端可以将文件数据流写入异地存储服务端的数据库或者分布式文件系统中。

可以理解的是,当图4中包括多个异地存储服务端时,则可以启动多个线程,多个线程可以向本地存储服务端和多个异地存储服务端写入文件数据流,其中,多个线程写入文件数据流的方法与两个线程将文件数据流写入两个存储服务端(一个本地存储服务端和一个异地存储服务端)的方法类似,在此不复赘述。

需要说明的是,客户端通过将文件数据流同步写入本地存储服务端和异地存储服务端,也即通过数据的同步异地备份模式,就可以实现数据的高容灾级备份,如在出现机房级别故障(如,硬件故障)或者断网时,就可以通过异地存储服务端继续为客户端提供数据服务,从而可以同时满足数据不丢和数据服务不中断两点要求。

此外,本申请通过增大单次在客户端与存储服务端之间传输的数据块的大小,可以极大地减小客户端的访问时延,其具体减小的幅度可通过如下例子说明。

在网络带宽为20M时,假设写本地存储服务端的网络时延为0.2ms,写异地存储服务端的网络时延(如,图3中的301)为30ms;在文件传输协议默认传输的数据块的字节数量为4K时,则客户端单次向本地存储服务端写入数据的时延为4K/20M+0.2ms=0.4ms;而客户端单次向异地存储服务端写入数据的时延为:4K/20M+30ms=30.2ms;当分别写入200K、2000K以及20000K的数据时,客户端的访问时延如表1所示:

表1

从表1中可以看出,随着文件数据流的增大,客户端的访问时延也在逐渐增大,当文件数据流的大小为20M时,则客户端的访问时延变为15.3s,而这个时间可能是用户无法接受的;当然,在实际应用中,随着客户端与存储服务端之间网络带宽的增大,客户端的访问时延也会相应的降低,特别是在客户端与存储服务端之间的距离比较小(如,几十米)时,客户端的访问时延主要取决于网络带宽,本申请主要针对在固定网络带宽的情况下,降低客户端的访问时延进行说明。

为了降低客户端的访问时延,本申请对传输的数据块的字节数量进行调整,如在将数据块的字节数量增大至128K时,则客户端单次向本地存储服务端写入数据的时延为128K/20M+0.2ms=6.6ms;而客户端单次向异地存储服务端写入数据的时延为:128/20M+30ms=36.4ms;当分别写入200K、2000K以及20000K的数据时,客户端的访问时延如表2所示:

表2

综上,从表2中可以看出,在固定网络带宽的情况下,当将数据块的字节数量增大至128K时,客户端的访问时延只需要6.9s,相比于单次传输的数据块的字节数量为4K时客户端的访问时延15.3s,大大降低了客户端的访问时延,从而可以提升用户的体验。

本申请提供的数据的写入方法,客户端接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的文件数据构成;将所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量; 将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。由此,可以实现在不增大客户端访问时延的情况下,同时满足数据不丢和数据服务不中断两点要求。

与上述数据的写入方法对应地,本申请实施例还提供的一种数据的写入装置,如图5所示,该写入装置包括:接收单元501、分装单元502和写入单元503。

接收单元501,用于接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的数据构成。

分装单元502,用于将接收单元501接收的所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量。

在一个例子中,所述指定大小的数据块的字节数量为所述文件传输协议默认传输的数据块的字节数量的N倍,其中,N为自然数。

写入单元503,用于将分装单元502分装的所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。

其中,所述本地存储服务端和异地存储服务端可以为开放存储服务OSS中的存储服务端。

可选地,所述写入装置还包括:启动单元504,用于启动至少一个线程。

写入单元503具体用于:

按照先后顺序将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端;或者,

同时将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。

可选地,写入单元503还具体用于:

将所述至少一个指定大小的数据块写入本地存储服务端对应的数据库或者分布式文件系统,以及将所述至少一个指定大小的数据块写入异地存储服 务端对应的数据库或者分布式文件系统。

本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。

本申请实施例提供的数据的写入装置,接收单元501接收写文件指令,所述写文件指令中携带待写入的文件数据流,所述文件数据流由有序的数据构成;分装单元502将所述文件数据流按顺序分装成至少一个指定大小的数据块,其中,所述指定大小的数据块的字节数量大于文件传输协议默认传输的数据块的字节数量;写入单元503将所述至少一个指定大小的数据块写入本地存储服务端和异地存储服务端。由此,可以实现在不增大客户端访问时延的情况下,同时满足数据不丢和数据服务不中断两点要求。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的对象及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1