Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РСБДтЗ / Курс лекций РСБДиЗ.doc
Скачиваний:
135
Добавлен:
05.03.2016
Размер:
1.63 Mб
Скачать

Алгоритм поиска первичной копии

Поиск начинается с локально узла. Считывается значение столбца owner для заданной строки данных, идентифицируемой своим ключом. Если значение owner совпадает с именем локального узла (того на котором осуществляется чтение), то узел является владельцем первичной копии и поиск заканчивается. Если не совпадает, то считывается значение из строки, находящейся на узле, имя которого было считано на предыдущем этапе. Этот процесс продолжается до тех пора не будет найден узел владелец.

Алгоритм смены владельца первичной копии

Предполагается, что владелец был найден с помощью предыдущего алгоритма. Строка, владелец которой изменяется, блокируется на узле текущего владельца. На обоих узлах изменяются значения owner и epoch. Ownerменяется на имя узла, инициировавшего смену владельца, а epoch увеличивается на единицу. После этого остальным узлам асинхронно рассылаются новые значения owner и epoch. Такой алгоритм гарантирует, что в каждый момент времени только один узел считает себя владельцем строки.

Протоколы реплицируемой записи

В протоколах реплицируемой записи операции записи могут осуществляться на нескольких репликах, а не на одной, как в случае протоколов на базе первичной копии. Существуют две основные разновидности, рассматриваемые ниже.

Активная репликация

Активная репликация подразумевает возможность обновления произвольной реплики с последующей рассылкой обновлений другим репликам (с помощью команд обновления или самих обновленных данных). Для того чтобы с помощью активной репликации можно было реализовать модель последовательной непротиворечивости, необходимо гарантировать одинаковую последовательность выполнения всех операций записи на всех машинах. Это можно обеспечить с помощью упорядоченной групповой рассылки, построенной с помощью отметок времени Лапорта, либо с помощью выделения специального узла (секвенсора), который будет упорядочивать все операции записи, за счет присвоения им последовательного уникального идентификатора. Последнее решение, однако, приближает активную репликацию к протоколам на базе первичной копии. Также возможно предстоит решить проблему реплицированных обращений, смысл которой состоит в следующем: если объект А обращается к реплицированному объекту В, который при этом обращается к объекту С, то объект С получит несколько обращений вместо одного.

Протоколы кворума

Основная идея, лежащая в основе протоколов кворума состоит в том, чтобы запрашивать разрешение на проведение операций чтения и записи у нескольких серверов, образующих кворум. Существуют кворум записи и кворум чтения. Эти кворумы надо собрать перед выполнением соответствующих операций. При этом с каждой операцией записи одних и тех же данных сопоставляется последовательно возрастающий номер версии. Пустьразделяемый ресурс имеет N реплик, тогда кворум чтения Nr (количество реплик, к которым выполняется запрос на чтение) и кворум записи Nw (количество реплик, в которое осуществляется запись) определяются из следующих двух условий:

  • Nr + Nw > N

  • Nw > N/2

Смысл этих ограничений состоит в следующем: первое ограничение гарантирует, что при опросе Nr серверов, хотя бы один из них содержит последнюю версию запрашиваемых данных, второе ограничение устраняет конфликтдвойной записи, т.е. делает невозможных существование различающихся копий одних и тех же данных, имеющих одинаковую версию. В предельном случае, когда Nr = 1 Nw = N, все операции чтения могут быть осуществлены локально, однако операция обновления должна быть произведена на всех репликах.

Соседние файлы в папке РСБДтЗ