【问题标题】:Two questions about OpenStack Swift ring function关于OpenStack Swift ring 函数的两个问题
【发布时间】:2018-10-04 21:55:12
【问题描述】:

我是 Swift 的新手,我正在尝试学习它的功能。我有两个关于环和一致性哈希算法的问题。

当我们要存储一个对象时,我们取它的路径(例如“.../v1/account_name/container_name/object_name.ext”),用这个路径输入MD5哈希函数,然后我们得到一个哈希值.从这个哈希值中,我们取前 n 位,其中 n 是部分幂,并使用这些位来获得分区号。现在,如果我们使用分区号访问环,我们可以发现该分区在哪个节点并以这种方式存储对象。

第一个问题:如果分区满了怎么办?

现在假设 swift 将对象存储在正确的节点中,第二个问题是:swift 决定将副本存储在哪里?

谢谢大家!

【问题讨论】:

  • 您能澄清一下分区已满是什么意思吗?你的意思是有分区的磁盘?

标签: openstack-swift consistent-hashing


【解决方案1】:

如何快速决定副本的存储位置?

当您创建一个通知集群的所有节点和所有磁盘的环时,它会自动定义每个副本的位置以及在发生故障时使用哪些切换节点。因此,当您询问环在哪里可以找到/存储散列为 ABC123DEF 的对象时...它会回答您:

Look at here:
SERVER1/DISK2/PATH/TO/FILE
SERVER2/DISK4/PATH/TO/FILE
SERVER4/DISK1/PATH/TO/FILE

And if you don't find, look at here.
Handoff: SERVER2/DISK2/PATH/TO/FILE
Handoff: SERVER8/DISK7/PATH/TO/FILE
Handoff: SERVER3/DISK1/PATH/TO/FILE

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2013-02-20
    相关资源
    最近更新 更多