Swift后台进程Auditor、Update、Replicator源码分析

有时同一数据的各个副本之间会出现不一致的情况,比如更新一个Object时,依照NWR策略,只要有两个副本更新成功,这个更新操作就被认为是成功,剩下的那个没有更新成功的副本就会与其他两个副本不一致。那么就需要有一种机制来保证各个副本之间的一致性。
Swift引入了三种后台进程来解决数据的一致性问题:Auditor、Update、Replicator。
Auditor负责数据的审计,通过持续的扫描磁盘来检查Account、Container和Object的完整性,如果发现数据有所损坏,Auditor就会对文件进行隔离,然后从其他节点上获取一份完整的副本来取代,而这个复制副本的任务由Replicator来完成。另外,在Ring的rebalance操作中,需要Replicator来完成实际的数据迁移工作,在Object删除的时候,也是由Replicator来完成实际的删除操作。
Updater则负责处理那些因为负荷不足等原因而失败的Account或Container更新操作。Updater会扫描本地节点上的Container或Object数据,然后检查相应的Account或Container节点上是否存在这些数据的记录,如果没有的话就将这些数据的记录推送到该Account或Container节点上。只有Container和Object有对应的Updater进程,并不存在Account的Updater进程。
这三种进程实现过程类似,这里以Account的Replicator进程为例。
Swift中存在着两种Replicator:一种是Database Replicator,针对Account和Container这两种以数据库形式存在的数据,另外一种是Object Replicator,服务于Object数据。
Account的Replicator进程起点为/bin/swift-account-replicator,工作流程中的关键部分如下描述:
1 使用swift.common.daemon.run_deamon()创建后台进程
与Account Server、Container Server、Object Server与Proxy Server等通过run_wsgi()函数来启动WSGI Server不同ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值