对象管理方法、客户端和云服务端与流程

文档序号:11960376阅读:244来源:国知局
对象管理方法、客户端和云服务端与流程

本公开涉及云存储领域,具体涉及对象管理方法、客户端和云服务端。



背景技术:

对象存储在互联网的大潮中受到了广发关注,并得到了迅速的发展。对象存储与文件存储不同,对象不以目录分层的结构进行组织。每个对象都位于被称为存储池的扁平的空间的相同层级,每一级的每个元素在存储系统中都有唯一的标识,用户通过这个标识来访问容器或者对象。采用扁平的数据组织结构抛弃了嵌套的文件夹,避免维护庞大的目录树。在大数据和互联网时代,存储的文件/对象超过上百万个,单位时间内的访问次数和并发访问量也达到了前所未有的量级,在这种情况下,目录树会给存储系统带来很大的开销和诸多问题,成为系统的瓶颈。另外一个让对象存储焕发生命力的因素是,对象存储不再提供POSIX兼容的接口(如open,close,read,write等),而是可以非常方便地通过HTTP Restful API接口和对象进行交互,通过PUT和GET进行上传下载,通过DELETE进行删除。

在对象存储中,现有的技术方案都不支持对对象的部分写,如果用户仅仅是修改了一个对象的其中一小部分,对于现有方案,用户就需要为了这一小部分内容修改进行整个对象的重传,这会浪费用户的带宽,而且对于服务端而言,需要接收这部分数据也会浪费公网带宽,如果能够有支持部分写的对象存储接口,这一问题将会极大改善。



技术实现要素:

有鉴于此,本公开提供一种对象管理方法、客户端和云服务端,以完成对云服务端的对象进行部分写的操作。

根据本公开的第一方面,本公开提供一种对象管理方法,包括:建立从客户端到云服务端的通信连接;接收所述客户端针对第一对象的修改请求;根据所述修改请求采取多种方式修改所述第一对象;其中,所述多种方式包括:在所述第一对象的结尾追加数据;在所述第一对象中的指定位置替换数据;以及从所述第一对象中的指定位置删除至结尾的数据。

可选地,所述修改请求为HTTP请求。

可选地,还包括:获得所述第一对象的差异内容;以及根据所述差异内容生成所述第一对象的修改请求。

可选地,使用diff工具生成所述第一对象的差异内容。

可选地,所述第一对象的数据为二进制文件和文本文件。

根据本公开的第二方面,本公开提供一种云服务端,包括:第一通信单元,用于建立和客户端的通信连接;接收单元,用于接收所述客户端针对第一对象的修改请求;修改单元,用于根据所述修改请求采取多种方式修改所述第一对象,其中,所述多种方式包括:在所述第一对象的结尾追加数据;在所述第一对象中的指定位置替换数据;以及从所述第一对象中的指定位置删除至结尾的数据。

可选地,所述修改请求为HTTP请求。

根据本公开的第三方面,本公开提供一种客户端,包括:获取单元,用于获得第一对象的差异内容;生成单元,用于根据所述差异内容生成所述第一对象的修改请求;第二通信单元,用于向云服务端发送所述修改请求。

可选地,所述获取单元使用diff工具生成所述第一对象的差异内容。

可选地,所述第一对象的差异内容为二进制和文本内容。

根据本公开的第四方面,本公开提供对象管理系统,包括上述的客户端和云服务端。

在本公开实施例提供的对象管理方法中,提供了三种对云服务端的对象进行修改的方法,通过在对象的结尾追加数据,在对象中的指定位置替换数据,以及将对象中的指定位置删除至结尾的数据实现对一个对象的修改,如此不需要覆盖对象的所有数据,而只对变更的数据进行修改即可,从而提高了对象修改的效率。进一步地,在提交修改请求前,通过diff命令生成差异内容,根据差异内容生成修改请求,并提交到云服务端,由云服务端进行修改。

附图说明

通过参照以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是根据本公开实施例的对象管理系统的部署示意图;

图2是根据本公开实施例的对象管理方法的流程图;

图3是根据本公开实施例的客户端和云服务端建立通信连接的示意图;

图4是根据本公开另一实施例的对象管理方法的流程图;

图5是根据本发明实施例中通过diff工具生成的两个WORD文件的差异内容;

图6是根据本公开实施例的对象管理系统的结构图;

图7是根据本公开实施例的用于实现对象管理方法的终端设备的结构图;

图8是根据本公开实施例的用于实现对象管理方法的计算机程序产品的结构示意图。

具体实施方式

以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

在本公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。

图1是根据本公开实施例的对象管理系统的部署示意图。对象管理系统包括客户端和云服务端。对象保存在云服务端,客户端通过互联网或局域网和云服务端交互。例如,客户端向云服务端请求下载一个或若干个对象,或者请求修改对象,或者请求上载一个新的对象。这些请求通过不同的终端软件发送给云服务端。这里终端包括诸如个人电脑、笔记本、PDA、智能手机、智能电视机等电子设备。终端软件包括诸如视频类、电商类、游戏类等软件。请求可以为HTTP请求或使用其他安全协议的请求。

云服务端具有一个巨大的存储区域,该存储区域可将其看作一个网络SAN(Storage Area Network):集中式管理的高速存储网络,由多供应商存储系统、存储管理软件、应用程序服务器和网络硬件组成。在云服务端端,使用存储空间(bucket)对对象数据进行管理。可以将对象理解成文件,将存储对象的bucket理解为文件夹,在云服务端规划了若干个bucket(文件夹),每个bucket都有唯一的标识,每个对象名称在bucket里也是唯一的,如图1中的102所示。根据用户请求,能够对bucket或bucket的每个对象进行操作。

例如,假设需要修改图1中的对象1,现有技术的方式以一个新的对象覆盖对象1。本公开实施例中的修改方式则不同,不会直接覆盖对象1,而是找到对象的修改的起始位置,在起始位置或者替换、或者追加、或者删除对象里的数据。当然,具体是追加、删除或替换,由客户端提交的用户修改请求决定。另外,在用户的修改请求中明确指出了追加、删除或替换的起始位置。

由此,本公开实施例的对象管理系统,提供了三种对云服务端的对象进行修改的方法,当对一个对象进行修改时,只对变更的数据进行修改,从而避免修改对象的所有数据,提高了对象修改的效率。

图2是根据本公开实施例的对象管理方法的流程图。该对象管理方法包括步骤201-203。

在步骤201中,建立从客户端到云服务端的通信连接。图3示出了一个手机APP和云服务端建立安全通信连接的过程。标记30为客户端,标记31为权限管理服务器,通过客户端访问权限管理服务器。当需要进行云端存储时,客户端通过步骤301向权限管理服务器发送一个云端授权请求,权限管理服务器接收后,向云服务端转发,云服务端进行校验后,返回临时授权ID或访问令牌(Access token),权限管理服务器接收到该授权ID或访问令牌,返回给客户端。客户端将该授权ID或访问令牌缓存在本地,并通过该授权ID或访问令牌和云服务端进行通信连接。为了保证授权ID或访问令牌不被滥用或窃取,该类授权ID或访问令牌一般都设有时间限制,过了预定时间自动失效。

在步骤202中,接收客户端针对第一对象的修改请求。从修改请求中获取对象名称、对象修改的方式和修改位置。

在步骤203中,根据修改请求采取多种方式修改第一对象。在步骤202中对需要修改的对象名称、修改方式和修改的起始位置做了定义,根据这些定义,在本步骤中,按照指定的修改方式修改对象。

图4是根据本公开另一实施例的对象管理方法的流程图。包括步骤400-404。

在步骤400中,获得第一对象的差异内容。

本步骤中的第一对象为已经存储到云服务端的任意对象。当用户需要对已经提交到云服务端的对象进行修改时,需要提交修改请求。修改请求中明确指出了需修改的对象名称、修改方式和修改的内容。在本步骤中,生成对象前后两个版本的差异内容。例如,通过diff命令比较两个WORD文件,假设为file1.doc和file2.doc,生成如图5所示的差异文件。图5中的差异文件包括编号为400、401和402的段落。401段落在file1和file2.doc都存在,401段落只file1.doc存在,402段落只file2.doc存在。可以发现,段落400、401和402的显示方式不同。

在步骤401中,根据差异内容生成第一对象的修改请求。

如前所述,通过diff命令得到的差异内容根据不同的差异显示方式不同,在本步骤中,根据不同的显示方式获取不同的差异,并根据不同的差异生成对象的修改请求。在一个实施方式中,生成的修改请求采用jason串表示。例如,在对象结尾追加数据表示为{[-1,10000],Object0'Content},-1表示文件为对象结尾,10000表示截止位置,Object0'Content为追加内容。再例如,在对象中的指定位置替换数据的jason串为{[100,10000],Object0'Content},表示将对象的部分数据替换为Object0'Content,替换的起始位置第100字符,范围为100-10000字符。再例如,从对象的某个指定位置开始删除至结尾的数据,对应的jason串为{[800MB,-1],-1}。

当然,本领域的技术人员也可以采用其他方式表示修改请求,例如,按照HTTP请求发送修改请求,在请求头中包含位置信息(即jason串中的中括号内的数值),在请求体中包含内容数据(即上述Object0'Content)。

在步骤402中,建立从客户端到云服务端的通信连接。

客户端和云服务端可以通过临时授权ID或访问令牌(Access token)建立临时授信连接(如图3所示),也可以由客户端向云服务端申请永久授权ID或令牌以实现长久访问。

在步骤403中,接收客户端针对第一对象的修改请求。

通过步骤401生成的对象修改请求,将该对象修改请求通过步骤402建立的通信连接通道发送给云服务端。

在步骤404中,根据修改请求采取多种方式修改第一对象。

云服务端接收到修改请求后,从修改请求中获得对象名称、修改方式、起始位置,并根据修改方式实现对对象的修改。例如,对于对象修改请求的jason串:{[-1,10000],Object0'Content},-1,提取Object0'Content的内容将其追加到对象尾部。

在本发明实施例中,通过比较对象的前后版本差异获得对象的差异内容,根据差异内容生成修改请求,根据修改请求修改云服务端的对象。该方法适用于二进制文件和文本文件。进一步地,通过diff工具生成对象的差异内容。diff工具在WINDOWS和unix/Linux上都有对应的版本,在WINDOW上提供具有图像界面的版本,在unix/Linux提供命令行版本,可将其作为一个优选的实施方式。另外,diff工具不仅能比较文本文件,也能比较二进制文件。

图6是根据本公开实施例的对象管理系统的结构图。参考图6,对象管理系统包括客户端60和云服务端61。

客户端60包括获取单元601、生成单元602和第二通信单元603。获取单元601获得第一对象的差异内容。可选地,通过diff命令生成对象前后版本的差异内容。生成单元602根据差异内容生成第一对象的修改请求。可选地,由于通过diff命令得到的差异内容根据不同的差异显示方式不同,因而可以根据不同的显示方式获取不同的差异,并根据不同的差异生成对象的修改请求。第二通信单元603向发送修改请求。

云服务端61包括第一通信单元611、接收单元612和修改单元613。

第一通信单元611和客户端建立通信连接。例如,客户端向云服务端发送安全通信连接请求,第一通信单元611核验后向客户端发送临时授权ID或访问令牌,客户端通过该临时授权ID或访问令牌和云服务端建立安全连接。接收单元612接收客户端针对第一对象的修改请求。修改单元613根据修改请求采取多种方式修改第一对象,其中,所述多种方式包括:在第一对象的结尾追加数据;在第一对象中的指定位置替换数据;以及从第一对象中的指定位置删除至结尾的数据。

图7是根据本公开实施例的用于对象管理方法的终端设备的结构图。参考图7,一种终端设备70,包括通过总线连接的至少一个处理器701和存储器702。存储器702存储有各种计算机指令,处理器701从存储器702中读取一组指令,执行该指令以完成以下的操作:建立从客户端到云服务端的通信连接;接收客户端针对第一对象的修改请求;根据修改请求采取多种方式修改第一对象;其中,该多种方式包括:在第一对象的结尾追加数据;在第一对象中的指定位置替换数据;以及从第一对象中的指定位置删除至结尾的数据。

图8是根据本公开实施例的用于实现对象管理方法的计算机程序产品的结构示意图。

如图8所示,本公开实施例的计算机程序产品80,可以包括信号承载介质801。信号承载介质801为指令载体,可以包括一个或多个指令8011,指令8011在被例如处理器执行时,可以完成上述实施例中描述的功能。例如,指令8011被执行以完成以下的功能:建立从客户端到云服务端的通信连接;接收客户端针对第一对象的修改请求;根据修改请求采取多种方式修改第一对象;其中,该多种方式包括:在第一对象的结尾追加数据;在第一对象中的指定位置替换数据;以及从第一对象中的指定位置删除至结尾的数据。

在一些实现中,信号承载介质801可以包括计算机可读介质8012,诸如但不限于硬盘驱动器、压缩盘(CD)、数字通用盘(DVD)、数字带、存储器等。在一些实现中,信号承载介质801可以包括可记录介质8013,诸如但不限于存储器、读/写(R/W)CD、R/W DVD等。在一些实现中,信号承载介质801可以包括通信介质8014,诸如但不限于数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路等)。

本公开实施例的计算机程序产品,建立从客户端到云服务端的通信连接;接收客户端针对第一对象的修改请求;根据修改请求采取多种方式修改第一对象;其中,该多种方式包括:在第一对象的结尾追加数据;在第一对象中的指定位置替换数据;以及从第一对象中的指定位置删除至结尾的数据。计算机程序产品提供了三种对云服务端的对象进行修改的方法,该方法只修改需要变更的数据,从而提高了对象修改的效率。

附图中的流程图、框图图示了本公开实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。

系统的各个或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本公开实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。

根据本公开的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。

以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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