Два вопроса о функции звонка OpenStack Swift - PullRequest
0 голосов
/ 24 апреля 2018

Я новичок в Swift и пытаюсь изучить его функциональность.У меня к вам два вопроса относительно кольца и согласованного алгоритма хеширования.

Когда мы хотим сохранить объект, мы берем его путь (например, "... / v1 / account_name / container_name / object_name.ext"), передайте хеш-функцию MD5 этим путем, затем мы получим хеш-значение.Из этого значения хеша мы берем первые n битов, где n - частичная мощность, и используем эти биты для получения номера раздела.Теперь, если мы получим доступ к кольцу, используя номер раздела, мы сможем выяснить, в каком узле находится этот раздел, и сохранить объект таким образом.

Первый вопрос : что, если этот разделfull?

Предположим, теперь, когда swift сохраняет объект в правильном узле, второй вопрос : как swift решает, где хранить реплики?

Спасибо всем!

1 Ответ

0 голосов
/ 14 мая 2018

как swift решает, где хранить реплики?

Когда вы создаете кольцо, информирующее все узлы и все диски, которые у вас есть для вашего кластера, оно автоматически определяет, где должна быть каждая копия, а также какие узлы эстафетной передачи использовать в случае сбоя. Итак, когда вы спрашиваете кольцо, где найти / хранить объект с хешем 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
...