- •Общие задачи рис: обеспечение доступа к ресурсам, прозрачность, открытость, масштабируемость. Системы промежуточного уровня.
- •Синхронизация в рис: постановка задачи. Вычисление времени на локальном компьютере.
- •Принципы применения ntp/sntp-серверов точного времени.
- •Алгоритмы взаимного исключения: постановка задачи, централизованный алгоритм, распределенный алгоритм, алгоритм кольцевого маркера.
- •Реализация распределенной транзакции в субд Oracle 12c.
- •Репликация: определение, основные понятия, непротиворечивость реплик, параллельный доступ к реплике, плотная непротиворечивость, синхронная и асинхронная репликации.
- •Распространение обновлений
- •Протоколы распределения обновлений репликации: целевая (unicasting) и групповая (multicasting) рассылки, эпидемические протоколы, антиэнтпропия.
- •Надежность рис: доступность, безотказность, безопасность, ремонтопригодность. Способы достижения надежности рис.
- •Безопасность в рис: конфиденциальность, целостность, угрозы, аутентификация, авторизация, аудит, доверенная вычислительная база. Правила и механизмы защиты рис.
- •Парадигмы построения рис. Распределенные системы объектов. Реализации распределенных систем объектов. Основные принципы построение рис на платформе corba.
Алгоритмы взаимного исключения: постановка задачи, централизованный алгоритм, распределенный алгоритм, алгоритм кольцевого маркера.
Напоминание.
Постановка задачи: несколько распределенных процессов дописывают данные в конец общего файла на файловом сервере.
Алгоритмы взаимного исключения: централизованный алгоритм.
Один процесс, работающий с распределенным ресурсом
Три процесса, работающих с распределенным ресурсом
Алгоритмы взаимного исключения: распределенный алгоритм. Надежная связь между узлами. Каждый узел, должен знать о других узлах участвующих в синхронизации.
Принцип:
процесс не собирается входить: на все запросы enter(метка времени) отвечает OK;
процесс собирается войти в критическую область: рассылает всем запрос enter(метка времени) и ждет от всех OK; если получил от всех OK выполняет действие;
процесс собирается войти в критическую область (разослал enter(метка времени)) и одновременно получает enter(метка времени) от другого процесса: сравнивает свою метку времени и чужую; если чужая метка с меньшим временем – отсылает OК и ждет OK от всех других; если собственное время меньше, то чужой enter(метка времени) поместить в очередь, после выхода всем тем, кто в очереди – оправляется OK и соответствующие enter(метка времени) извлекаются из очереди;
процесс вошел в критическую область: поступает enter(метка времени) – помещается в очередь; после выхода всем тем, кто в очереди – оправляется OK и соответствующие enter(метка времени) извлекаются из очереди.
Алгоритмы взаимного исключения: кольцевой маркер. Узлы связываются в односвязный кольцевой список. По списку циркулирует маркер, предлагающий войти в критическую область; если входить в критическую область не требуется, то маркер отправляется дальше; если необходимо войти, то выполняется критическая операция и после выполнения маркер отправляется дальше.
Сравнение: общая проблема – разрыв связи; централизованный алгоритм – сбой координатора; распределенный алгоритм – сбой любого процесса; маркер – потеря маркера (сбой в одном из процессов).
Распределенная транзакция: определение транзакции, свойства ACID, определение распределенной транзакции, реализация транзакций, изолированность транзакций, совместимость блокировок, архитектура механизма распределенных транзакций. Двухфазная блокировка.
Напоминание: транзакция – одна или несколько операций, которые все вместе выполняются или не выполняются вообще (главное свойство - атомарность).
Напоминание: ACID – атомарность, согласованность, изолированность, долговечность. Изолированность – при выполнении параллельном выполнении транзакции, результат должен быть таким же, как при их выполнении последовательно. Бывают разные уровни изолированности (для некоторых это правило не будет выполняться).
Напоминание: BEGIN TRAN, SELECT, INSERT, DELETE, UPDATE, COMMIT, ROLLBACK
Пример: два счета в банке, с одного деньги списывают, на два других помещают.
Постановка задачи: несколько БД (для резервирования билетов на самолет из аэропорта вылета), БД находятся в разных городах (Минск, Афины, Вена), заказ билетов по маршруту Минск-Афины-Вена-Минск.
BEGIN TRAN
EXEC RES(mnsk, aphn)
EXEC RES(aphn, vn)
EXEC RES(vn, mnsk)
COMMIT
Распределенная транзакция: транзакция, в которой выполняются операции в БД, расположенных на разных компьютерах (серверах).
Реализация транзакций (рабочее множество):виды блокировки зависят уровня изолированности и от совместимости
Реализация транзакций: изолированность
Пример таблицы совместимости блокировок
|
select |
insert |
update |
delete |
select |
+ |
+ |
- |
- |
insert |
|
+ |
- |
- |
update |
|
|
- |
- |
delete |
|
|
|
- |
Реализация транзакций (журнал с упреждающей записью):
Архитектура механизма распределенной транзакции:
Двухфазная блокировка (Two-Phase Locking, 2PL):
планировщик получает от менеджера транзакций операцию О транзакции T; проверяет конфликтует или нет по блокировкам других операций; если да – операция О и транзакция T переводятся в очередь ожидания; если нет – добавляется в рабочую область; в рабочей области могут находится различные части разных транзакций; операции из рабочей области планировщика поступают в менеджеру данных; некоторые транзакции могут быть выполнены частично, но не зафиксированы; фиксация или откат осуществляется менеджером транзакции;
планировщик никогда не снимает блокировку, до тех пор, пока не получит от менеджера данных уведомление о завершении операции;
после снятия блокировки с данных, планировщик не может больше блокировать (попытка расценивается как системный сбой), а может только разблокировать.
