博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenStack Swift Account Reaper
阅读量:6916 次
发布时间:2019-06-27

本文共 1456 字,大约阅读时间需要 4 分钟。

hot3.png

翻译Swift官方文档 Account Reaper介绍,Swift中acconut的删除使用了那些策略和方法,看了这篇文档相信会有帮助。

 

The Account Reaper 账户收割器

账户收割器在后台移除被删除账户的数据。

一个账户被被标记为删除通过一个reseller发出的DELETE请求在账户的存储URL。这个简单的将值DELETE放到表account_stat中的状态栏在账户数据库中(和副本),指明这个账户的数据应该在稍后被删除。

通常下不会设置保留时间和复原。假设reseller实现了这些特性,只要调用DELETE在账户上一次就真的会得到账户的数据被移除。然而,为了保护Swift集群账户从一个不正常的或者是错误的删除请求。你可以设置delay_reaping值在[account-reaper]部分在account-erver.conf去延迟真是的数据删除。在这时,这没有时间的工具删除一个账户;必须直接更新账户数据库副本,设置状态栏位空字符串,然后更新put_timestamp 大于delete_timestamp。(在TODO列表正在写一个工具去执行这项任务,较好的通过一个ReST 调用)。

账户收割器运行在每一个账户服务器然后不定期的扫描服务器内被标记为删除的的账户数据库。它只会触发账户,服务器是主要的节点,为了让账户服务器不是所有的都尝试去做同样的工作在同一个时刻。使用多个服务器删除一个账户可能提升删除的速度。但是需要协调他们不去重复劳动。数据删除时的速度并没有过多的担心,因为大账户没有被频繁的删除。

账号的删除过程是相等直接的。账户中的每一个容器,每一个对象被删除然后容器被删除。所有删除请求失败不会停止整个的删除过程,但是会导正这个那个过程最终失败(例如,如果一个对象删除超时,容器将不会被删除,因此账户也不会被删除)。整个处理过程既是失败也要继续执行,以便于它不会因为麻烦的问题而打断恢复集群空间。账户收割器将持续的尝试删除账户直到最终变成空,数据库在db_replicator中收回,最终移除数据库文件。

History

起初,一个简单的完全通过外部调用来删除账户的方法被考虑,因为它不需要改变这个系统。所有的数据将会被简单的删除在同一种方式,在真实的用户,通过公用的ReST的API,然而,负面的是它将使用代理资源和记录所有的信息,尽管可能不需要那么做。因此,它需要一个专用的服务器或者是两台,只是为了发起删除的请求。

一个完全自下而上的途径也被考虑,对象和容器的服务器将不定期的扫描数据,它们掌握和检查是否账户已经被删除了,如果是这样的话,就移除数据。好处是对回收的速度没有影响在代理和日志,但是坏处将近100%的扫描导致没有目的的活动造成大量的I/O负载。

一个容器服务器中心途径也被考虑过,账户务器可以标记所有的容器来为删除,然后容器服务器将删除对象在每一个容器和它们自己。这对于有大量账户的容器很有益处,但是有负面的是由相当大的负载峰值。这个过程可能将会慢下来去缓和这个负载峰值,但是快速回收的益处将消失然后会留下更复杂的过程。因此,扫描所有被标记为删除的容器当大多数的不会被视为是浪费的。 db_replicator可以做这份工作同时执行它的复制扫描,但是它将不得不产生和记录删除过程,啃起来不必要的复复杂性。

最后,账户服务器中心法看起来是最佳的。

转载于:https://my.oschina.net/zhouxingxing/blog/70033

你可能感兴趣的文章
P4576 [CQOI2013]棋盘游戏
查看>>
bzoj4889: [Tjoi2017]不勤劳的图书管理员(树套树)
查看>>
静态库链接时的依赖关系和先后顺序
查看>>
jQuery页面元素操作之创建节点元素
查看>>
[HNOI2016]矿区
查看>>
[HEOI2013]SAO ——计数问题
查看>>
LeetCode 727. Minimum Window Subsequence
查看>>
栈三:栈的压入、弹出序列
查看>>
排序算法:七大排序算法的PHP实现
查看>>
【Perl】Path::File 目录的创建和删除
查看>>
加速cin的技巧
查看>>
HDU 6124 Euler theorem
查看>>
2017 ACM-ICPC 亚洲区(西安赛区)网络赛
查看>>
删除排序数组中的重复项的golang实现
查看>>
Nginx下安装PIP监控软件
查看>>
原生javascript操作class-元素查找-元素是否存在-添加class-移除class
查看>>
关于XIFF开发IM的一些想法
查看>>
web设计经验<五>国外设计师总结的7个找灵感实用方法
查看>>
ForkJoinPoolet用于类似递归
查看>>
31. Ubuntu15.04系统中如何启用、禁用客人会话
查看>>