• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

OpenStack Swift各司其职的进程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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。

一、 处理请求的服务进程
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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift-自定义UIActivity分享发布时间:2022-07-13
下一篇:
【Swift】swift中使用kvc赋值的时候,注意事项发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap