CN112583760A - 一种对象存储的访问方法、装置、设备和计算机存储介质 - Google Patents
一种对象存储的访问方法、装置、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN112583760A CN112583760A CN201910923474.6A CN201910923474A CN112583760A CN 112583760 A CN112583760 A CN 112583760A CN 201910923474 A CN201910923474 A CN 201910923474A CN 112583760 A CN112583760 A CN 112583760A
- Authority
- CN
- China
- Prior art keywords
- storage
- storage cluster
- access request
- bucket
- accessed
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1046—Joining mechanisms
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种对象存储的访问方法、装置、设备和计算机存储介质,该方法包括:获取对象存储的存储集群的访问请求;对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。如此,在根据访问请求的解析结果确定需要访问的存储集群时,可以将访问请求发送给对应的存储集群,进而,可以实现通过统一入口来访问多个存储集群,从而构造EB级别的对象存储集群。
Description
技术领域
本发明涉及对象存储领域,尤其涉及一种对象存储的访问方法、装置、设备和计算机存储介质。
背景技术
在对象存储服务中,一个存储集群主要由对象存储设备(Object StorageDevice,OSD)集群、监控(Monitor,MON)集群、对象存储网关(RADOS Gateway,RGW)集群以及负载均衡机器组成,其中OSD集群和MON集群统称为对象存储节点;且数据中心是由一个或多个存储集群组成的。
由于受机房供电等条件限制,一个存储集群中的存储节点数量是有限的,无法做到艾字节(EB)级别的存储,当需要搭建多个存储集群时,由于对象存储中一个桶(桶用来存储数据)只能属于一个存储集群,且多个存储集群是相互独立的,因此客户端必须配置多个对应存储集群的访问入口才能访问到不同存储集群的桶内文件,即,访问不同存储集群的桶的实现方式较为复杂。
发明内容
本发明实施例期望提供一种对象存储的访问方法、装置、设备和计算机存储介质。
本发明的技术方案是这样实现的:
本发明实施例提供了一种对象存储的访问方法,所述方法包括:
获取对象存储的存储集群的访问请求;
对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;
基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
可选地,所述对象存储网关节点设置有分别与所述各存储集群对应的各连接进程,每个连接进程用于实现所述对象存储网关节点与对应的存储集群的连接。
可选地,所述对所述访问请求进行解析,得到解析结果,包括:
确定所述访问请求中携带的需要访问的网络地址信息;
所述访问请求为存储集群的桶的访问请求时,从所述网络地址信息中获取所要访问的第一桶的标识信息,根据所述第一桶的标识信息,确定出所述需要访问的存储集群。
可选地,在根据所述第一桶的标识信息,确定出所述需要访问的存储集群之后,所述方法还包括:
确定所述第一桶的标识信息与所述需要访问的存储集群的对应关系,将所述对应关系存储在缓存中;
再次接收到存储集群的桶的访问请求后,根据再次接收的所述桶的访问请求确定出所要访问的第一桶的标识信息时;根据所述缓存中的对应关系,确定出所述需要访问的存储集群。
可选地,在根据所述需要访问的网络地址信息,确定出所述需要访问的存储集群之后,所述方法具体还包括:
在将所述对应关系存储在缓存后,等待设定时长,将所述缓存中存储的所述对应关系标记为失效,或者,将所述缓存中的所述对应关系删除。
可选地,所述对所述访问请求进行解析,得到解析结果,包括:
所述访问请求为存储集群的桶的创建请求,且所述访问请求中携带有指定的存储集群的标识信息时,确定出所述需要访问的存储集群,所述需要访问的存储集群为所述指定的存储集群;
所述访问请求为所述存储集群的桶的创建请求,且所述访问请求中未携带任意一个存储集群的标识信息时,根据设定策略确定出目标存储集群,所述需要访问的存储集群为所述目标存储集群。
可选地,所述根据设定策略确定出目标存储集群,包括:
根据所述各存储集群的剩余可用空间、以及所述访问请求来源的网络地址与所述各存储集群对应的网关节点的网络地址的距离,确定出目标存储集群。
可选地,所述各存储集群包括至少一个主存储集群和至少一个备用存储集群,所述主存储集群和所述备用存储集群分别采用不同的数据存储方式进行存储。
本发明实施例提供了一种对象存储的访问装置,所述装置包括:获取模块、第一处理模块和第二处理模块;其中,
获取模块,用于获取对象存储的存储集群的访问请求;
第一处理模块,用于对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;
第二处理模块,用于基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
本发明实施例还提供了一种对象存储的访问设备,应用于对象存储网关节点中,所述设备包括:处理器和用于能够在处理器上运行的计算机程序的存储器,
所述处理器用于运行所述计算机程序时,执行上述任意一种对象存储的访问方法。
本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种对象存储的访问方法。
本发明实施例中,首先获取对象存储的存储集群的访问请求;然后对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;最后,基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。如此,由于预先建立了对象存储网关节点与各存储集群的连接,在根据访问请求的解析结果确定需要访问的存储集群时,可以将访问请求发送给对应的存储集群,进而,可以实现通过统一入口来访问多个存储集群,从而构造EB级别的对象存储集群。
附图说明
图1为本发明实施例的对象存储的访问方法的流程的示意图;
图2为相关技术中使用ceph实现存储服务的架构示意图;
图3为本发明应用实施例中使用统一域名访问多个对象存储集群的架构示意图;
图4为本发明应用实施例中一个对象存储网关节点的处理流程示意图;
图5为本发明实施例的对象存储的访问装置的组成结构示意图;
图6为本发明实施例的对象存储的访问设备的组成结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本发明实施例提供的对象存储的访问方法包含了一系列的步骤,但是本发明实施例提供的对象存储的访问方法不限于所记载的步骤,同样地,本发明实施例提供的对象存储的访问装置包括了一系列模块,但是本发明实施例提供的装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本发明实施例可以应用于对象存储网关节点等设备中,其可与众多其它通用或专用计算系统环境或配置一起操作。对象存储网关节点等设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
需要说明的是,以上仅仅是对本发明的应用场景进行了举例说明,本发明实施例并不限定于上述记载的应用场景,基于上述记载的应用场景,提出以下各实施例。
第一实施例
本发明第一实施例提出了一种对象存储的访问方法,图1为本发明实施例的对象存储的访问方法的流程的示意图,如图1所示,该流程可以包括:
步骤101:获取对象存储的存储集群的访问请求。
这里,对象存储的存储集群可以是对一个或多个存储集群的统称。
对于本步骤的实现方式,示例性地,可以接收用户终端发送的对象存储的存储集群的访问请求,该访问请求通过网络到达公共网络地址后,可以通过网络地址转换,将该访问请求转到对象存储网关节点,例如,用户终端发送超文本传输协议(Hyper TextTransfer Protocol,HTTP)请求后,该HTTP请求通过网络到达公共网络,通过对公共网络的互联网协议(Internet Protocol,IP)地址进行网络地址转换(Network AddressTranslation,NAT)映射,将该HTTP请求转到对象存储网关节点。
步骤102:对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群。
在实际应用中,可以在对象存储网关节点中设置具有域名系统(Domain NameSystem,DNS)解析功能的代理服务器,当对象存储网关节点获取到访问请求时,可以利用代理服务器对访问请求进行解析;例如,代理服务器可以为web代理服务器openresty,如此,可以使用openresty对访问请求进行解析。
本发明实施例中,并不对访问请求的种类进行限定,示例性地,访问请求可以是存储集群中桶的访问请求,也可以是在存储集群中创建桶的请求。
对于对所述访问请求进行解析,得到解析结果的实现方式,在一个示例中,可以先确定访问请求中携带的需要访问的网络地址信息,然后,根据需要访问的网络地址信息,确定出需要访问的存储集群,进而可以得到对访问请求的解析结果。
这里的网络地址信息可以是域名信息、网络节点属性、访问请求地址等。对于根据所述需要访问的网络地址信息,确定出所述需要访问的存储集群的实现方式,示例性地,可以在上述访问请求为存储集群的桶的访问请求时,从上述网络地址信息中获取所要访问的第一桶的标识信息,根据第一桶的标识信息,确定出需要访问的存储集群。
这里,第一桶表示所要访问的任意桶,第一桶的标识信息可以是桶的名字或其它标识信息;在实际应用中,可以通过openresty对访问请求进行解析,得出访问请求的请求头中的网络节点属性(HOST)信息和统一资源标识符(Uniform Resource Identifier,URI)信息,然后从HOST信息或URI信息中确定出第一桶的名称。
在一个具体的示例中,当上述访问请求为存储集群的桶的访问请求时,可以先判断当前网络地址信息中的HOST信息的格式是否为域名格式,如果是,则将HOST信息和域名进行比较,以获得需要访问的第一桶的名称;如果否,则从URI中获取需要访问的第一桶的名称;具体地,将HOST信息和域名进行比较后,如果获得的第一桶的名称不为空,可以直接获得需要访问的第一桶的名称;如果获得的第一桶的名称为空,可以从URI中获取需要访问的第一桶的名称。
对于根据第一桶的标识信息,确定出需要访问的存储集群的实现方式,示例性地,可以根据第一桶的标识信息,生成查询第一桶所在的存储集群的查询请求,进而得到查询请求对应的查询结果;在实际实施时,可以预先确定每个存储集群对应的各个桶的标识信息,如此,可以根据上述查询请求确定出第一桶所在的存储集群。
在实际应用中,可以通过上述代理服务器向对象存储网关节点上设置的查询进程,查询需访问的桶所在的存储集群,这里的查询进程可以是指专用于接收查询桶所在的存储集群查询请求的进程。作为一种实施方式,可以预先将各存储集群的元数据进行同步,这里,元数据可以包括存储集群存储的数据的属性信息,例如,元数据可以包括存储集群存储的数据所在的桶和存储集群;这样,由于各存储集群之间的元数据是同步的,因此,可以是向各存储集群中的任一个存储集群对应的对象存储网关节点发送查询请求,以获得需访问的桶所在的存储集群。
可以看出,在访问请求为存储集群的桶的访问请求时,通过对访问请求的解析,可以直接确定出所要访问的第一桶的标识信息,进而可以确定出需要访问的存储集群,如此,便于后续实现对相应存储集群的访问。
进一步地,可以在根据所述第一桶的标识信息,确定出所述需要访问的存储集群之后,确定第一桶的标识信息与需要访问的存储集群的对应关系,将所述对应关系存储在缓存中;当再次接收到存储集群的桶的访问请求后,如果根据再次接收的所述桶的访问请求确定出所要访问的第一桶的标识信息;可以根据所述缓存中的对应关系,确定出所述需要访问的存储集群。
在一个具体的示例中,可以将第一桶的标识信息与需要访问的存储集群的对应关系作为字典的键和值,保存到本地运行的memcached分布式缓存中。
可以看出,在收到第一桶的访问请求后,如果再次接收到第一桶的访问请求,可以直接从缓存中确定需要访问的存储集群,无需在对象存储网关节点中进行查询,而由于缓存的读取速度较快,如此,可以在多次接收到相同桶的访问请求时,快速查找到相应的需要访问的存储集群。
作为一种实现方式,可以在将所述对应关系存储在缓存后,等待设定时长,将所述缓存中存储的所述对应关系标记为失效,或者,将所述缓存中的所述对应关系删除,如此,可以避免对同一桶进行频繁访问时,在有效时长内需要反复查询和存储的问题,减少了工作量。
对于对所述访问请求进行解析,得到解析结果的实现方式,在另一个示例中,当上述访问请求为存储集群的桶的创建请求,且访问请求中携带有指定的存储集群的标识信息时,可以确定出需要访问的存储集群,需要访问的存储集群为指定的存储集群;当上述访问请求为存储集群的桶的创建请求,且访问请求中未携带任意一个存储集群的标识信息时,可以根据设定策略确定出目标存储集群,需要访问的存储集群为所述目标存储集群。
这里,需要访问的存储集群为需要创建桶的存储集群;存储集群的标识信息可以是存储集群的名称或其它标识信息,本发明实施例对此并不进行限定。
可以看出,当访问请求为存储集群的桶的创建请求,可以根据访问请求中携带的内容,灵活地确定需要创建桶的存储集群。
对于根据设定策略确定出目标存储集群的实现方式,示例性地,可以是根据各存储集群的剩余可用空间、以及访问请求来源的网络地址与各存储集群对应的网关节点的网络地址的距离,确定出目标存储集群。
例如,确定桶所在的目标存储集群的具体方式是,根据算法1确定目标集群,下面对算法1进行说明。
在算法1中,可以根据公式l[i]=zonegroupslist[i].freedisk/zonegroupslist[i].ip_distance,确定l[i]最大时的i所对应的zonegroupslist[i].name为选中的目标存储集群的名称;其中,zonegroupslist[i].freedisk表示各存储集群中第i个存储集群的剩余可用空间,zonegroupslist[i].ip_distance表示访问请求来源(客户端)的IP地址与各存储集群中第i个存储集群的IP地址之间的距离,zonegroupslist[]为不同存储集群的数组,每个存储集群的数组至少表示存储集群名称、存储集群剩余可用空间、以及对象存储网关节点IP地址到访问请求来源(客户端)的IP地址的距离,zonegroupslist[i]=(name,freedisk,ip_distance),name表示存储集群名称,freedisk表示存储集群剩余可用空间,ip_distance表示存储集群对应的网关节点与访问请求来源(客户端)的IP地址之间的距离;这里,可以用zonegroupslist[i]表示数组zonegroupslist[]的第i个元组,zonegroupslist[i].name表示各存储集群中第i个存储集群的名称;也可以用clientip表示访问请求来源(客户端)的IP地址。
可以看出,通过综合考虑各存储集群的剩余可用空间、以及所述访问请求来源的网络地址与所述各存储集群对应的网关节点的网络地址的距离,可以合理地确定出需要创建桶的目标存储集群。
步骤103:基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
本发明实施例中,可以基于对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及确定的目标存储集群,通过对象存储网关节点将访问请求发送给确定的目标集群。
作为一种实现方式,对象存储网关节点设置有分别与各存储集群对应的各连接进程,每个连接进程用于实现与所述对象存储网关节点与对应的存储集群的连接;这样,在确定需要访问的存储集群后,可以通过运行相应的连接进程,实现对象存储网关节点与对应的存储集群的连接,进而将访问请求转发至所述需要访问的存储集群。这里,可以是各连接进程连接不同的存储集群,监听在不同的网络端口上,例如,HOST1这台机器上运行3个对象存储网关进程:进程RGW7001、进程RGW8001、进程RGW9001,其中,RGW7001连接存储集群zonegroup1-zone1,RGW8001连接存储集群zonegroup2-zone3,RGW9001连接存储集群zonegroup3-zone5。
可以看出,本发明实施例中,首先获取对象存储的存储集群的访问请求;然后对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;最后,基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。如此,由于预先建立了对象存储网关节点与各存储集群的连接,在根据访问请求的解析结果确定需要访问的存储集群时,可以将访问请求发送给对应的存储集群,进而,可以实现通过统一入口来访问多个存储集群,从而构造EB级别的对象存储集群。
实际应用中,步骤101至步骤103均可以由对象存储网关节点的处理器等实现,上述对象存储网关节点上的处理器可以为特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。
本发明实施例中,所述各存储集群可以包括至少一个主存储集群和至少一个备用存储集群,所述主存储集群和所述备用存储集群用于采用不同的数据存储方式进行存储。示例性地,主存储集群的性能高于备用存储集群的性能,这里的性能可以是指读取、写入数据的速度,例如可以通过固态驱动器(Solid State Drive SSD)磁盘来构建主存储集群,利用纠删码大码率来构建备用存储集群,防止坏盘情况的发生的同时,降低了成本。
第二实施例
在本发明第一实施例的基础上,下面通过具体的应用实施例进行进一步的举例说明。
该应用实施例可以应用于云计算领域,可以涉及多个ceph分布式对象存储调度;这里,ceph是目前主流的分布式存储系统,可以支持对象存储、块存储、文件存储等存储方式;其中对象存储可以通过对象存储网关节点,对外提供S3接口和Swift接口的对象存储服务。
可选地,该应用实施例中还可以涉及openresty,openresty是一种网络(web)代理服务器,能够代理转发前端的请求给后端的服务器。
图2为相关技术中使用ceph实现存储服务的架构示意图,如图2所示,在该架构中,将所有存储设备作为OSD集群,然后,外加3-5台管理型设备作为MON集群;另外,可以增加RGW集群和负载均衡节点,这里,负载均衡节点可以通过keepalived高可用软件以及Linux虚拟服务器(Linux Virtual Server,LVS)(对应图2中keepalived+lvs)等实现。
参照图2,客户端可以通过keepalived高可用软件以及LVS实现与RGW集群的交互,进而可以实现与MON集群和OSD集群的交互。
图3为本发明应用实施例中使用统一域名访问多个对象存储集群的架构示意图,如图3所示,对于EB级别的对象存储,zonegroup1-zone1、zonegroup1-zone2、zonegroup2-zone3、zonegroup2-zone4、zonegroup3-zone5和zonegroup3-zone6的6个不同的存储集群,zonegroup1-zone1和zonegroup1-zone2之间通过配置多数据中心(Ceph multi-site)的主备方式,实现上传数据的同步,由于zonegroup1-zone1、zonegroup1-zone2分别处在城市c1和c2,从而可以实现异地灾备的功能。zonegroup1-zone1、zonegroup2-zone3和zonegroup3-zone5都在城市c1,zonegroup1-zone2、zonegroup2-zone4和zonegroup3-zone6都在城市c2,6个对象存储集群都可以通过统一域名(例如s3.cmecloud.cn)访问;图3中,zonegroup1-zone1外的其它存储集群都与zonegroup1-zone1进行元数据同步(MetaData Sync),zonegroup1-zone1和zonegroup1-zone2进行数据同步(Data Sync),zonegroup2-zone3和zonegroup2-zone4进行数据同步,zonegroup3-zone5和zonegroup3-zone6进行数据同步;这里,所有的元数据都会先发送至zonegroup1-zone1,然后可通过元数据同步,基于zonegroup1-zone1中的元数据更新zonegroup1-zone2、zonegroup2-zone3、zonegroup2-zone4、zonegroup3-zone5和zonegroup3-zone6中的元数据,保持6个存储集群中的元数据的同步。
这里,在基于统一域名实现对不同的存储集群的访问时,可以通过DNS解析功能,实现本地域名解析;在域名商处的DNS解析可以通过以下示例进行说明:s3.cmecloud.cn会被就近解析到10.1.1.1(zonegroup1-zone1对应的网关节点的公网IP地址)、10.1.2.1(zonegroup1-zone2对应的网关节点的公网IP地址)、10.1.1.2(zonegroup2-zone3对应的网关节点的公网IP地址)、10.1.2.2(zonegroup2-zone4对应的网关节点的公网IP地址)、10.1.1.3(zonegroup3-zone5对应的网关节点的公网IP地址)和10.1.2.3(zonegroup3-zone6对应的网关节点的公网IP地址)。
其中一个集群内的一台网关节点的架构如图4所示。
图4为本发明应用实施例中一个对象存储网关节点的处理流程示意图,图4中,zonegroup1-zone1 RADOS、zonegroup1-zone2 RADOS、zonegroup2-zone3 RADOS、zonegroup2-zone4 RADOS、zonegroup3-zone5 RADOS和zonegroup3-zone6 RADOS分别表示6个基于RADOS(Reliable,Autonomic Distributed Object Store)的不同的存储集群,RGWHOST1表示任意一个存储集群对应的对象存储网关节点,REST请求表示客户端发送的HTTP请求,RGW7001、RGW8001和RGW9001分别表示上述记载的实例RGW7001、实例RGW8001和实例RGW9001;memcached表示采用memcached缓存技术进行数据缓存,dnsmasq表示DNS解析功能,RGWSYNC表示实现不同存储集群的数据同步的进程,可以记为RGWSYNC实例;RGWadmin表示实现查询桶所在的存储集群的功能的进程,可以记为RGWadmin实例。
参照图4,当访问请求为访问存储集群的桶的请求时,本发明应用实施例的对象存储的访问方法的流程可以包括:
步骤A1:接收客户端发送的HTTP请求(对应图4中的REST请求),通过对该HTTP请求的解析,得出需要访问的桶的名称。
具体地,客户端发送的HTTP请求表示访问请求,HTTP请求经过网络到达公网后,经过网络地址转换(Network Address Translation,NAT)映射后,该HTTP请求可以被转到对象存储网关节点后端的openresty,openresty接收到HTTP请求后,可以解析出请求头中的HOST信息和URI信息,然后从HOST信息或URI信息中确定出需要访问的桶的名称(对应图4中的解析出桶名)。
Openresty解析请求头文件的流程可以包括:
A11:判断HOST信息的格式是否为域名格式,若HOST信息的格式是域名格式,则将HOST信息和域名s3.cmecloud.cn进行比较,获得桶的名称。若HOST信息的格式不是域名格式(例如为IP地址10.1.1.1),进入步骤A12。
例如,当HOST信息是bucket1.s3.cmecloud.cn时,将HOST信息和域名s3.cmecloud.cn进行比较,可以获得桶的名称为bucket1。当HOST信息和域名s3.cmecloud.cn相同,则比较后的桶名称为空,则进入步骤A12。
步骤A12:从URI信息中获取桶的名称。
例如,当URI信息为http://10.1.1.1/bucket1/*时,获取桶的名字为bucket1当URI信息为http://s3.cmecloud.cn/bucket2/*时,获取桶的名字为bucket2;当URI为http://bucket3.cmecloud.cn/*时,获取桶的名字为bucket3。
步骤A2:在得出桶的名称后,可以向本地的RGWadmin实例发送查询桶所在的存储集群的查询请求(例如可以是HTTP GET请求),根据查询结果,将桶的访问请求转发至对应查询到的存储集群。
这里的RGWadmin网关实例可以用于接收查询桶所在的存储集群的查询请求,并根据接收到查询请求进行查询。
这里,在查询得到桶所在的存储集群后,例如在查询得到桶所在的存储集群是zonegroup1-zone1、zonegroup1-zone2、zonegroup2-zone3、zonegroup2-zone4、zonegroup3-zone5和zonegroup3-zone6中的任意一个存储集群后,将桶的名字和存储集群的对应关系作为字典的键(key)和值(Value),采用memcached缓存技术进行本地缓存。
当再次接收到HTTP请求时,先通过解析再次接收的HTTP请求,确定再次接收的HTTP请求对应的需要访问的桶的名称,这里,可以将再次接收的HTTP请求对应的需要访问的桶的名称作为第一桶的名称,如果在memcached缓存中能够查询到第一桶的名称对应的存储集群,则可以直接通过读取缓存,确定需要访问的桶所在的存储集群;如果在memcached缓存中不能够查询到特定桶的名称对应的存储集群,则可以在获取到第一桶的名称后,通过openresty向本地的RGWadmin实例发送查询桶所在的存储集群的查询请求,确定第一桶所在的存储集群并更新memcached缓存。
本发明应用实施例中,可以通过设置memcached缓存的有效时间来保证memcached缓存中的数据和向RGWadmin实例查询获得的数据的一致性。且,每个对象存储网关节点上可以启动RGWSync进程,来进行数据的跨城市异地备份;所有存储集群对应的RGWadmin实例都可以用于实现与zonegroup1-zone1的连接,以保证查询到的桶位置信息都是最新的。
为了支持访问到存储集群的两种方式,即桶名在后(Path Style)和桶名在前(Vitual HOST Style),可以在每个对象存储网关节点上部署dnsmasq DNS服务,用于内部解析域名。
例如,zonegroup1-zone1对应的对象存储网关节点上的DNS解析配置为:
10.1.1.1(集群1公网)解析到本机127.0.0.1
10.1.1.2(集群3公网)解析到本机127.0.0.1
10.1.1.3(集群5公网)解析到本机127.0.0.1
10.1.2.1(集群2公网)解析到本机127.0.0.1
10.1.2.2(集群4公网)解析到本机127.0.0.1
10.1.2.3(集群6公网)解析到本机127.0.0.1
s3.cmecloud.cn解析到本机127.0.0.1
*.s3.cmecloud.cn解析到本机127.0.0.1
这里,集群1至集群6分别表示zonegroup1-zone1、zonegroup1-zone2、zonegroup2-zone3、zonegroup2-zone4、zonegroup3-zone5和zonegroup3-zone6。
步骤A3:由某台RGW处理存储集群的桶的访问请求。
这里,访问请求是被存储集群zonegroup1-zone1、zonegroup1-zone2,zonegroup2-zone3、zonegroup2-zone4、zonegroup3-zone5和zonegroup3-zone6中的某一个存储集群对应的RGW所处理,进而,完成用户的桶的管理和对象管理的操作。
通过上述步骤A1至A3可以实现通过一个域名s3.cmecloud.cn来访问6个不同的存储集群,从用户层面上来看,该6个不同的存储集群就是一个大的集群,为了实现EB级别的跨城市灾备的对象存储集群,只要继续横向扩展增加zonegroup4,zonegroup5,zonegroup6...就可以达到扩充存储空间的目标,同时也不会导致已有的数据的重平衡,极具扩展性。
对于还没有创建桶的情况,则需要先创建桶,然后才能对创建好的桶进行访问。
这里,当上述访问请求为创建桶的请求时,本发明应用实施例的对象存储的访问方法的流程可以包括:
步骤B1:判断创建桶的请求的请求体是否为空,如果否,则根据请求体中的内容确定出指定存储集群,向指定的存储集群发送创建桶的请求,以实现在指定的存储集群中创建桶;如果是,则执行步骤B2。
这里,创建桶的请求可以包括请求的类型、请求体和存储集群名等信息。
在一个具体的示例中,
HTTP请求类型为PUT。
uri地址为:http://s3.cmecloud.cn/桶名或http://桶名.s3.cmecloud.cn。
请求体可以表示为:
<CreateBucketConfiguration
xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><LocationConstraint>
存储集群名可以为:</LocationConstraint></CreateBucketConfiguration>。
步骤B2:根据设定策略确定出目标存储集群,向目标存储集群发送创建桶的请求,以实现在目标存储集群中创建桶。
具体地,如果请求体为空,代表用户不指定桶创建的存储集群,此时可以通过算法1得到目标存储集群,将桶创建在目标存储集群,将请求转发到该目标存储集群,并在接收转发请求的网关节点的memcached缓存中,存入桶名和对应的目标存储集群的键值。
第三实施例
在前述实施例提出的对象存储的访问方法的基础上,本发明实施例提出了一种对象存储的访问装置。图5为本发明实施例的对象存储的访问装置的组成结构示意图一,如图5所示,该装置包括:获取模块501、第一处理模块502、第二处理模块503,其中,
获取模块501,用于获取对象存储的存储集群的访问请求;
第一处理模块502,用于对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;
第二处理模块503,用于基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
在一实施方式中,所述对象存储网关节点设置有分别与所述各存储集群对应的各连接进程,每个连接进程用于实现所述对象存储网关节点与对应的存储集群的连接。
在一实施方式中,第一处理模块502,用于确定所述访问请求中携带的需要访问的网络地址信息;所述访问请求为存储集群的桶的访问请求时,从所述网络地址信息中获取所要访问的第一桶的标识信息,根据所述第一桶的标识信息,确定出所述需要访问的存储集群。
在一实施方式中,第一处理模块502,用于在根据所述第一桶的标识信息,确定出所述需要访问的存储集群之后,确定所述第一桶的标识信息与所述需要访问的存储集群的对应关系,将所述对应关系存储在缓存中;再次接收到存储集群的桶的访问请求后,根据再次接收的所述桶的访问请求确定出所要访问的第一桶的标识信息时;根据所述缓存中的对应关系,确定出所述需要访问的存储集群。
在一实施方式中,第一处理模块502,还用于在将所述对应关系存储在缓存后,等待设定时长,将所述缓存中存储的所述对应关系标记为失效,或者,将所述缓存中的所述对应关系删除。
在一实施方式中,第一处理模块502,还用于在所述访问请求为存储集群的桶的创建请求,且所述访问请求中携带有指定的存储集群的标识信息时,确定出所述需要访问的存储集群,所述需要访问的存储集群为所述指定的存储集群;
所述访问请求为所述存储集群的桶的创建请求,且所述访问请求中未携带任意一个存储集群的标识信息时,根据设定策略确定出目标存储集群,所述需要访问的存储集群为所述目标存储集群。
在一实施方式中,第一处理模块502,用于根据所述各存储集群的剩余可用空间、以及所述访问请求来源的网络地址与所述各存储集群对应的网关节点的网络地址的距离,确定出目标存储集群。
在一实施方式中,所述各存储集群包括至少一个主存储集群和至少一个备用存储集群,所述主存储集群和所述备用存储集群分别采用不同的数据存储方式进行存储。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种对象存储的访问方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种对象存储的访问方法对应的计算机程序指令被一对象存储的访问设备读取或被执行时,实现前述实施例的任意一种对象存储的访问方法。
基于前述实施例相同的技术构思,参见图6,其示出了本发明实施例提供的一种对象存储的访问设备600,可以包括:存储器601和处理器602;其中,存储器601,用于存储计算机程序和数据;
处理器602,用于运行存储器601中存储的计算机程序时,执行上述任一中对象存储的访问方法。
在实际应用中,上述存储器601可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM,快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或SSD;或者上述种类的存储器的组合,并向处理器602提供指令和数据。
上述处理器602可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、终端(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (11)
1.一种对象存储的访问方法,其特征在于,应用于对象存储网关节点中,所述方法包括:
获取对象存储的存储集群的访问请求;
对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;
基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
2.根据权利要求1所述的方法,其特征在于,所述对象存储网关节点设置有分别与所述各存储集群对应的各连接进程,每个连接进程用于实现所述对象存储网关节点与对应的存储集群的连接。
3.根据权利要求1所述的方法,其特征在于,所述对所述访问请求进行解析,得到解析结果,包括:
确定所述访问请求中携带的需要访问的网络地址信息;
所述访问请求为存储集群的桶的访问请求时,从所述网络地址信息中获取所要访问的第一桶的标识信息,根据所述第一桶的标识信息,确定出所述需要访问的存储集群。
4.根据权利要求3所述的方法,其特征在于,在根据所述第一桶的标识信息,确定出所述需要访问的存储集群之后,所述方法还包括:
确定所述第一桶的标识信息与所述需要访问的存储集群的对应关系,将所述对应关系存储在缓存中;
再次接收到存储集群的桶的访问请求后,根据再次接收的所述桶的访问请求确定出所要访问的第一桶的标识信息时;根据所述缓存中的对应关系,确定出所述需要访问的存储集群。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在将所述对应关系存储在缓存后,等待设定时长,将所述缓存中存储的所述对应关系标记为失效,或者,将所述缓存中的所述对应关系删除。
6.根据权利要求1所述的方法,其特征在于,所述对所述访问请求进行解析,得到解析结果,包括:
所述访问请求为存储集群的桶的创建请求,且所述访问请求中携带有指定的存储集群的标识信息时,确定出所述需要访问的存储集群,所述需要访问的存储集群为所述指定的存储集群;
所述访问请求为所述存储集群的桶的创建请求,且所述访问请求中未携带任意一个存储集群的标识信息时,根据设定策略确定出目标存储集群,所述需要访问的存储集群为所述目标存储集群。
7.根据权利要求6所述的方法,其特征在于,所述根据设定策略确定出目标存储集群,包括:
根据所述各存储集群的剩余可用空间、以及所述访问请求来源的网络地址与所述各存储集群对应的网关节点的网络地址的距离,确定出目标存储集群。
8.根据权利要求1所述的方法,其特征在于,所述各存储集群包括至少一个主存储集群和至少一个备用存储集群,所述主存储集群和所述备用存储集群分别采用不同的数据存储方式进行存储。
9.一种对象存储的访问装置,其特征在于,应用于对象存储网关节点中,所述装置包括:获取模块、第一处理模块和第二处理模块;其中,
获取模块,用于获取对象存储的存储集群的访问请求;
第一处理模块,用于对所述访问请求进行解析,得到解析结果,所述解析结果至少用于指示需要访问的存储集群;
第二处理模块,用于基于所述对象存储网关节点与对象存储的各存储集群的预先建立的连接、以及所述解析结果,将所述访问请求转发至所述需要访问的存储集群。
10.一种对象存储访问设备,其特征在于,应用于对象存储网关节点中,所述设备包括:处理器和用于能够在处理器上运行的计算机程序的存储器,
所述处理器用于运行所述计算机程序时,执行权利要求1至8任一项所述的方法。
11.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910923474.6A CN112583760B (zh) | 2019-09-27 | 2019-09-27 | 一种对象存储的访问方法、装置、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910923474.6A CN112583760B (zh) | 2019-09-27 | 2019-09-27 | 一种对象存储的访问方法、装置、设备和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112583760A true CN112583760A (zh) | 2021-03-30 |
CN112583760B CN112583760B (zh) | 2022-05-31 |
Family
ID=75109831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910923474.6A Active CN112583760B (zh) | 2019-09-27 | 2019-09-27 | 一种对象存储的访问方法、装置、设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112583760B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356223A (zh) * | 2021-12-16 | 2022-04-15 | 深圳云天励飞技术股份有限公司 | 存储器的访问方法及装置、芯片、电子设备 |
CN114531416A (zh) * | 2021-11-04 | 2022-05-24 | 上海金途信息科技有限公司 | 跨NAT网段的ceph rbd块存储单一端口访问方法和系统 |
WO2023185071A1 (zh) * | 2022-03-31 | 2023-10-05 | 北京沃东天骏信息技术有限公司 | 数据查询方法、数据写入方法、相关装置和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992531A (zh) * | 2019-04-15 | 2019-07-09 | 成都四方伟业软件股份有限公司 | 数据存储方法及装置 |
-
2019
- 2019-09-27 CN CN201910923474.6A patent/CN112583760B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992531A (zh) * | 2019-04-15 | 2019-07-09 | 成都四方伟业软件股份有限公司 | 数据存储方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531416A (zh) * | 2021-11-04 | 2022-05-24 | 上海金途信息科技有限公司 | 跨NAT网段的ceph rbd块存储单一端口访问方法和系统 |
CN114356223A (zh) * | 2021-12-16 | 2022-04-15 | 深圳云天励飞技术股份有限公司 | 存储器的访问方法及装置、芯片、电子设备 |
CN114356223B (zh) * | 2021-12-16 | 2024-01-05 | 深圳云天励飞技术股份有限公司 | 存储器的访问方法及装置、芯片、电子设备 |
WO2023185071A1 (zh) * | 2022-03-31 | 2023-10-05 | 北京沃东天骏信息技术有限公司 | 数据查询方法、数据写入方法、相关装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112583760B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112583760B (zh) | 一种对象存储的访问方法、装置、设备和计算机存储介质 | |
US10592475B1 (en) | Consistent data storage in distributed computing systems | |
CN109684282B (zh) | 一种构建元数据缓存的方法及装置 | |
US10715622B2 (en) | Systems and methods for accelerating object stores with distributed caching | |
CN113746887A (zh) | 一种跨集群数据请求处理方法、设备及存储介质 | |
CN111787126B (zh) | 容器创建方法、服务器及存储介质 | |
US10908834B2 (en) | Load balancing for scalable storage system | |
WO2018121334A1 (zh) | 一种提供网页应用服务的方法、装置、电子设备及系统 | |
CN113949707A (zh) | 基于OpenResty和K8S的容器云服务发现和负载均衡方法 | |
US9529772B1 (en) | Distributed caching cluster configuration | |
CN112839076B (zh) | 数据存储、读取方法、网关、电子设备及存储介质 | |
CN112230857B (zh) | 一种混合云系统、混合云盘申请方法和数据存储方法 | |
CN111586201A (zh) | 域名解析系统、方法、设备及存储介质 | |
CN113268308B (zh) | 信息处理方法、装置以及存储介质 | |
CN115774703A (zh) | 信息处理方法及装置 | |
CN111225003B (zh) | 一种nfs节点配置方法和装置 | |
CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
CN101483668A (zh) | 热点数据的网络存储和访问方法、设备及系统 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
KR20100062442A (ko) | 파일 스토리지 액세스 시스템 및 방법 | |
US10452295B1 (en) | Data routing in information processing system utilizing persistent memory | |
US20190228078A1 (en) | Methods for automated artifact storage management and devices thereof | |
CN106790521B (zh) | 采用基于ftp的节点设备进行分布式组网的系统及方法 | |
CN114528260A (zh) | 文件访问请求的处理方法、电子设备及计算机程序产品 | |
CN115623081A (zh) | 数据下载方法、上传方法及分布式存储系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |