云存储系统和数据存储方法_4

文档序号:8433889阅读:来源:国知局

[0101] 为了实现上述功能,在上述技术方案中提到的云存储系统100具体实施过程中, 可通过运行于代理服务器节点104、存储服务器节点102、身份鉴定认证服务器节点106上 的进程加W控制和实现,下面结合H个服务器节点中运行的主要进程予W说明。
[0102] 一、代理服务器节点104
[0103] 代理服务器进程:代理服务器进程("proxy-server")是本方案代理服务节点104 运行的进程。代理服务进程维护账户,容器和对象在环中的位置信息,W及对外提供API服 务(即外部网络可W通过代理服务器提供的API来进行数据的访问),处理用户API访问的 请求。
[0104] 其中,"memcached"是高性能的分布式内存对象缓存系统,它通过在内存中缓存数 据和对象来减少读取数据库的次数。本方案代理服务进程使用"memcached"进行数据的缓 存,W提高用户的访问速度。
[0105] 二、存储服务器节点102
[0106] 存储服务器进程主要包括H类;Account类进程,Container类进程和Object类进 程,如下表1所示:
[0107] Accountaccount-server,account-replicator,account-auditoraccount-reaper Containercontainer-server,container-replicator,container-updater,container-auditor Objectobject-server,object-replicator,object-updater,object-auditor,object-expirer
[010引 表1
[0109]1、对象服务器进程(object-server)
[0110] 对象服务器进程负责数据(对象)在本地设备的存储,获取W及删除等生命周期 操作。对象W二进制文件的形式存储,而对象的元数据将会存放在二进制文件的额外属性(xattrs)当中。对象存放的路径是对象的名称经过哈希计算得出的结果加上操作的时间 戳,对象的最后写入操作决定了对象的内容,在系统对外服务的同时保证最新对象版本。删 除对象操作也会当成是对象的一次更新,对象文件将变成0字节,而且文件名W ts"结 束,其中ts是tombstone的缩写,意思为墓碑,说明该文件已经被删除。该样的做法是确保 删除的对象能被正确复制,使得旧版本的对象不会因某些失败场景而重现。
[0111] 2、容器服务器进程(container-server)
[0112] 容器服务器进程主要负责对象的处理操作,该进程收集每个对象所存放的容器信 息,并将该些信息数据存储为Sqlite数据库文件,与对象文件类似,该文件可W在集群中 进行复制等操作。此外,容器服务器进程也会对容器进行统计,包括每个容器中对象的总数 W及容器使用的存储空间等。
[0113]3、账户服务进程(account-server)
[0114] 账户服务进程和容器服务进程类似,区别在于账户服务进程主要负责处理一系列 的容器而不是对象。
[0115] 4、数据复制进程(replicator)
[0116]数据复制主要是对数据文件的复制W及同步操作。其中,复制的目的是提供系统 可靠性,避免单点故障;而同步的目标是保证文件处于一致性状态,使得对同户提供的文件 都是一致的,并且是最新版本。本方案使用数据复制进程实现数据复制的操作,将会把本地 存储的数据及其相对应每一份远程的副本作比较,来确保所有的数据都是最新版本。对象 的数据复制进程采用哈希表来快速对比每个分区的子组成部分;容器和账户的数据复制进 程则采用哈希表和水印技术来进行数据的快速对比,数据复制的更新操作基于化sh技术, 对于对象数据复制进程,更新操作只是简单的把文件同步到其他的远程存储服务器;而对 于账户和容器数据的复制进程,需要通过HTTP协议把缺少的记录推送到远程存储服务器, 或者同步整个Sqlite数据库文件。
[0117] 5、数据库数据复制进程
[0118] "account-r巧licator"和"container-r巧licator"均属于数据库复制进程。数据 库数据复制进程的第一步是使用哈希计算验证两个数据库的一致性,确认存储服务器集群 中的数据库是否同步,如果存储服务器集群上的数据库经过哈希计算后的结果不一致,那 么数据复制进朝那个会共享最新的同步点记录,进行数据库的同步,同步点记录ID号" 和"数据库ID号"元组的形式存储在每个数据库里面。其中,数据库ID是唯一的,即每个 数据库ID号在存储服务器集群中都是独一无二的;而记录ID号则是单调递增的整数。如 果某个存储服务器上的数据库完全消失,那么本地数据库文件竟会通过rsync同步软件传 输到数据库消失的存储服务器上,此后该存储服务器上的数据库ID会修改成新的并且是 唯一的ID号。
[0119] 6、对象数据复制进程(object-replicator)
[0120]对象数据复制进程最初的实现方式仅仅是使用rsync同步软件进行本地存储服 务器上的数据到远程存储服务器的推送。该种实现方式在小规模的存储服务器集群中表现 良好,但是在内存不足的情况下,复制进程将消耗大量时间。目前的对象数据复制进程较之 前的模式有所改进,通过计算每个分区中每个目录内容的哈希值,把结果保存至哈希文件, 从而获知被修改之后的分区内容,继而将失效哈希值传送到同样拥有对应分区的每一个远 程存储服务器上,远程存储服务器针对相关目录进行数据同步。在把修改的文件传送到远 程存储服务器后,对象复制进程通知该些同步之后的存储服务器重新计算相应文件目录的 哈希值,并保存至对应分区的哈希文件中去。
[01引]7、更新进程(-updater)
[0122] "account-updater" , "container-updater" , "object-updater"进程均属于更 新进程。本方案运营环境中存在容器或账户数据没有被立即更新的情况,通常出现在服务 器节点出错或者高负载的时段。如果容器或账户的更新操作失败,那么该些更新操作将会 在本地服务上排成队列,最后由更新进程来处理该些失败的更新操作。例如1,当容器所在 的服务器节点处于高负载状态的同时,需要将某个对象添加至本方案存储系统当中,此时 代理服务器回应用户所添加的对象已经生效并且可读,然而服务器由于高负载而未能及时 更新对象列表,也就是说,没有把用户对象添加到某个指定的容器之下,该个失败的更新操 作就会添加到队列中稍后会由更新进程进行处理。在对象数据更新的过程中,涉及"一致性 窗口 "的概念。在实际应用中,一致性窗口与更新进程的运行时间有关,其指定的是所有文 件处于一致性状态的时间。当更新进程运行时,说明有失败的更新操作需要处理,此时说明 系统中的对象文件已经处于不一致状态中;当更新进程不再运行时,说明所有的更新操作 处理完毕,系统中的文件保持一致。更新进程没有运行的时间段,系统处于一致性状态,该 段时间称为一致性窗口。一致性窗口或许不会被代理服务器所感应到,原因在于代理服务 器会把一系列的请求转发到第一个相应的容器服务器进程,处于高负载的容器服务器并不 是唯一可W处理请求的进程,所W才会导致代理服务器错误响应用户请求的情况。
[0123] 8、审计进程(-auditor)
[0124] "account-audi tor","container-audi tor","ob j ect-audi tor"均属于审计进程。 审计进程运行在存储服务器上,执行检查对象,容器和账户的完整性。如果出现审计错误, 数据将会被隔离,同时数据复制进程将会从其他存储服务器上获取数据对应的副本取代发 生错误的数据。
[01 巧]9、账户清除进程(account-reaper)
[0126] 账户清除进程是后台守护进程,运行于账户服务进程(account-server)所在的服 务器,主要负责清除已经被删除账户中所包含的数据。账户清除进程偶尔扫描服务器,用于 寻找是否存在标志为删除的账户数据库。
[0127]10、对象过期进程(ob j ect-exp irer)
[0128] "object-expirer"进程提供在指定时间内删除对象的服务。本方案用户可在PUT 或者POST方法的HTTP请求中使用X-Delete-At或X-Delete-Af ter Header来指定对象的 删除时间。当对象的存留时间到期,本方案集群系统会自动停止向外提供该对象的服务,并 在短时间内把该对象从系统中删除。一个集群中只需要一个object-expirer进程,虽然存 在单点故障的问题但是即使object-expirer进程在一段时间内停止运行,也不会影响哪 个业务的正常运行。如果在object-expirer进程停止运行的过程中,用户通过GET或HEAD 方法的HTTP请求访问过期但尚未被删除的对象,那么代理服
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1