数据访问方法、系统以及存储介质与流程

文档序号:11254020阅读:1293来源:国知局
本发明涉及数据管理技术,特别是涉及一种数据访问方法、系统以及存储介质。
背景技术
::随着信息化技术的快速发展,一个企业的用户数量、数据量均呈现爆炸式增长,在业务量提高的同时,数据的访问量和数据量快速增长对计算机的处理能力和计算强度也相应增大,使得单一节点的集中式存储根本无法承担。因此,分布式计算机集群系统产生了,在分布式计算机集群系统中,由于数据分散存储于各个计算机的磁盘、显存中,或位于某个进程的内存地址空间等,从而导致数据访问效率低、数据管理的成本增加。技术实现要素:基于此,有必要针对计算机集群系统中数据访问效率低、管理成本高的问题,提供一种数据访问方法、系统以及存储介质。一种数据访问方法,包括:接收数据访问请求消息;对数据访问请求消息进行解析,以获取请求的数据的统一资源标识符;根据请求的数据的统一资源标识符验证请求是否合法;若确定请求合法,则根据请求的数据的统一资源标识符在计算机集群系统中查询数据并返回回应消息。在其中一个实施例中,根据请求的数据的统一资源标识符验证请求是否合法,包括:根据请求的数据的统一资源标识符确定请求的数据是否为开放数据;若确定请求的数据为开放数据,则确定所述请求合法。在其中一个实施例中,若确定请求的数据不是开放数据,则根据请求的数据的统一资源标识符验证请求是否合法,包括:对数据访问请求消息进行解析,以获取请求的用户信息;根据请求的用户信息判断请求的用户是否具备访问权限;若确定请求的用户具备访问权限,则确定所述请求合法。在其中一个实施例中,接收数据访问请求消息之前,还包括:根据存储在计算机集群系统中的数据为每一块数据创建数据的统一资源标识符。在其中一个实施例中,数据的统一资源标识符包括协议名称、数据存放的主机名或主机ip地址以及数据在主机上的存放位置。在其中一个实施例中,数据访问请求消息和回应消息分别包括:消息标记部分、消息头部分和消息体部分;消息标记部分用于记录整条消息的长度、消息头部分的长度以及消息体部分的长度;消息头部分包含消息的类别标识、请求数据的统一资源标识符以及消息的格式,其中,类别标识用于标识消息为数据访问请求消息或回应消息,消息的格式用于定义消息的传输协议;消息体部分用于记录消息的具体内容。在其中一个实施例中,若消息头部分的类别标识为访问请求消息,则消息体部分的具体内容包括请求的用户信息。在其中一个实施例中,若消息头部分的类别标识为回应消息,则消息头部分还包含对数据访问请求的处理结果,消息体部分的具体内容则包括根据处理结果返回的参数。一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述方法的步骤。一种数据访问系统,包括计算机集群,所述计算机集群包括数据访问计算机和数据提供计算机,所述数据访问计算机和数据提供计算机上运行有数据管理服务程序,所述数据访问计算机和数据提供计算机执行所述数据管理服务程序时实现如上所述方法的步骤。上述数据访问方法、系统以及存储介质,通过接收数据访问请求消息并对数据访问请求消息进行解析,以获取请求的数据的统一资源标识符,从而根据请求的数据的统一资源标识符验证请求是否合法,若合法,则根据请求的统一资源标识符查询数据并返回回应消息。其通过采用统一资源标识符对分散存储于集群中各个计算机的磁盘、显存中、或位于某个进程的内存地址空间以及数据库等的数据进行标识,使得数据的使用者仅仅给出统一资源标识符即可访问数据,从而简化了集群系统中的数据管理和访问流程,并通过权限管理保障了数据的安全性。附图说明图1为一个实施例中计算机群的数据访问系统的结构示意图;图2为一个实施例中数据访问方法的流程图;图3为一个实施例中数据访问方法的流程图;图4为一个实施例中数据访问请求消息和回应消息的结构图;图5为一个实施例数据访问请求消息和回应消息的格式示意图;图6为一个实施例中请求消息的消息头部分的格式示意图;图7为一个实施例中回应消息的消息头部分的格式示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。本发明实施例提供了一种计算机集群的数据访问系统,包括计算机集群和运行于计算机集群的数据管理服务程序。计算机集群中的每台计算机中需要访问数据的进程或提供数据的进程均通过数据管理服务程序来进行管理。当数据位于共享内存上时,也可以几个进程共享一个数据管理服务程序。实际上,计算机集群中的每台计算机从逻辑上既可以是数据访问计算机,也可以是数据提供计算机。为了描述方便,如图1所示,假设数据访问系统由三台计算机sp1、sp2以及qp组成,并相互建立网络连接,通过数据管理服务程序管理相互之间的通信。在一个具体的应用场景中,其中一台计算机qp通过数据管理服务程序提出访问请求,其余两台计算机sp1、sp2通过数据管理服务程序响应访问请求。在本实施例中,数据管理服务程序对数据访问系统中三台计算机sp1、sp2以及qp中存储的所有数据进行管理。具体的,针对存储于sp1、sp2以及qp的磁盘、显存中、或位于某个进程的内存地址空间以及数据库等的数据,均建立目录以及位置的对应关系,进而生成全局唯一的统一资源标识符uri(uniformresourceidentifier),其符合当前的rfc3986规范,并在数据集中进行保存。当在不需要某些数据时,在进行数据的删除操作时,将其对应的uri从数据集中删除;或在计算机集群系统中加入了新的数据时,对新加入的数据建立目录以及位置的对应关系,生成uri并添加到数据集中,从而实现了对数据集的更新。在具体的访问场景中,当计算机qp(以下统称数据访问计算机)需要访问集群中sp1、sp2(以下统称数据提供计算机)的数据时,则可以通过数据管理服务程序在数据集中查询对应的数据。从而使得计算机集群系统中的数据,即位于计算机集群系统中各计算机的磁盘上、显存上、某个进程的内存地址空间内以及数据库中的数据,得到了统一管理,提高了数据访问效率。本发明实施例还提供了一种数据访问方法,如图2所示,包括如下步骤:步骤s201,接收数据访问请求消息。在本实施例中,当计算机集群中的数据访问计算机需要访问存储在集群中其他计算机上的数据时,则可以通过数据管理服务程序向数据提供计算机发起访问请求,其具体可以向数据管理服务程序发送数据访问请求消息。其中,数据访问请求消息中可以包括请求访问的数据的uri,数据的uri中记录了数据的存放位置。步骤s202,对数据访问请求消息进行解析,以获取请求的数据的统一资源标识符uri。数据管理服务程序对数据访问计算机发起的数据访问请求消息进行解析,从而获取数据访问请求消息中数据访问计算机请求的数据的uri。其中,uri包括协议名称、数据存放的主机名或主机ip地址以及数据在主机上的存放位置,其中协议名称定义了数据访问所遵循的协议,以便基于机同的协议访问对应的数据。步骤s203,根据请求的数据的统一资源标识符uri验证请求是否合法。在本实施例中,数据集中记录了与uri对应的数据的访问权限,具体记录了数据是否为开放数据或授权对象信息。其中,数据的访问权限包括数据对所有访问对象均开放的无限制级访问权限和数据仅对某些访问对象开放的限制级访问权限。数据管理服务程序根据解析的数据访问请求消息中的uri在数据集中查询与uri对应的数据的访问权限。例如,如果数据管理服务程序根据数据访问计算机请求的uri查询到与该uri对应的数据为开放数据,则表示该数据的授权对象为所有访问的计算机,因此,可以确定数据访问计算机的访问请求合法。如果数据管理服务程序根据数据访问计算机请求的uri查询到与该uri对应的数据不是开放数据,则数据管理服务程序进一步判定数据访问计算机是否为授权对象。若数据访问计算机为授权对象,则也可以确定该数据访问计算机的访问请求合法,否则确定该数据访问计算机的访问请求不合法。步骤s204,若确定请求合法,则根据请求的统一资源标识符uri在计算机集群系统中查询数据并返回回应消息。当数据管理服务程序确定数据访问计算机的访问请求合法时,则数据管理服务程序根据访问请求中的uri在计算机集群系统中查询对应的数据,并向数据访问计算机返回回应消息,其中回应消息中可以包括查询结果以及对应的参数。本实施例通过数据管理服务程序对计算机集群中数据访问计算机的数据访问请求进行解析,并验证请求的合法性,当确定请求合法时,则根据请求中的uri在计算机集群系统中查询对应的数据,并向数据访问计算机返回回应消息。使得计算机集群系统中的数据得到了统一管理,提高了数据访问效率。在一个实施例中,如图3所示,数据管理服务程序在接收数据访问请求消息之前,还包括:步骤s301,根据存储在计算机集群系统中的数据为每一块数据创建统一资源标识符uri。在本实施例中,数据管理服务程序对分散存储于计算机集群中各个计算机中的数据建立目录以及位置的对应关系,进而生成全局唯一的uri,并将其对应关系与uri保存在数据集中,使得在一个计算机集群系统中的每一块数据均有系统范围内的唯一标识,进而使得系统中的任一进程可通过uri访问某一块已标识的数据。其中,uri标识中可以包括协议名称、数据存放的主机名或主机ip地址以及数据在主机上的存放位置等。举例来说,本实施例中定义的uri标识其格式如下所示:dmap://[username:password]@host[“:”port]/path["?"query]其中dmap为scheme名称,含义是数据管理和访问协议(datamanagingandaccessprotocol,简称dmap);username和password是授权使用的用户名和密码,当用户已经认证过,或者数据为任意用户均可访问的情况下,可省略;host是主机名或者主机ip地址;port是网络端口名,在端口预定义的情况下,可省略;path是数据在主机上的位置;query为查询条件,可为空,也可以有具体的内容。在本实施例中,query中包含有一operation_type的字段,该字段表示读取数据的操作类型,其值具体可以设置如下:默认为file,表示读取文件;设置为database,表示读取数据库;设置为memory,表示读取某进程地址空间内的数据;设置为graphics_memory;表示读取显卡内存中的数据;或设置为用户自定义的值。例如,在名称为image-server的一台计算机的内存里,存储着一系列图片serialxxx,此系列图片共有100张,对应的id为1~100。image-server有一个授权用户image-viewer,该用户的授权密码是123456,那么此用户可通过如下uri1来访问此系列图片,可通过如下uri2访问此系列图片中id为55的单张图片,其中:uri1为:dmap://image-viewer:123456@image-server:1000/images/serialxxxuri2为:dmap://image-viewer:123456@image-server:1000/images/serialxxx?id=55又例如,如果需要读取数据库m中年龄为20的所有人员的名字,授权用户名为username1,密码为password1,数据库m位于名称为hostname1的计算机上,端口号为1000,表名为table1,则对应的uri为:dmap://username1:password1@hostname1:1000?location=database&sql=select%20name%20from%20table1%20where%20age%3d20其中location=database表示本uri要从数据库中读取数据。在一个实施例中,当数据管理服务程序根据计算机集群系统中的数据为每一块数据都创建统一资源标识符uri后,则可以接收数据访问计算机的数据访问请求消息,并对该数据访问请求消息进行解析、判断或查询后返回回应消息。在本实施例中,如图4所示,数据访问请求消息和回应消息分别包括:消息标记部分、消息头部分和消息体部分,其消息的格式如图5所示。其中,各字段对应的长度用于规定记录各字段内容所占用的空间。在一个实施例中,消息标记部分包括字段msg-size、head-size以及body-size,其中,字段msg-size对应的长度为4bytes(字节),其用于记录整条消息的长度;字段head-size对应的长度为4bytes,其用于记录消息头部分的长度;字段body-size对应的长度为4bytes,其用于记录消息体部分的长度。消息头部分即字段head包含消息的类别标识、数据的uri以及消息的格式,该字段head对应的长度head-sizebytes为字段head-size中记录的具体长度,即消息头部分的具体长度。其中,类别标识用于标识消息为数据访问请求消息还是回应消息,消息的格式用于定义消息的传输协议。在一个实施例中,请求消息的消息头部分的格式如图6所示,其中,crlf表示回车换行(下同);如消息头的前三个字符为“req”,则表示该消息为请求该消息;uri为请求的uri,此处不包含用户名和密码;dmap-version表示协议版本。以上各字段间通过crlf隔开,且字段内不包含回车和换行字符。在一个实施例中,回应消息的消息头部分的格式如图7所示,其中,crlf表示回车换行(下同);如消息头的前三个字符为“res”,则表示该消息为回应消息;uri为请求的uri,此处不包含用户名和密码;ret-code表示请求处理结果即查询结果,在本实施例中,字段ret-code对应的具体查询结果可以通过数字代码表示;dmap-version表示协议版本。以上各字段间使用crlf隔开,且字段内不包含回车和换行字符。在本实施例中,协议版本dmap-version字段用于使数据请求计算机和数据提供计算机使用相同的解析方法,以正确的解析数据。请求消息中的协议版本dmap-version字段标识了请求计算机请求特定数据的能力,回应消息中的协议版本dmap-version字段标识了数据提供计算机提供特定数据的能力。举例来说,假设协议版本1表示本协议可以使计算机集群系统能够处理磁盘文件,协议版本2表示本协议可以使计算机集群系统能够处理磁盘文件、也能够处理数据库查询数据,如果请求计算机使用的协议版本为版本2,而数据提供计算机只能处理协议版本为1的请求,因此,则可忽略此请求,或者在回应消息中返回版本错误信息。而消息体部分即字段body则用于记录消息的具体内容,该字段body对应的长度body-sizebytes为字段body-size中记录的具体长度,即消息体部分记录的具体内容的长度。在本实施例中,请求消息的消息体其格式如下:usernamecrlfpasswordcrlfusercustom-fieldcrlfusercustom-field-valuecrlf其中,username表示授权用户名;password表示授权密码;usercustom-field为用户自定义的字段,可定义多个;usercustom-field-value为用户自定义的字段的值。以上各字段及值均通过回车换行符分割,任何字段及值内部通常不建议出现回车换行字符。在一个实施例中,由于uri具有自己独特的表达格式,因此,不能穷尽表达所有的内容,对于某些个性化的请求来说,则可以通过usercustom-field以及usercustom-field-value字段来进行自定义,以对uri进行补充。举例来说,假设请求计算机需要指定请求的数据应该从哪里获取,从而可以通过usercustom-field来定义字段名,假设其字段名为location,值为disk,memory,graphics_memory或者database,如果数据请求计算机要请求一个已经创建好的3维模型数据,则可以将usercustom-field-value对应的字段的值设定为graphics_memory。在一个实施例中,回应消息的消息体中请求处理结果即查询结果的表示方法可以包括:如果查询结果对应的字段ret-code对应的代码为0则表示请求成功,ret-code对应的代码为1则表示授权失败,ret-code对应的代码为2则表示资源不存在,ret-code对应的代码为3则表示错误的uri,ret-code对应的代码为4则表示禁止访问,ret-code对应的代码为5则表示未知错误。在回应消息的消息体中,如果查询结果对应的字段ret-code为0,即请求成功时,则消息体为请求的数据。如果查询结果对应的字段ret-code为4,即禁止访问时,则消息体是禁止访问的原因。如果查询结果对应的字段ret-code为上述代码中的其他情况,则消息体为空。在一个实施例中,当数据管理服务程序接收到数据访问请求消息后,则对数据访问请求消息进行解析,以获取数据访问请求消息中的uri,通过uri在数据集中查询与uri对应的数据的访问权限,如与uri对应的数据是否为开放数据以及数据访问计算机是否为授权对象。例如,如果数据管理服务程序根据数据访问计算机请求的uri查询到与该uri对应的数据为开放数据,则可以确定数据访问计算机的访问请求合法。在一个实施例中,如果数据管理服务程序通过uri在数据集中查询与uri对应的数据的访问权限,如通过查询确定与uri对应的数据不是开放数据,则数据管理服务程序进一步对数据访问请求消息进行解析,以获取数据访问请求消息的消息体中记录的授权信息,从而判定数据访问计算机是否为授权对象,以通过权限管理使得只有符合权限要求的对象才能访问数据。例如,数据管理服务程序根据解析数据访问请求消息的消息体中记录的授权信息,即具体的授权用户名以及授权密码,从而根据数据集中记录的授权对象信息判断该数据访问计算机是否为授权对象,如果数据集中记录的授权对象信息中包括数据访问请求消息中的授权用户名以及授权密码,则判定数据访问计算机是授权对象,从而可以确定数据访问计算机的访问请求合法,否则确定该访问请求不合法。当确定数据访问计算机的访问请求合法时,则数据管理服务程序根据该访问请求中的uri在计算机集群系统中查询与uri对应的数据,如果查询到对应的数据,则向数据访问计算机返回回应消息,其中,回应消息的消息头中查询结果对应的字段ret-code为0,且消息体为查询到的与请求的uri对应的数据。如经过查询后未查询到数据,则返回的回应消息的消息头中查询结果对应的字段ret-code为2,且消息体为空,即没有内容。如果在查询数据时检查到数据请求消息中的uri格式不符合uri标准,则返回的回应消息的消息头中查询结果对应的字段ret-code为3,且消息体为空,即没有内容。如果查询到的数据为加密数据,则返回的回应消息的消息头中查询结果对应的字段ret-code为4,且消息体是禁止访问的原因。如果在数据查询过程中因其他原因如协议版本错误、外部断电等导致数据查询未能成功,则返回的回应消息的消息头中查询结果对应的字段ret-code为5,且消息体为空。如果通过上述验证后判定数据访问计算机不是授权对象,则返回的回应消息的消息头中查询结果对应的字段ret-code为1,且消息体为空,即没有内容。本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下步骤:接收数据访问请求消息;对数据访问请求消息进行解析,以获取请求的数据的统一资源标识符uri;根据请求的数据的统一资源标识符uri验证请求是否合法;若确定请求合法,则根据请求的统一资源标识符uri在计算机集群系统中查询数据并返回回应消息。在一个实施例中,根据请求的数据的统一资源标识符uri验证请求是否合法,包括:根据请求的数据的统一资源标识符uri确定请求的数据是否为开放数据;若确定请求的数据为开放数据,则确定请求合法。在一个实施例中,确定请求的数据不是开放数据,则根据请求的数据的统一资源标识符uri验证请求是否合法,包括:对数据访问请求消息进行解析,以获取请求的用户信息;根据请求的用户信息判断请求的用户是否具备访问权限;若确定请求的用户具备访问权限,则确定请求合法。在一个实施例中,接收数据访问请求消息之前,还包括:根据存储在计算机集群系统中的数据为每一块数据创建所述统一资源标识符uri。在一个实施例中,统一资源标识符uri包括协议名称、数据存放的主机名或主机ip地址以及数据在主机上的存放位置。在一个实施例中,数据访问请求消息和回应消息分别包括:消息标记部分、消息头部分和消息体部分;所述消息标记部分用于记录整条消息的长度、消息头部分的长度以及消息体部分的长度;所述消息头部分包含消息的类别标识、请求的统一资源标识符uri以及消息的格式,所述类别标识用于标识消息为数据访问请求消息或回应消息,所述消息的格式用于定义消息的传输协议;所述消息体部分用于记录消息的具体内容。在一个实施例中,若消息头部分的类别标识为访问请求消息,则消息体部分的具体内容包括请求的用户信息。在一个实施例中,若消息头部分的类别标识为回应消息,则消息头部分还包含对数据访问请求的处理结果,则消息体部分的具体内容则包括根据处理结果返回的参数。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1