OpenStack Swift各司其职的进程

Openstack swift包括四种节点:proxy节点,account节点,container节点,object节点。为了保证整个swift集群的正确运行,每种节点上都会运行很多进程。这些进程可以分成两大类:一是处理请求的服务进程,服务进程包括proxy server、account server、container server、object server;二是为了保证整个集群一致性、高可用性等的“辅助”进程,叫做一致性进程,一致性进程包括auditor、replicator、account reaper、container updater、object updater、object expirer。
swift节点和节点中的进程

一、 处理请求的服务进程
1.proxy server 进程
从名字可以看出,这是一个代理进程,负责接收web请求,并将请求转发给集群中的节点上。

2.account server 进程
account server进程专门处理account相关的请求,主要负责存储和提供account的元数据信息以及在该account下的container列表信息。该进程会将account的元数据信息和container列表信息保存在sqlite数据库中。为了数据的可靠性,该数据库在swift集群中会被保存多份副本。

3.container server 进程
Container server进程专门处理针对container相关的请求,主要负责管理container元数据信息以及container下的object列表信息。container节点不知道container下object具体的存储位置,只是有object的列表。和account一样,container的元数据信息和object列表也是存储在sqlite数据库中的,同样的,数据库文件也在swift集群中被保存多份副本。

4.object server 进程
object server进程是负责处理object相关的请求,主要负责创建object对象以及元数据信息。swift将有关object对象的元数据信息存放在其扩展属性中。object对象会在集群中存放多份副本,以保证数据的高可用。

二、 一致性进程
1.auditor进程
auditor进程必须运行在所有存储数据的节点上,所以对于account、container、object节点来说,都要运行auditor进程,相应的就会有account auditor、container auditor以及object auditor三个进程。节点上的Auditor进程会持续扫描存储该节点上的数据,若出现错误(主要是文件系统错误),auditor进程会将出错的数据移动到quarantine(隔离)目录中。

2.replicator进程
replicator进程主要的作用是保证集群中足够数量的数据副本,并且保证副本之间的一致性。对于account、container、object节点来说都需要运行replicator进程,所以相应的会有account replicator、container replicator、object replicator。Replicator进程会持续比较本地的数据副本与远端节点的其他数据副本,如果远端节点的数据副本比较老或者丢失,replicator会将本地的数据发送到远端节点来更新远端节点的数据副本,这就是所谓的复制更新。这里需要注意的是,replicator只负责推送本地的数据到远端节点,而不会从远端节点拉取数据,即使是在本地数据丢失或者是过时的情况下。
Replicator进程的另一个作用是负责container以及object的删除,删除object的时候会生成一个后缀名为.ts的文件,作为object的最后版本,replicator会将该文件推送到其他节点上,然后object从整个集群中删除。而对于container的删除,container下不能有任何object才能被删除,首先container会被标记为删除,然后replicator会将该版本推送到远端,最后container从整个集群删除。

3.account reaper进程
该进程是account节点需要的进程,只需在account节点上运行。其主要作用就是处理account的删除。当account节点接收到删除account的请求时,会将该account标记为删除,这样后面的请求就访问不到该account了。当account reaper进程发现该account被标记为删除,就会开始清除该account下面的object和container,最后删除account自己。

4.container updater进程
该进程只需运行在container节点上,它主要负责更新account下的container列表,保持该列表是最新的。此外,它还负责更新account元数据中的object count、container count以及该account已经用过的bytes信息。

5.object updater进程
该进程只需运行在object节点上,它的主要作用和container updater类似,主要负责更新container下的object列表,保证object列表是最新的。但是,该进程只是起到一个冗余保护的作用,因为object server进程会主动去更新container中的object列表,如果object server更新失败了,才由object updater负责更新container中的object列表。

6.object expirer进程
只有object节点才需要运行object expirer进程,它主要起到定时删除object的作用。对于object可以设置有效时间,一旦有效时间已过,就由object expirer删除过期的object。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值