分布式云存储数据库以及其部署在多个数据中心的方法与流程

文档序号:14879978发布日期:2018-07-07 09:31阅读:254来源:国知局

本发明涉及云存储技术领域,具体涉及分布式云存储数据库以及其部署在多个数据中心的方法。



背景技术:

在遥感领域,通过各种遥感技术获取得到的遥感数据具有典型的大数据特征,即体量大、多样性、变化快、准确性、价值大。基于这种认识,以海量遥感数据集为主、综合其他多种来源的数据,运用大数据思维与手段,聚集于从多种来源、多种介质、多种频段、多种分辨率的海量遥感数据集中获取有价值的信息变得尤为重要。

为解决这些问题,必须依托云计算的分布式处理、分布式数据库和云存储、虚拟化技术。同时,随着大数据时代的来临,海量数据存储、管理、分类、挖掘、分析等,对分布式云存储技术提出了更高更多的挑战。随着分布式云存储技术的日益成熟,以及使用的日益广泛。根据实际业务要求,对分布式云存储技术有了更高更深的要求。

针对遥感行业,遥感数据源多样化,各种卫星类型繁多;又由于所有的遥感卫星都需要有遥感卫星地面站,卫星获得的图像数据通过无线电波传输到地面站,因而遥感数据源具有地域性。在一个城市或一个地区建立一个数据中心,采用分布式云存储技术来存储和管理遥感数据已显得不够。同时在多个城市或地区建立多个数据中心,每个数据中心存储管理不同的遥感数据显得尤为必要。多个中心同时面向用户服务,用户访问任何中心都如同访问一个数据中心般,能获取到所需的任何数据。这对现有的分布式云存储提出了具体要求,我们需要一种将分布式云存储部署在多个数据中心(跨地域)的方法。



技术实现要素:

基于此,本发明提供一种分布式云存储数据库,用户能够跨地域获取到用户所需的任何数据,使用方便快捷。

本发明还提供一种分布式云存储数据库部署在多个数据中心的方法。

为了实现本发明的目的,本发明采用以下技术方案:

一种分布式云存储数据库,其包括:

若干数据中心以及资源池,每一中心分配有不同的权重;所述数据中心用于确定数据存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据;所述资源池用于申请各数据中心的数据进行统一管理,以及释放数据至各数据中心,使得元数据信息在多个数据中心通过internet及时同步,用户登陆不同的中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心;

所述数据中心包括分布式云存储系统与日志服务模块;

所述分布式云存储系统用于按类别存储不同的数据,所述分布式云存储系统具有操作日志表,所述操作日志表用于存储操作日志,该操作日志通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作;所述日志服务模块用于同步数据中心的操作日志。

在其中一些实施例中,所述分布式云存储系统还具有md5值记录表以及资源锁记录表,所述md5值记录表保存数据在分布式云存储系统中的唯一标识;所述资源锁记录表针对分布式云存储系统中的主键为move操作的源路径,字段为count计数,count为0时删除相应资源记录。

在其中一些实施例中,所述分布式云存储系统包括公共安全模块,所述公共安全模块用于用户操作的安全认证。

在其中一些实施例中,所述日志服务模块包括日志推送模块与日志更新模块,所述日志推送模块使得操作日志在不同数据中心间进行同步,所述日志更新模块定时更新数据中心的操作日志。

本发明还采用如下技术方案:

一种分布式云存储数据库部署在多个数据中心的方法,其包括如下步骤:

提供一分布式云存储数据库,所述分布式云存储数据库包括若干数据中心以及资源池,每一中心分配有不同的权重;所述数据中心用于确定数据存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据;所述资源池用于申请各数据中心的数据进行统一管理,以及释放数据至各数据中心,使得元数据信息在多个数据中心通过internet及时同步,用户登陆不同的中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心。所述数据中心包括分布式云存储系统与日志服务模块;所述分布式云存储系统用于按类别存储不同的数据,所述分布式云存储系统具有操作日志表,所述操作日志表用于存储操作日志,该操作日志通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作;所述日志服务模块用于同步数据中心的操作日志;

用户在其中一数据中心登录,该数据中心确定用户搜索的数据是存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据;

操作日志表记录用户操作,通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作。

在其中一些实施例中,所述分布式云存储系统还具有md5值记录表以及资源锁记录表,所述md5值记录表保存数据在分布式云存储系统中的唯一标识;所述资源锁记录表针对分布式云存储系统中的主键为move操作的源路径,字段为count计数,count为0时删除相应资源记录。

在其中一些实施例中,所述分布式云存储系统包括公共安全模块,所述公共安全模块用于用户操作的安全认证。

在其中一些实施例中,所述日志服务模块包括日志推送模块与日志更新模块,所述日志推送模块使得操作日志在不同数据中心间进行同步,所述日志更新模块定时更新数据中心的操作日志。

本发明所述分布式云存储数据库,使用该分布式云存储数据库将分布式云存储部署在多个数据中心,使得将该分布式云存储系统部署在多个数据中心时,能做到元数据信息在多个数据中心能通过internet及时同步,用户登陆不同的数据中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心,对用户而言就如同访问一个数据中心、访问一个分布式云存储系统一样,能够跨地域获取到用户所需的任何数据,使用方便快捷。

附图说明

图1是本发明所述分布式云存储数据库的系统架构图。

具体实施方式

为了便于理解本发明,下面将结合附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。

需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例

请参照图1,本发明所述的分布式云存储数据库,其包括:若干数据中心以及资源池,每一中心分配有不同的权重;所述数据中心用于确定数据存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据;所述资源池用于申请各数据中心的数据进行统一管理,以及释放数据至各数据中心,使得元数据信息在多个数据中心通过internet及时同步,用户登陆不同的中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心。

所述数据中心包括分布式云存储系统(即下文的gtdata)与日志服务模块;

所述分布式云存储系统用于按类别存储不同的数据,所述分布式云存储系统具有操作日志表,所述操作日志表用于存储操作日志,该操作日志通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作;所述日志服务模块用于同步数据中心的操作日志。

其中,所述分布式云存储系统还具有md5值记录表以及资源锁记录表,所述md5值记录表保存数据在分布式云存储系统中的唯一标识;所述资源锁记录表针对分布式云存储系统中的主键为move操作的源路径,字段为count计数,count为0时删除相应资源记录。

其中,所述分布式云存储系统包括公共安全模块,所述公共安全模块用于用户操作的安全认证。

其中,所述日志服务模块包括日志推送模块与日志更新模块,所述日志推送模块使得操作日志在不同数据中心间进行同步,所述日志更新模块定时更新数据中心的操作日志。

本发明还采用如下技术方案:

一种分布式云存储数据库部署在多个数据中心的方法,其包括如下步骤:

提供一分布式云存储数据库,所述分布式云存储数据库包括若干数据中心以及资源池,每一中心分配有不同的权重;所述数据中心用于确定数据存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据;所述资源池用于申请各数据中心的数据进行统一管理,以及释放数据至各数据中心,使得元数据信息在多个数据中心通过internet及时同步,用户登陆不同的中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心。所述数据中心包括分布式云存储系统与日志服务模块;所述分布式云存储系统用于按类别存储不同的数据,所述分布式云存储系统具有操作日志表,所述操作日志表用于存储操作日志,该操作日志通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作;所述日志服务模块用于同步数据中心的操作日志;

用户在其中一数据中心登录,该数据中心确定用户搜索的数据是存储在哪个数据中心,数据在本地的直接返回数据,数据在其他数据中心的,重定向到相应的数据中心下载数据。

操作日志表记录用户操作,通过日志服务模块在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作。

以下将对本发明做进一步的具体描述:

以三个数据中心为例,每个数据中心分别部署有自研的分布式云存储系统gtdata,各数据中心分配有不同的权重,即数据中心之间不是对等的,每个数据中心均部署有日志服务模块来同步各中心的操作日志,保证用户的每一项操作能同时作用于各个数据中心,保证各数据中心的元数据信息一致。使用资源池来进行统一的资源管理。对于用户发起的数据下载请求,如果是本数据中心存储的,直接本地下载,否则重定向到实际的数据中心下载。也就是说数据是按类别分别存储在不同的中心的,但是对用户体验上是无感知的。

分布式云存储系统(gtdata)的数据库设计如下:

表1操作日志表

该表用于存储操作日志,该操作日志将在不同数据中心间进行同步,每个数据中心读取到其他数据中心同步过来的日志,实行更新操作,更新本数据中心的元数据信息。需要说明的是,数据库不一定用hbase,也可以使用其他类型的数据库。

表2md5值记录

该表保存的是数据在整个系统中的唯一标识,每个数据都有唯一的md5值,通过md5值进行保存即唯一标识了一个数据。需要说明的是,数据库不一定用hbase,也可以使用其他类型的数据库。

表3资源锁记录表

该表采用mysql来存储,只针对gtdata中的move操作。主键为move操作的源路径,字段为count计数(count为0时要删除该资源记录)。

该分布式云存储系统的模块详细设计说明:

1、公共安全模块(公共安全中心)设计说明

a)暂定为使用nginx+mysql+redis(nginx提供http接口api并实现业务逻辑,mysql存储用户名、密码,redis缓存登陆信息)。

b)提供外部直接访问api:gettoken,login,logout,getsign,修改密码(changepwd、gchangepwd、rchangepwd)。

c)提供各中心内部访问api:各操作的安全认证,注册用户(包括root用户注册组用户,组用户注册普通用户,需同步用户信息表),删除用户(范围同注册用户,需同步用户信息表),组用户修改普通用户的角色。

d)最好做到内部api只能各数据中心访问,外部无法直接访问。

e)原auth表拆为两个表,一个存用户名、密码存在安全中心的mysql中,一个存除密码外的原auth表的内容为用户信息表存在各数据中心的hbase中,用户信息表需要在各中心进行同步。

2、原有gtdata的改造

a)list操作,每次均list本地,安全认证访问安全中心,其他原有接口不变

b)get操作,安全认证访问安全中心,根据dfs字段的值,确定数据存储在哪个数据中心,对于本地的直接返回数据,对于其他数据中心,重定向到该数据中心下载数据。

c)mkdir、put、copy、move、delete操作,安全认证访问安全中心,操作完成时,调用本地日志记录rabbitmq的publisher接口,向本地日志记录rabbitmq队列中写入日志,日志写入成功,操作才返回成功;如果操作需要操作resource表,也要记下对resource表的操作日志向rabbitmq队列中写入日志;如果操作需要操作用户信息表,也要记下对用户信息表的操作日志向rabbitmq队列中写入日志。

d)put操作分为两个步骤,先判断md5值是否存在,不存在则需要去资源中心申请资源,申请资源成功再上传。现在的改变是,put操作舍弃掉overwrite,采用重命名的方式实现。成功返回的json报文需要增加path,表示此次上传成功的真实的路径。

e)move操作,还需向资源服务中心申请资源锁,只有申请成功,才执行后续操作,否则返回失败。

f)注册用户、删除用户需调用安全中心的注册、删除用户接口完成注册、删除用户。同时,记录用户信息表操作记录日志并同步到其他数据中心。

3、日志推送模块设计

新设计一个日志推送模块进程,部署在每个数据中心,同时包含客户端和服务端,客户端定时轮询本地的日志记录rabbitmq队列,一旦日志记录rabbitmq非空,则get一条记录,同时tcpip传输到到远程数据中心的日志推送模块服务端,服务端收到数据更新其本地的rabbitmq日志更新队列。注意这里使用的是get无应答方式,get无应答是只取数据而不删除数据。只有写入远程数据中心日志更新rabbitmq成功,才应答这时删除记录。

rabbitmq队列:a)meta表日志记录队列,一个中心一个对列;b)用户信息表日志记录队列,一个中心一个队列;c)resource表日志记录队列,一个中心一个队列。

4、日志更新模块设计

新设计一个日志更新模块进程,定时轮询本地的日志更新rabbitmq队列,一旦日志更新rabbitmq非空,则get一条记录,并对本地meta表进行更新,只有更新meta表成功,才删除记录。

put操作的特殊判断:

上传的文件,日志更新时,本地meta表没有记录,直接插入;

上传的文件,日志更新时,本地meta表有记录:

判断meta表中dfs字段的记录的数据中心号是否为本中心,如果为本中心,则判断上传文件的权重(数据中心号)和本地记录的权重(数据中心号),如果本地记录的权重高,则忽略该操作;

如果本地记录的权重低,重命名本地记录(例如a.txt,重命名为a(1).txt),并记录上传日志(puta(1).txt)到日志记录rabbitmq队列,然后将puta.txt的更新日志,更新到meta表中;如果meta表中dfs字段记录的数据中心号不是本数据中心,则判断上传文件的权重(数据中心号)和本地记录的权重(数据中心号),如果本地记录的权重高,则忽略该操作;如果本地记录的权重低,则覆盖上传。

本实施例中数据库的设计是:数据中心号越高,权重越低。

5、资源池(资源服务中心)

资源服务中心,采用一个mysql数据库实现,只针对move操作。主键为move操作的源路径,字段为count计数(count为0时要删除该资源记录)。

执行move操作时,先到资源服务中心申请资源计数,如果资源计数不为0,则返回失败。如果为0或该资源锁记录不存在,则表示申请资源成功,执行move操作,并记录日志,成功后,初始化该资源的资源锁计数为n-1(n表示数据中心数)。

日志更新时,更新完一个中心的move操作成功后,释放资源锁一次,即锁计数减1,如果锁计数变为0,则删除该锁记录。

日志队列rabbitmq里的数据

meta表队列里的每一条数据为一个字符串,该字符串为一个json报文。结构如下:

用户信息表队列的每一条数据为一个字符串,该字符串为一个json报文。结构如下:

resource表队列的每一条数据为一个字符串,该字符串为一个json报文。结构如下:

配置文件

在nginx.conf里增加下列配置,另外作为独立的配置文件给日志推送模块、日志更新模块使用:

this_center2;

center_count3;

centers1:192.168.2.5:8001,2:192.168.2.6:8001,3:192.168.2.7:8001;

6、增加数据中心

修改所有数据中心的配置文件,停止一个次要数据中心的nginx服务、logtransfer服务(建议是最大数据中心号的那个),reload剩余的所有数据中心(nginx-sreload;logtransfer和update服务重启),等待该次要数据中心的update服务执行完毕,然后将该次要数据中心的meta表全部导入到新数据中心中(手动操作),最后启动该次要数据中心的服务,启动新数据中心的服务。

7、减少数据中心

首先修改其他所有数据中心的配置文件,reload其他所有数据中心。然后,停掉该数据中心的nginx服务,等待update服务完毕,然后等待logtransfer服务完毕,停掉update和logtransfer服务。手动将该数据中心的resource表和hdfs上的数据迁移到其他中心中的某一个,例如a数据中心。最后scan每个中心的meta、resource表,将dfs标志为该数据中心的改为a数据中心的。

在增加、减少数据中心时,不改变原有数据中心号。

本发明所述分布式云存储数据库,使用该分布式云存储数据库将分布式云存储部署在多个数据中心,使得将该分布式云存储系统部署在多个数据中心时,能做到元数据信息在多个数据中心能通过internet及时同步,用户登陆不同的数据中心都能访问所有数据中心的数据,用户对某个数据中心的更改能应用于所有数据中心,对用户而言就如同访问一个数据中心、访问一个分布式云存储系统一样,能够跨地域获取到用户所需的任何数据,使用方便快捷。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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