- •Общие задачи рис: обеспечение доступа к ресурсам, прозрачность, открытость, масштабируемость. Системы промежуточного уровня.
- •Синхронизация в рис: постановка задачи. Вычисление времени на локальном компьютере.
- •Принципы применения ntp/sntp-серверов точного времени.
- •Алгоритмы взаимного исключения: постановка задачи, централизованный алгоритм, распределенный алгоритм, алгоритм кольцевого маркера.
- •Реализация распределенной транзакции в субд Oracle 12c.
- •Репликация: определение, основные понятия, непротиворечивость реплик, параллельный доступ к реплике, плотная непротиворечивость, синхронная и асинхронная репликации.
- •Распространение обновлений
- •Протоколы распределения обновлений репликации: целевая (unicasting) и групповая (multicasting) рассылки, эпидемические протоколы, антиэнтпропия.
- •Надежность рис: доступность, безотказность, безопасность, ремонтопригодность. Способы достижения надежности рис.
- •Безопасность в рис: конфиденциальность, целостность, угрозы, аутентификация, авторизация, аудит, доверенная вычислительная база. Правила и механизмы защиты рис.
- •Парадигмы построения рис. Распределенные системы объектов. Реализации распределенных систем объектов. Основные принципы построение рис на платформе corba.
Распространение обновлений
Что распространять:
1) извещения об обновлении;
2) данные от одной копии к другой;
3) операции ко всем копиям.
Извещения об обновлении: протоколы о несостоятельности; сокращение трафика; применяются, если операции записи преобладают над операциями чтения (следующая запись тех же данных, без промежуточного чтения, делает бесполезным предыдущее изменение данных). Когда и как проводить физические изменения данных зависит от типа поддерживаемой непротиворечивости.
Данные от одной копии к другой: применяется в том случае, если операции чтения преобладают над операциями записи – вероятность эффективности обновлений становится выше. Вместо прямой пересылки данных обычно ведутся журналы изменений, в которых при конкретной пересылке могут быть объединены несколько операций обновлений.
Операции ко всем копиям (активная репликация): распространяется сама операция обновления данных; требуется наличие исполнительного механизма и процессорной мощности. Аналог – журнал повтора Oracle: данные – буферный кэш, реплика - БД на диске, обновление – накат журнала.
Продвижение (push): изменение данных влечет автоматическое изменение реплики; используются для поддержки высокого уровня непротиворечивости; чаще всего для постоянных репликацией и репликаций инициируемых сервером; используется для хранилищ с высокой интенсивностью операций чтения; требуется иметь список всех реплик и их состояний; могут продвигаться только уведомления, а потом по запросу клиента (фактически pull) будет обновлена реплика.
Извлекать (pull): чтение данных влечет запрос на изменение и изменение реплики перед чтением; используется репликациями, инициируемые клиентом; применяется для хранилищ с высокой интенсивностью операций записи; cash-miss (кэш-промах) – операция чтения застает устаревший кэш; если клиент получает уведомления (при push уведомлений), то это позволяет избежать лишних запросов на обновление реплики.
Аренда (lease):контракт между сервером (владелец данных) и клиентом (реплика), по которому сервер продвигает (push) изменения в кэш (реплику) клиента; обычно аренда имеет ограниченный строк действия; после его окончания, клиент самостоятельно отсылает запросы (pull) или продлевает аренду.
Гибкая аренда: 1) на основе частоты изменения данных: чем реже изменяются, тем больше срок аренды; 2) на основе частоты запросов: чем чаще обращения на обновление кэша, тем больше срок аренды; 3) объем пространства памяти на сервере, необходимый для хранения данных о репликациях: чем меньше объем, тем более длительная аренда.
Протоколы распределения обновлений репликации: целевая (unicasting) и групповая (multicasting) рассылки, эпидемические протоколы, антиэнтпропия.
Целевая рассылка (unicasting): сервер знает обо всех N конкретных репликациях и каждой репликации высылает соответствующее сообщение (уведомление изменение и пр.); применяется при небольшом ограниченном количестве реплик.
Групповая рассылка (multicasting): сервер не знает о конкретных репликациях, доставку сообщений берет на себя сеть (например, запустив широковещательное – broadcasting-сообщение); в основном применяется при push-методе изменения многих реплик.
Эпидемические протоколы: основное назначение – минимизировать количество сообщений при репликации данных. Модель: распределенное хранилище – много серверов с локальными данными (репликами); изменения только на одном сервере, от этого сервера распространяются сообщения о репликации.
Терминология: инфицированный (infective) - сервер, получивший изменения и готовый отсылать сообщения дальше; восприимчивый (susceptible) – не получил изменения, но готовый их получать; очищенный (removed) – получил изменения, но не способен отсылать сообщения.
Антиэнтропия (antientropy): сервер случайным образом поочередно выбирает другой сервер; три способа обмена сообщениями: сервер продвигает свои обновления; сервер извлекает обновления; два сервера обмениваются обновлениями; если сервер пытается продвинуть свои изменения на другой сервер и обнаружил, что изменение уже проведены раньше, то он с вероятностью 1/k – становится очищенным; алгоритм останавливается когда все сервера очищены.
Реализация репликации в СУБД Microsoft SQL Server 2012.
Протоколы непротиворечивости: понятие непротиворечивости, понятие протокола непротиворечивости, классификация протоколов непротиворечивости, протоколы на базе первичной копии, протоколы на базе реплицируемой записи.
Протокол непротиворечивости: реализация одной из модели непротиворечивости.
Классификация протоколов непротиворечивости:
1) существует первичная копия данных: все операции записи должны выполняться в первичной копии;
2) нет первичной копии: операцию записи может инициировать любая реплика.
Протоколы на базе первичной копии: протокол удаленной записи.
Протоколы на базе первичной копии: протокол первичного архивирования (primary backup protocol); реализует последовательную непротиворечивость; чтение с локального сервера; запись на центральный сервер; протоколы с блокирующим и неблокирующим режимом обновления (блокирующий – синхронный: пока не обновлены все реплики процесс не получает W4; неблокирующий – асинхронный: W4 получает сразу после обновления локальной копии); неблокирующий режим трудно защитить от сбоев.
Протоколы на базе первичной копии: протоколы локальной записи; поддерживается единственная копия данных;
Протоколы на базе первичной копии: поддержка единственная копия данных; единственная копия данных перемещается между серверами; проблема; отследить месторасположение данных; обычно применяется широковещательный запрос для поиска данных. Пример: база данных GPS; мобильные компьютеры, не имеющих постоянного соединения с сетью.
Протоколы на базе реплицируемой записи: 1) активная репликация; 2) протоколы кворума.
Протоколы на базе реплицируемой записи: активная репликация: с каждой репликой связан процесс- координатор, который выполняет реплицированную ему операцию обновления или записывает переданные ему реплицированные данные. Существует 2 проблемы: 1) все обновления должны осуществляться в одном порядке на каждой реплике; 2) как выполнять реплицированные обращения (транзитные репликации)
Протоколы на базе реплицируемой записи: активная репликация: для обеспечения правильной последовательности может быть применен централизованный сервер (sequencer), выполняющий хронологическую нумерацию, но в этом случае фактически осуществляется протокол на базе первичной копии;
Протоколы на базе реплицируемой записи: активная репликация: размножаются реплицированные сообщения.
Протоколы на базе реплицируемой записи: активная репликация: размножению сообщений препятствует общий координатор всех реплик объекта .
Протоколы на базе реплицируемой записи: протоколы кворума. Данные имеют версию, которая увеличивается при обновлении. Пусть N серверов. При записи уведомляется более чем Nw > N/2 +1 серверов о новой версии данных (кворум записи). При чтении вычисляется новая (максимальная) версия путем опроса более Nr > N - Nw серверов. При чтении обновляется локальная версия данных. Рисунок: a – правильно, б – может привести к повторной записи; в)крайний случай (ROWA)
Отказоустойчивость: понятие отказа информационной системы, классификация отказов, ошибка РИС, маскирование ошибок, маскирование информационной избыточностью, маскирование временной избыточностью, маскирование физической избыточностью, особенности отказа РИС, типы отказов в РИС, понятие отказоустойчивости. Отказоустойчивость процессов.
Отказ информационной системы: поведение информационной системы, не удовлетворяющее ее спецификации.
Отказы: проходные отказы – однократные; перемежающиеся отказы – появляются, пропадают и снова появляются с непредсказуемой периодичностью;
постоянные отказы – появился и существует, пока не исправят.
Ошибка информационной системы: состояние информационной системы, которое может привести к отказу.
Маскирование ошибок: сокрытие ошибок в процессе от других процессов распределенной системы. Основной метод – применение избыточности: информационная избыточность, временная избыточность, физическая избыточность.
Маскирование ошибок информационной избыточностью: помехоустойчивое кодирование данных.
Маскирование ошибок временной избыточностью: повторение действия в случае ошибки.
Маскирование ошибок физической избыточностью: резервирование элементов системы (резервирование в авиации, кластеры - резервирование в информационных системах).
Особенности отказа распределенной системы: отказ в распределенной системе может быть частичным, отдельные ее компоненты могут утратить свою работоспособность, в то время, как другие могут полностью сохранить свою функциональность.
Типы отказов в распределенной системе:
поломка - сервер перестал работать; остановка сервера; зависание ОС, требующее перезагрузку;
пропуск данных – сервер неправильно реагирует на входные запросы (например, переполнение буферов соединений или данных, превышение timeout и пр. );
ошибка синхронизации – реакция сервера происходит не в определенный интервал времени (например, на сервере взаимная блокировка процессов);
ошибка отклика – в ответе сервера ошибка;
произвольная ошибка сервера – сервер отправляет непредсказуемые сообщения в непредсказуемые моменты времени;
Отказоустойчивость информационной системы: свойство технической системы сохранять свою работоспособность после отказа одного или нескольких составных компонентов.
Надежность информационной системы:
доступность (availability);
безотказность (reliability);
безопасность (safety);
ремонтопригодность (maintainability).
Доступность: свойство системы находится в состоянии готовности к работе. Система с высокой степенью доступности – это система, которая в произвольный момент времени, вероятнее всего, находится в работоспособном состоянии.
Безотказность: свойство системы длительное время работать без отказов. Системы с высокой безотказностью – это системы, которая вероятнее всего, будет непрерывно работать в течении относительно (зависит от системы, авиационные пушки живут 3-4 секунды) долгого времени. Система может иметь высокую безотказность, но низкую доступность (снабжение горячей водой, редко отказывает, но отключают на длительное время на ремонт).
Безопасность: свойство системы, определяющее последствие отказа (отказ авиационной техники, отказ почтового сервера общего назначения).
Ремонтопригодность: свойство системы, определяющее сложность (продолжительность) восстановления работоспособности системы. Большинство отказов – монотонные процессы. Системы с обслуживанием по состоянию, системы с обслуживанием по регламенту.
Отказоустойчивость процессов: достигается объединением нескольких идентичных процессов в группу (кластер). Сообщение получают все члены группы, если один из процессов перестает работать, то его место занимает другой. Группы могут быть динамическими и статическими, один и тот же процесс может входить в несколько групп одновременно.
Отказоустойчивость процессов: группы процессов - одноранговые, иерархические. В иерархических группах присутствует координатор распределяющий запросы (во многих системах называется балансировщиком),в случае отказа координатора – выбирается другой координатор из исполнителей.
Отказоустойчивость процессов: группы процессов: при централизованном управлении группами, требуется специальный сервер – сервер групп, следящий за членством процессов входящих в группы. Такой подход прост в реализации, но уменьшает надежность - отказ сервера групп, приведет к отказу всей группы.
Отказоустойчивость процессов: группы процессов: при распределенном управлении, все процессы хранят список членов группы; требуется надежная групповая рассылка (широкополосная); процесс извещает все процессы группы о своем желании вступить в группу или покинуть ее; нужен механизм позволяющий определить аварийный отказ одного из членов группы (постоянный опрос друг друга); при включении в группу необходим механизм синхронизации (реплицирования) нового члена группы с другими членами (пример, grid Oracle).
Отказоустойчивость процессов: группы процессов: группа процессов позволяет замаскировать отказы одного или более процессов; другими словами можно реплицировать процессы, заменяя одиночный процесс отказоустойчивой группой (failover group/cluster – понятие в Microsoft, в Oracle и др.)
Отказоустойчивость процессов: группы процессов: соглашения в системах с ошибками; процесс посылающий, какое-то уведомление другому процессу не знает точно дошло ли сообщение до адресата; при подтверждении получения запроса, не ясно дошло ли подтверждение, …, дошло ли подтверждение на подтверждение; требуется специальные протоколы.
