CN115623081A - 数据下载方法、上传方法及分布式存储*** - Google Patents
数据下载方法、上传方法及分布式存储*** Download PDFInfo
- Publication number
- CN115623081A CN115623081A CN202110809233.6A CN202110809233A CN115623081A CN 115623081 A CN115623081 A CN 115623081A CN 202110809233 A CN202110809233 A CN 202110809233A CN 115623081 A CN115623081 A CN 115623081A
- Authority
- CN
- China
- Prior art keywords
- cluster
- file
- gateway
- object storage
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Library & Information Science (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据下载方法、上传方法及分布式存储***。其中,该方法包括:第一对象存储网关接收访问请求;第一对象存储网关获取访问请求中的目标文件标识;第一对象存储网关从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第一对象存储网关将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
Description
技术领域
本发明涉及数据存储领域,具体而言,涉及一种数据下载方法、上传方法及分布式存储***。
背景技术
Ceph(分布式文件***)是一个非常流行的开源分布式存储***,其具有良好的设计理念,架构设计上它避免了每个组件的单点故障,并提供了良好的扩展性和性能。其作为一个PB级的对象存储***,几乎不用在底层架构上做太多改进就可以用于生产环境。但是现有的Ceph***中会存在扩展性问题,并且在存放文件数量较多时,Ceph中的性能会受到影响。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据下载方法、上传方法及分布式存储***,以至少解决由于通过RGW存储文件的元数据造成的每个RGW的bucket存放文件数过多而影响性能的技术问题。
根据本发明实施例的一个方面,提供了一种数据下载方法,该方法应用于分布式存储***中,分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,方法包括:第一对象存储网关接收访问请求;第一对象存储网关获取访问请求中的目标文件标识;第一对象存储网关从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第一对象存储网关将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
可选地,分布式存储***中包括:负载均衡网关;第一对象存储网关接收访问请求,包括:第一对象存储网关接收来自负载均衡网关转发的访问请求。
可选地,第一对象存储网关接收来自负载均衡网关转发的访问请求之前,方法还包括:负载均衡网关接收多个访问请求;从预设网关列表中按照预设权重选择第一对象存储网关,其中,预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的访问请求数量越大。
可选地,第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关,包括:第一对象存储网关从目标关系型数据库中的集群信息表中确定与元数据所对应的目标分布式存储集群;从目标关系型数据库中的元数据信息表确定第二对象存储网关。
可选地,集群信息表中包括以下至少之一:集群标识、集群的可读写状态、集群地址信息;元数据信息表中包括以下至少之一:目标文件所在的集群标识、目标文件的文件信息、文件的写入状态、文件大小。
可选地,集群的可读写状态和文件的写入状态通过以下方式确定:关系型数据库集群中的关系型数据库响应于目标对象的修改请求,对集群的可读写状态和文件的写入状态进行修改;其中,在检测到触发事件时,触发对第二对象存储网关存储的文件执行与修改后的集群的可读写状态和文件的写入状态对应的操作。
根据本发明实施例的另一个方面,提供了一种数据上传方法,该方法应用于分布式存储***中,分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,方法包括:第一对象存储网关接收文件上传请求;第一对象存储网关获取文件上传请求所对应待上传文件的元数据;第一对象存储网关将元数据发送至关系型数据库集群中进行存储,以及将待上传数据发送至分布式存储集群中的第二对象存储网关。
可选地,文件上传请求为多个;将待上传数据发送至分布式存储集群中的第二对象存储网关之前,方法还包括:负载均衡网关接收多个文件上传请求;从预设网关列表中按照预设权重选择第一对象存储网关,其中,预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的文件上传请求数量越大。
可选地,方法还包括:在待上传文件的上传类型为分片上传时,第一对象存储网关从文件上传请求中获取第一类元数据;以及在待上传文件对应的所有分片上传完成后,向第二对象存储网关中发送请求消息,并接收第二对象存储网关反馈的与请求消息对应的第二类元数据;在待上传文件的上传类型为以form表单的方式上传时,从待上传数据中获取第一类元数据。
可选地,第一类元数据包括:待上传文件对应的集群标识、待上传文件的文件信息、文件的写入状态;第二类元数据包括:文件大小。
根据本发明实施例的另一个方面,提供了一种分布式存储***,分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群;其中,第一对象存储网关,用于接收访问请求;获取访问请求中的目标文件标识;从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;以及将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件;关系型数据库集群,用于存储元数据;分布式存储集群,用于存储目标文件。
根据本发明实施例的另一个方面,提供了一种数据下载装置,该装置应用于分布式存储***中的第一对象存储网关,分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,装置包括:第一处理模块,用于接收访问请求;获取模块,用于获取访问请求中的目标文件标识;第一查找模块,用于从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第二查找模块从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第二处理模块将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
根据本发明实施例的另一个方面,提供了一种数据上传装置,其特征在于,该装置应用于分布式存储***中的第一对象存储网关,分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,装置包括:处理模块,用于接收文件上传请求;获取模块,用于获取文件上传请求所对应待上传文件的元数据;发送模块,用于将元数据发送至关系型数据库集群中进行存储,以及将待上传数据发送至分布式存储集群中的第二对象存储网关。
根据本发明实施例的另一个方面,提供了一种非易失性存储介质,该非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行数据下载方法。
在本发明实施例中,采用第一对象存储网关、分布式存储集群和关系型数据库集群,方法包括:第一对象存储网关接收访问请求;第一对象存储网关获取访问请求中的目标文件标识;第一对象存储网关从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第一对象存储网关将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件的方式,通过将元数据存储在关系型数据库集群中,达到了避免在RGW中存储文件的元数据的目的,从而实现了提高数据库性能的技术效果,进而解决了由于通过RGW存储文件的元数据造成的每个RGW的bucket存放文件数过多而影响性能的技术问题。
另外,由于本发明实施例中以Ceph集群为单位进行扩容,从而规避了扩容导致的数据均衡的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的一种分布式存储***的架构图;
图2是根据本申请实施例的一种分布式存储***的架构图;
图3是根据本申请实施例的一种数据下载方法的流程示意图;
图4是根据本申请实施例的一种数据上传方法的流程示意图;
图5是根据本申请实施例的一种数据下载装置的结构示意图;
图6是根据本申请实施例的一种数据上传装置的结构示意图;
图7是根据本发明实施例的一种存储网关处理请求时的工作流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语简述如下:
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
CRUSH,CRUSH是一种基于伪随机控制数据分布、复制的算法,CRUSH为解决数据的平衡分布、负载、最大化***性能以及***的扩展和硬件容错而被设计的。在Ceph集群中,CRUSH需要一个简洁而层次清晰的设备描述,包括存储集群和副本放置策略,从而有效的将数据对象映射大存储设备上,并且这个过程完成是分布式的。
Kubernetes,简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用。Kubernetes通过部署容器方式提供了应用部署,规划,更新,维护的一种机制。具体地,每个容器之间互相隔离,每个容器有自己的文件***,容器之间进程不会相互影响,能区分计算资源。并且相对于虚拟机,容器能快速部署,另外由于容器与底层设施、机器文件***解耦的,所以容器能在不同云、不同版本操作***间进行迁移。
OpenResty,是基于nginx和各种扩展模块的一个软件平台。由于OpenResty中打包有lua/luajit,因此可以在openresty平台上使用lua脚本,并借助nginx的异步非阻塞功能,从而实现使用lua异步并发访问后端的关系型数据库集群,如MySQL,PostgreSQL,Memcached,Redis等等服务;还可以减少浏览器的http连接数量,并且可以异步并发的访问后台Java/PHP/Python等等接口。
Sharding-Sphere,Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这3部分组成。Sharding-Sphere可以提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。另外,Sharding-Sphere定位为关系型数据库中间件,用于充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库,与NoSQL和NewSQL是并存而非互斥的关系。
实施例1
图1是根据相关技术的一种分布式存储***的架构图,其中,crushmap(数据分布地图)中的Rack对应物理环境下的机架;Node为Ceph存储服务器;RGW为Ceph的对象存储网关组件;Mon为Ceph的monitor组件;OSD为Ceph的数据存储组件;Loadbalancer为外部流量入口,将外部的http请求反向代理到RGW。需要说明的是,每台物理服务器可以同时部署多个不同类型的组件。
但是,但是这种架构存在扩展性问题,一般其扩展方式有两种:1、分别向每个Rack中增加Node,让整个集群的数据根据crushmap重新均衡;2、分别向每个Rack中增加Node,创建新的Crush Rule,然后用新的Crush Rule创建新的Pool,从而实现容量扩容。
以上两种扩容方案存在如下问题:
对于方案一,每次扩容都会导致大规模的数据迁移,从而影响集群的性能,不适合PB级以上的存储环境;方案二虽然避免了数据迁移,在一定程度上实现了集群扩容,但是它没有对用户之前创建的bucket扩容,用户需要新创建bucket来使用扩容部分的空间。
另外,受到文件元数据读写性能的影响,每个RGW的bucket存放文件数超过5000万会极大地影响性能。
为了解决上述技术问题,本申请实施例提供了一种新的分布式存储***架构,在该架构中,新增了第一对象存储网关,用于接收访问请求;获取访问请求中的目标文件标识;从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;以及将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
具体地,如图2所示,本申请实施例提供的分布式存储***中包括:第一对象存储网关20、分布式存储集群22和关系型数据库集群24;其中,第一对象存储网关20,用于接收访问请求;获取访问请求中的目标文件标识;从关系型数据库集群24中确定与目标文件标识对应的目标关系型数据库240,并从目标关系型数据库240中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;从与第一对象存储网关20对应的多个分布式存储集群22中确定与元数据所对应的目标分布式存储集群22以及目标分布式集群22中的第二对象存储网关220;以及将访问请求转发至目标分布式集群22中的第二对象存储网关220,以从第二对象存储网关220中获取目标文件;关系型数据库集群24,用于存储元数据;分布式存储集群22,用于存储目标文件。
在本申请的一些实施例中,上述第二对象存储网关220可以是RGW,上述第一对象存储网关20可以是openresty+lua组成的负载网关,上述目标关系型数据库240可以是MySQL数据库,上述分布式存储集群22即为Ceph集群。
在本申请的一些实施例中,上述分布式存储***在处理一个具体请求时的工作流程如图7所示。其中,图7所示的流程图描述了第一对象存储网关20在工作时涉及的11个阶段以及每个阶段对应的指令(Order of lua Nginx Module Directives)。
具体地,init_by_lua阶段和init_worker_by_lua阶段用于实现第一对象存储网关20的初始化设置,其中,init_by_lua阶段通常用于初始化全局配置/预加载Lua模块;init_worker_by_lua阶段通常用于定时拉取配置和数据,或者上游服务的健康检查,第一类对象存储网关20在此阶段从MySQL定时获取Ceph集群endpoint信息以及bucket相关信息。
在通过第一对象存储网关20访问分布式存储***时涉及以下阶段:ssl_certificate_by_lua阶段通常用于对SSL做特殊处理,如版本限制;set_by_lua阶段用于设置nginx变量,可以实现复杂的赋值逻辑;rewrite_by_lua阶段用于实现复杂的转发、重定向、缓存等功能(例如特定请求代理到外网);access_by_lua阶段用于对IP准入、接口权限等情况集中处理。
当目标用户通过第一对象存储网关20对分布式存储***中的数据进行操作时,第一对象存储网关20会涉及以下工作阶段:content_by_lua阶段第一对象网关20可以看作是内容处理器,用于接收请求处理并输出响应,第一类对象存储网关20在此阶段实现核心功能(比如发起http请求到第二类对象存储网关;从MySQL获取文件元数据、更新文件元数据);balancer_by_lua阶段用于动态负载均衡;header_filter_by_lua阶段用于自定义http请求的response header和cookie;body_filter_by_lua阶段用于自定义http请求的response body;log_by_lua阶段用于记录访问量、统计平均响应时间。目前第一类对象存储网关在此阶段将小于512KB的文件元数据写入kafka,以便合并程序基于此实现小文件合并,从而提高Ceph存储空间利用率。
在本申请的一些实施例中,上述第一对象存储网关20主要在init_worker_by_lua和content_by_lua两个阶段(即两个进程)嵌入lua代码(一种脚本语言),对其功能做扩展,以下为init_worker_by_lua和content_by_lua两个阶段的扩展功能介绍。
其中,在init_worker_by_lua阶段,存储网关主要从MySQL获取后端ceph集群的信息,并以package变量方式传递给content_by_lua阶段,package变量是worker级别的,对worker处理的所有请求共享。
在content_by_lua阶段,存储网关主要对每个http请求做解析,并为不同的请求分配不同的访问路径。
在本申请的一些实施例中,为了实现第一对象存储网关20实例数量的弹性伸缩,上述分布式存储***的部署方式为deployment(也是一个对象)。其中,该对象的作用是内置controler来创建POD(也是一个对象,为调度的最小单位),从而在开发式节点中创建网关实例。
在本申请的一些实施例中,上述分布式存储***在扩容时以ceph集群作为一个存储单元,即以ceph集群为单位进行扩容,并且在创建bucket或制定bucket的删除策略,以及进行访问权限的设置和鉴权处理等针对bucket的操作时,会将操作内容广播到后端所有的Ceph集群中。
在本申请的一些实施例中,上述分布式存储***中还包括负载均衡网关26,第一对象存储网关20接收的访问请求就是来自负载均衡网关26转发的所述访问请求。
在进行负载均衡时,可以从L4或L7层进行负载均衡,即在对后台的服务器进行负载均衡时,依据OSI(Open Systems Interconnection reference,开放式***互联)四层的信息或七层的信息来决定怎么样转发流量。例如,四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT(Network Address Translation网络地址转换)处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层的负载均衡,就是在四层的基础上,再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。例如,如果Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
在本申请的一些实施例中,上述负载均衡网关26可以为L4负载均衡器(Loadbalancer),其中,L4 Loadbalancer可以横向扩展。
在本申请的一些实施例中,如图2所示,和图1所示的分布式存储***相比,本申请实施例中所述的分布式存储***是通过kubernetes来管理的。
在图2所示的运行环境下,本申请实施例提供了一种数据下载方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本发明实施例的数据下载方法,如图3所示,该方法应用于分布式存储***中,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,包括如下步骤:
步骤S302,第一对象存储网关接收访问请求;
具体地,上述第一对象存储网关可以为openresty+lua组成的负载网关。
在本申请的一些实施例中,上述第一对象存储网关接收来自负载均衡网关转发的访问请求之前,还会由负载均衡网关接收多个访问请求,并从预设网关列表中按照预设权重选择第一对象存储网关,其中,预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的访问请求数量越大。也就是说,负载均衡网关也可以按照加权轮询算法对下载过程中的访问请求进行负载均衡处理。
步骤S304,第一对象存储网关获取访问请求中的目标文件标识;
在本申请的一些实施例中,当openresty+lua存储网关接收到访问请求后,存储网关会解析请求,获取文件唯一id并从MySQL集群查询到文件的元数据。
步骤S306,第一对象存储网关从所述关系型数据库集群中确定与所述目标文件标识对应的目标关系型数据库,并从所述目标关系型数据库中查询所述目标文件标识所对应目标文件的元数据,其中,所述元数据为所述目标文件的描述信息;
具体地,当第一对象存储网关接收到从上述负载均衡网关转发来的访问请求后,存储网关会将请求转发到对应的Ceph集群的RGW组件处理。
在本申请的一些实施例中,上述分布式存储***中是通过MySQL(用于存储关系型数据)来存储文件元数据的,并通过sharding-sphere来扩展MySQL,以支持海量文件的元数据存储。
需要说明的是,sharding-sphere可以对接多个MySQL,也可以对接proxy SQL。
在本申请的一些实施例中,存储网关后端MySQL数据库表主要有存放Ceph集群信息的cluster_infos表和存放文件元数据的coss_files表,其中,cluster_infos表关键的字段如下:
`cluster`int(10)NOT NULL COMMENT'集群id';
`cluster_name`varchar(64)NOT NULL COMMENT'cluster name';
`rw_status`tinyint(2)NOT NULL DEFAULT'-1'COMMENT'集群可读写状态,1为可读写,0为只读,-1为不可读写';
`rgw_url`varchar(255)NOT NULL COMMENT'集群rgw地址,<ip>:<port>'。
coss_files表的核心字段有:
`cluster`int(10)unsigned NOT NULL COMMENT'文件当前存储集群id';
`bucket`int(10)unsigned NOT NULL COMMENT'bucket id';
`filekey`varchar(255)NOT NULL COMMENT'文件唯一标识';
`file_type`varchar(128)NOT NULL COMMENT'文件类型';
`file_size`bigint(20)unsigned NOT NULL COMMENT'文件大小';
`w_status`tinyint(2)NOT NULL DEFAULT'0'COMMENT'文件写入状态,0为标记删除;1为写入完成;2为写入中;3为标记更新;4为待合并;5为分片上传中'。
在本申请的一些实施例中,当上述分布式存储***需要删除文件时,只需要修改该文件存放在MySQL中的coss_files表的w_status字段,即可将需要删除的文件标记为删除,后期会通过定时任务统一删除文件。
步骤S308,第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;
在本申请的一些实施例中,上述第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关的具体流程为:第一对象存储网关从目标关系型数据库中的集群信息表中确定与元数据所对应的目标分布式存储集群;从目标关系型数据库中的元数据信息表中确定第二对象存储网关。
在本申请的一些实施例中,上述集群信息表中包括:集群标识、集群的可读写状态、集群地址信息;元数据信息表中包括所述目标文件所在的集群标识、目标文件的文件信息、文件的写入状态。其中,所述目标文件的文件信息包括目标文件的标识,名称,文件类型,文件大小和文件写入状态。
在本申请的一些实施例中,上述集群的可读写状态和文件的写入状态通过以下方式确定:关系型数据库集群中的关系型数据库响应于目标对象的修改请求,对所述集群的可读写状态和所述文件的写入状态进行修改;其中,在检测到触发事件时,触发对第二对象存储网关存储的文件执行与修改后的集群的可读写状态和所述文件的写入状态对应的操作。
具体地,当对集群维护时,可以将集群标记为不可读写状态;当集群剩余存储空间不足时,可以设置集群为只读状态。
步骤S310,第一对象存储网关将所述访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
采用上述实施例提供的方案,由于在文件下载过程中,由第一对象存储网关来处理访问请求,并且在第一对象存储网关处理访问请求前,会有负载均衡网关按照预设权重来分配访问请求到对应的第一对象存储网关,因此能够减轻RGW的工作量,提高了分布式数据库的工作性能。
实施例2
根据本发明实施例,提供了一种数据上传方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的数据上传方法,如图4所示,该方法应用于分布式存储***中,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,包括如下步骤:
步骤S402,第一对象存储网关接收文件上传请求;
步骤S404,第一对象存储网关获取文件上传请求所对应待上传文件的元数据;
步骤S406,第一对象存储网关将元数据发送至关系型数据库集群中进行存储,以及将待上传数据发送至分布式存储集群中的第二对象存储网关。
在本申请的一些实施例中,上述文件上传请求为多个。
在本申请的一些实施例中,将待上传数据发送至分布式存储集群中的第二对象存储网关之前,负载均衡网关会接收多个文件上传请求,然后从预设网关列表中按照预设权重选择第一对象存储网关,其中,预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的文件上传请求数量越大。
在本申请的一些实施例中,在待上传文件的上传类型为分片上传时,第一对象存储网关将从文件上传请求中获取第一类元数据;以及在待上传文件对应的所有分片上传完成后,向第二对象存储网关中发送请求消息,并接收第二对象存储网关反馈的与请求消息对应的第二类元数据;而当待上传文件的上传类型为以form表单的方式上传时,第一对象存储网关从待上传数据中获取第一类元数据。
其中,第一类元数据包括:待上传文件对应的集群标识、待上传文件的文件信息、文件的写入状态;第二类元数据包括:文件大小。
具体地,当文件的数据量较大,需要分片上传时,分片上传的内容中只有文件内容,而没有元数据。此时,可以从http请求中获得该文件的文件类型和标识,而文件的大小则需要通过向RGW发送请求来获取。当上传的文件为通过客户端或APP上传的form表单时,上传的数据中会包含元数据和数据内容。
为了便于理解上述文件上传步骤,下面结合一个具体实例对上述步骤进行解释说明。在上传文件时,上层应用通过域名bucketname.oss.demo.com访问对象存储网关,经过dns解析到某一个L4 Loadbalancer上;然后请求被转发到openresty+lua存储网关,存储网关根据加权轮询算法,将请求转发到后端某一Ceph集群的RGW;最后openresty+lua存储网关将文件元数据写入MySQL集群,并响应客户端。
用上述实施例提供的方案,由于在文件上传过程中,负载均衡网关会接收多个文件上传请求,然后从预设网关列表中按照预设权重选择第一对象存储网关,因此,能够减轻RGW的工作量,从而提高分布式存储***的工作效率。
实施例3
根据本发明实施例,还提供了一种如图5所示的数据下载装置,该装置应用于分布式存储***中的第一对象存储网关,用于执行如图2所示的数据下载方法,其中,该数据下载装置包括:第一处理模块50,用于接收访问请求;获取模块52,用于获取访问请求中的目标文件标识;第一查找模块54,用于从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第二查找模块56,用于从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第二处理模块58,用于将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
由于如图5所示的数据下载装置用于执行如图3所示的数据下载方法,因此,实施例1中的相关解释说明也适用于本实施例中。
实施例4
根据本发明实施例,还提供了一种如图6所示的数据下载装置,该装置应用于分布式存储***中的第一对象存储网关,用于执行如图4所示的数据上传方法,其中,该数据上传装置包括:处理模块60,用于接收文件上传请求;获取模块62,用于获取文件上传请求所对应待上传文件的元数据;发送模块64,用于将元数据发送至关系型数据库集群中进行存储,以及将待上传数据发送至分布式存储集群中的第二对象存储网关。
由于如图6所示的数据下载装置用于执行如图4所示的数据上传方法,因此,实施例1中的相关解释说明也适用于本实施例中。
实施例5
在本申请的一些实施例中,还提供了一种非易失性存储介质,其中,非易失性存储介质包括存储的程序,并在程序运行时控制非易失性存储介质所在设备执行下述数据下载方法:第一对象存储网关接收访问请求;第一对象存储网关获取访问请求中的目标文件标识;第一对象存储网关从关系型数据库集群中确定与目标文件标识对应的目标关系型数据库,并从目标关系型数据库中查询目标文件标识所对应目标文件的元数据,其中,元数据为目标文件的描述信息;第一对象存储网关从与第一对象存储网关对应的多个分布式存储集群中确定与元数据所对应的目标分布式存储集群以及目标分布式集群中的第二对象存储网关;第一对象存储网关将访问请求转发至目标分布式集群中的第二对象存储网关,以从第二对象存储网关中获取目标文件。
实施例6
在本申请的一些实施例中,还提供了一种非易失性存储介质,其中,非易失性存储介质包括存储的程序,并在程序运行时控制非易失性存储介质所在设备执行下述数据上传方法:第一对象存储网关接收文件上传请求;第一对象存储网关获取文件上传请求所对应待上传文件的元数据;第一对象存储网关将元数据发送至关系型数据库集群中进行存储,以及将待上传数据发送至分布式存储集群中的第二对象存储网关。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种数据下载方法,其特征在于,该方法应用于分布式存储***中,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,所述方法包括:
所述第一对象存储网关接收访问请求;
所述第一对象存储网关获取所述访问请求中的目标文件标识;
所述第一对象存储网关从所述关系型数据库集群中确定与所述目标文件标识对应的目标关系型数据库,并从所述目标关系型数据库中查询所述目标文件标识所对应目标文件的元数据,其中,所述元数据为所述目标文件的描述信息;
所述第一对象存储网关从与所述第一对象存储网关对应的多个分布式存储集群中确定与所述元数据所对应的目标分布式存储集群以及所述目标分布式集群中的第二对象存储网关;
所述第一对象存储网关将所述访问请求转发至所述目标分布式集群中的所述第二对象存储网关,以从所述第二对象存储网关中获取所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述分布式存储***中包括:负载均衡网关;所述第一对象存储网关接收访问请求,包括:
所述第一对象存储网关接收来自所述负载均衡网关转发的所述访问请求。
3.根据权利要求2所述的方法,其特征在于,所述第一对象存储网关接收来自所述负载均衡网关转发的所述访问请求之前,所述方法还包括:
所述负载均衡网关接收多个所述访问请求;从预设网关列表中按照预设权重选择所述第一对象存储网关,其中,所述预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的访问请求数量越大。
4.根据权利要求1所述的方法,其特征在于,所述第一对象存储网关从与所述第一对象存储网关对应的多个分布式存储集群中确定与所述元数据所对应的目标分布式存储集群以及所述目标分布式集群中的第二对象存储网关,包括:
所述第一对象存储网关从所述目标关系型数据库中的集群信息表中确定与所述元数据所对应的目标分布式存储集群;从所述目标关系型数据库中的元数据信息表确定所述第二对象存储网关。
5.根据权利要求4所述的方法,其特征在于,所述集群信息表中包括以下至少之一:集群标识、集群的可读写状态、集群地址信息;所述元数据信息表中包括以下至少之一:所述目标文件所在的集群标识、所述目标文件的文件信息、文件的写入状态、文件大小。
6.根据权利要求5所述的方法,其特征在于,所述集群的可读写状态和所述文件的写入状态通过以下方式确定:所述关系型数据库集群中的关系型数据库响应于目标对象的修改请求,对所述集群的可读写状态和所述文件的写入状态进行修改;其中,在检测到触发事件时,触发对第二对象存储网关存储的文件执行与修改后的集群的可读写状态和所述文件的写入状态对应的操作。
7.一种数据上传方法,其特征在于,该方法应用于分布式存储***中,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,所述方法包括:
所述第一对象存储网关接收文件上传请求;
所述第一对象存储网关获取所述文件上传请求所对应待上传文件的元数据;
所述第一对象存储网关将所述元数据发送至关系型数据库集群中进行存储,以及将所述待上传数据发送至分布式存储集群中的第二对象存储网关。
8.据权利要求7所述的方法,其特征在于,所述文件上传请求为多个;将所述待上传数据发送至分布式存储集群中的第二对象存储网关之前,所述方法还包括:
负载均衡网关接收多个所述文件上传请求;从预设网关列表中按照预设权重选择所述第一对象存储网关,其中,所述预设权重为预设网关列表中各个网关的权重,权重越大,被分配的并行处理的文件上传请求数量越大。
9.据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述待上传文件的上传类型为分片上传时,所述第一对象存储网关从所述文件上传请求中获取第一类元数据;以及在所述待上传文件对应的所有分片上传完成后,向所述第二对象存储网关中发送请求消息,并接收所述第二对象存储网关反馈的与所述请求消息对应的第二类元数据;
在所述待上传文件的上传类型为以form表单的方式上传时,从所述待上传数据中获取所述第一类元数据。
10.根据权利要求9所述的方法,其特征在于,所述第一类元数据包括:所述待上传文件对应的集群标识、所述待上传文件的文件信息、文件的写入状态;所述第二类元数据包括:文件大小。
11.一种分布式存储***,其特征在于,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群;其中,
所述第一对象存储网关,用于接收访问请求;获取所述访问请求中的目标文件标识;从所述关系型数据库集群中确定与所述目标文件标识对应的目标关系型数据库,并从所述目标关系型数据库中查询所述目标文件标识所对应目标文件的元数据,其中,所述元数据为所述目标文件的描述信息;从与所述第一对象存储网关对应的多个分布式存储集群中确定与所述元数据所对应的目标分布式存储集群以及所述目标分布式集群中的第二对象存储网关;以及将所述访问请求转发至所述目标分布式集群中的所述第二对象存储网关,以从所述第二对象存储网关中获取所述目标文件;
所述关系型数据库集群,用于存储所述元数据;
所述分布式存储集群,用于存储所述目标文件。
12.一种数据下载装置,其特征在于,该装置应用于分布式存储***中的第一对象存储网关,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,所述装置包括:
第一处理模块,用于接收访问请求;
获取模块,用于获取所述访问请求中的目标文件标识;
第一查找模块,用于从所述关系型数据库集群中确定与所述目标文件标识对应的目标关系型数据库,并从所述目标关系型数据库中查询所述目标文件标识所对应目标文件的元数据,其中,所述元数据为所述目标文件的描述信息;
第二查找模块,用于从与所述第一对象存储网关对应的多个分布式存储集群中确定与所述元数据所对应的目标分布式存储集群以及所述目标分布式集群中的第二对象存储网关;
第二处理模块,用于将所述访问请求转发至所述目标分布式集群中的所述第二对象存储网关,以从所述第二对象存储网关中获取所述目标文件。
13.一种数据上传装置,其特征在于,该装置应用于分布式存储***中的第一对象存储网关,所述分布式存储***中包括:第一对象存储网关、分布式存储集群和关系型数据库集群,所述装置包括:
处理模块,用于接收文件上传请求;
获取模块,用于获取所述文件上传请求所对应待上传文件的元数据;
发送模块,用于将所述元数据发送至关系型数据库集群中进行存储,以及将所述待上传数据发送至分布式存储集群中的第二对象存储网关。
14.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至6中任意一项所述数据下载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110809233.6A CN115623081A (zh) | 2021-07-16 | 2021-07-16 | 数据下载方法、上传方法及分布式存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110809233.6A CN115623081A (zh) | 2021-07-16 | 2021-07-16 | 数据下载方法、上传方法及分布式存储*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115623081A true CN115623081A (zh) | 2023-01-17 |
Family
ID=84855042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110809233.6A Pending CN115623081A (zh) | 2021-07-16 | 2021-07-16 | 数据下载方法、上传方法及分布式存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115623081A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737466A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | 备份处理方法、装置、***、电子设备及可读存储介质 |
-
2021
- 2021-07-16 CN CN202110809233.6A patent/CN115623081A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737466A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | 备份处理方法、装置、***、电子设备及可读存储介质 |
CN116737466B (zh) * | 2023-08-15 | 2023-11-03 | 中移(苏州)软件技术有限公司 | 备份处理方法、装置、***、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061917B1 (en) | Method and system for transparent database query caching | |
US9787780B1 (en) | Method and apparatus for web based storage on-demand | |
CN106506587B (zh) | 一种基于分布式存储的Docker镜像下载方法 | |
US10659523B1 (en) | Isolating compute clusters created for a customer | |
CN105579965B (zh) | 经由提供商定义接口的客户端驻地资源控制 | |
US8484242B1 (en) | Method and system for transparent database connection pooling and query queuing | |
US10592475B1 (en) | Consistent data storage in distributed computing systems | |
CA2890411C (en) | System and method for managing dedicated caches | |
Krishnan et al. | Google compute engine | |
US20060117046A1 (en) | Distributed storage network | |
US11388234B2 (en) | Infrastructure for deploying a security information and event management application on a container platform | |
CN107547250A (zh) | 在云计算管理平台中部署数据库的方法和装置 | |
CN103329113A (zh) | 配置用于分级高速缓存的代理服务器以及动态站点加速和自定义对象和相关的方法 | |
CN112256399B (zh) | 基于Docker的Jupyter Lab多用户远程开发方法及*** | |
CN106648838B (zh) | 一种资源池管理的配置方法及装置 | |
US9172744B2 (en) | Scalable storage with programmable networks | |
CN105071965A (zh) | 一种网络设备的管理*** | |
US11765244B1 (en) | Latency-based service discovery and routing for multi-location service-oriented applications | |
CN115623081A (zh) | 数据下载方法、上传方法及分布式存储*** | |
CN112583760A (zh) | 一种对象存储的访问方法、装置、设备和计算机存储介质 | |
CN113885797A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN106254411A (zh) | 用于提供服务的***、服务器***及方法 | |
US11650869B2 (en) | Quantum computing service with local edge devices supporting multiple quantum computing technologies | |
CN108829340B (zh) | 存储处理方法、装置、存储介质及处理器 | |
US20220342707A1 (en) | Infrastructure for deploying a security information and event management application on a container platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |