Distributed System L-9 (Лекции по распределённым системам)
Описание файла
Файл "Distributed System L-9" внутри архива находится в папке "Лекции по распределённым системам". PDF-файл из архива "Лекции по распределённым системам", который расположен в категории "". Всё это находится в предмете "распределённые системы" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "распределённые системы" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Распределенныевычислительные системыЛекция №9:Распределенные объектные транзакцииАлексей В. Бурдаков, к.т.н.burdakov@usa.net9-1План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Долговременное хранение объектов9-21Проблема• Что произойдет если отказ случится в процессемодификации ресурса?• Какие операции были завершены?• Какие не завершены и д.б. повторены?• В каком состоянии будут находиться ресурсы?• Целостность данных в этом случае может бытьнарушена• Распределенные системы могут иметьмножество точек отказа9-3Проблема (продолжение)• Одновременное обращение к объектам• Возможность перезаписи результатов другойтранзакции• Целостность данных может также быть нарушена• В распределенной системе одновременныеобращения более вероятны нежели вцентрализованной9-42Концепция транзакций• ACID•Atomicity (атомарность)•Consistency (непротиворечивость)•Isolation (изолированность)•Durability (долговечность) – долговременное хранение• Фиксация и откат транзакций• Плоские и вложенные транзакции• Централизованные и распределенныетранзакции9-5Концепция транзакций• Транзакция – это последовательность объектныхзаявок, сгруппированных таким образом, что ихвыполнение обладает так называемымисвойствами ACID• Транзакции позволяют ассоциироватьопределенную семантику выполнения споследовательностью объектных заявок9-63ACID• Атомарность (atomicity) – транзакция либо завершенаполностью, либо полностью отменена.
Вносит вклад вобеспечение прозрачности отказов.• Непротиворечивость (consistency) – гарантирует, чтопоследовательность операций оставит набор ресурсов внепротиворечивом состоянии.• Изолированность (isolation) – гарантируетизолированное выполнение транзакции независимо отдругих конкурирующих транзакций.• Долговечность (durability) – после завершениятранзакции выполненные изменения становятсядолговечными даже в случае аварийного завершенияпроцесса.9-7Плоские транзакцииBeginCommitПлоская транзакцияBeginСбойПлоская транзакцияBeginAbortПлоскаятранзакция9-84Вложенные транзакцииBeginCommitРодительская транзакцияBeginBeginCommitДочерняя транз.CommitДочерняя транз.BeginCommitДочерняя транз.9-9Управление транзакциями: клиент исервер• В случае управления транзакциями сервером онможет взять на себя заботу о начале изавершении транзакции• В случае управления со стороны клиентасерверные объекты должны реализовыватьфункции транзакций (начала, отмены ификсации), а также функции совместного доступа(блокировка ресурса и т.п.)9-105План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Сервисы распределенных объектных транзакций9-11Управление совместным доступом• Компоненты распределенных систем используютразделенные ресурсы конкурентно:••••Компоненты технического обеспеченияРесурсы ОСБДОбъекты• Доступ к некоторым ресурсам д.б.
организовантак, чтобы исключить одновременный доступ• Записи БД• Объекты CORBA9-126Мотивация• Конкурентный доступ и обновления могут вести кследующим последствиям:• Потерянные обновления (lost updates)• Противоречивый анализ (inconsistent analysis)• Пример потерянных обновлений:• Получение денег из банкомата и• Кредитование счета• Пример противоречивого анализа:• Перевод средств с одного счета на другой• Подсчет баланса счетов9-13ПримерDirectBanking+ funds_transfer(from : Account, to : Account, amount : float)Account- balance : float = 0+ credit(amount : float)+ debit(amount : float)+ get_balance() : floatReporting+ sum_of_accounts(set : Account[]) : float9-147Примерclass Account {protected:float balance;public:float get_balance() {return balance;};void debit(float amount){float new=balance-amount;balance=new;};void credit(float amount) {float new=balance+amount;balance=new;};};9-15Потерянные обновленияCustomer@ATMt0t1t2t3t4t5t6Clerk@CounteranAcc->debit(50){anAcc->credit(50){new=25;new=125;balance=25;}balance=125;}Balance7575757525125125Time9-168Противоречивый анализFunds Transfert0t1t2t3t4t5t6t7Inland Revenue Report Acc1Acc2 SumAcc1->debit(7500){sum=0;75000new=0;75000balance=0;sum+=Acc2->get_balance();00}00Acc2->credit(7500){00new=7500;00balance=7500;sum+=Acc1->get_balance();0 7500}0 750000000000Time9-17Обеспечение параллельной работы• Пессимистический подход• Предпосылка: параллельный доступ скорее всегопроизойдет• Блокирование ресурсов для исключения возможностипараллельного доступа с помощью 2-х фазнойблокировки• Оптимистический подход• Предпосылка: параллельный доступ скорее всего непроизойдет• Ведение идентификаторов строк и их контроль вслучае обновления:ROWID в SQLBase9-1892-х фазная блокировка• Большинство популярных СУБД реализуютименно этот метод блокировки• Конкурентные процессы запрашиваютблокировки у менеджера блокировок• Менеджер блокировок предоставляетблокировки, если они не конфликтуют с ужепредоставленными блокировками9-19Блокировки• Блокировка является признаком,свидетельствующим о том, что ресурсиспользуется процессом в определенном режиме• Минимальные режимы блокировки: чтение изапись• При 2-х фазном блокировании процессы сначалаполучают блокировки, а после – освобождают9-2010Блокировки• Процессы получают блокировки до доступа кресурсам и освобождают после• Блокировки обеспечивают сериализуемость(последовательное выполнение)• Типичный профиль блокирования представленна рисунке ниже:Кол-воблокировокВремя9-21Совместимость блокировок• Матрица совместимости блокировокRR+W-W--9-2211Гранулярность блокировок• При высокой степени конкурентного доступаиспользуется мелкогранулярные блокировки• Мелкогранулярные блокировки приводят кнеобходимости использования большогоколичества блокировок• Большое число блокировок ведет к высокимиздержкам• Иерархические блокировки могут служитькомпромиссом9-23Иерархические блокировки• Применяются для композитных ресурсов,например:• Файл• Набор или последовательность• Намерение чтения или записи присваиваетсяконтейнерам объектов• Матрица совместимостиIRRIWWIR+++-R++-IW++-W9-2412План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Долговременное хранение объектов9-25Сервис контроля совместногодоступа CORBAApplicationObjectsDomainInterfacesCORBAfacilitiesObject Request BrokerCORBAservicesConcurrencyControl9-2613Сервис контроля совместногодоступа CORBA• Реализует пессимистическую стратегиюблокировок• Спецификации сервиса контроля совместногодоступа приняты в 1994• Целью данного сервиса является обеспечениемеханизма обеспечивающего контроль засовместным доступом к объектам так, что ониостаются в непротиворечивом состоянии• Сервис предоставляет интерфейс дляпредоставления 2-х фазных блокировок9-27Матрица совместимости блокировок• Поддержка иерархических блокировок• Матрица совместимости блокировок•IR – намерение чтения•IW – намерение записи•U – усиление (блокировка чтения, конфликтующаясама с собой, позволяет снизить вероятность взаимнойблокировки)•W – запись•R – чтениеIRRUIWWIR++++-R+++-U++-IW++-W9-2814Наборы блокировок (Lockset)• Набор блокировок ассоциируется с ресурсом(обычно в реализации с данным ресурсом)• Каждый разделенный ресурс имеет наборблокировок• Операции данного ресурса получают блокировкидо того как они получают доступ или изменяютресурс• Для вложенных транзакций правилоослабляется: вложенные транзакции могутприсваивать себе родительские транзакции9-29IDL интерфейсinterface LocksetFactory {LockSet create();};interface Lockset {void lock(in lock_mode mode);boolean try_lock(in lock_mode mode);void unlock(in lock_mode mode);void change_mode(in lock_mode held,in lock_mode new);};9-3015План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Сервисы распределенных объектных транзакций9-312-х фазная фиксация транзакций• Роли:• Транзакционный клиент• Транзакционный сервер• Координатор9-3216Координатор• Управляет выполнением транзакций• Обрабатывает вызовы начала, отмены ификсации транзакций• Распределяет системные уникальныетранзакционные идентификаторы• Различные транзакции могут иметь различныекоординаторы транзакций9-33Транзакционный сервер• Любой компонент с ресурсом изменяемым врамках транзакционного управления• Транзакционные сервер должен знать своегокоординатора• Должен зарегистрировать свое участие втранзакции у координатора• Должен реализовывать 2-х фазный протоколфиксации9-3417Транзакционный клиент• Взаимодействует с транзакциями через координатор• Вызывает сервисы координатора для начала,завершения и отмены транзакций• Реализация транзакций прозрачна для клиентов9-352-х фазная фиксация• Множество распределенных автономных серверов• Для общей фиксации все серверы должны быть готовы кфиксации• Если один из серверов не может зафиксироватьизменения, то все серверы должны отменить фиксацию• Однофазный протокол не достаточен в этом случае• Необходимо использовать 2 фазы:•Голосование•Завершение9-36182-х фазная фиксация: фаза 1• Фаза голосования• Координатор спрашивает могут ли все серверыфиксировать транзакцию• Если да, то отвечает «ДА»• Если нет, то отменяет транзакцию и отвечает «НЕТ»• Таким образом сервер может самостоятельно отменить,но не может самостоятельно зафиксировать транзакцию9-372-х фазная фиксация: фаза 2• Фаза завершения• Координатор собирает все голоса и если всеположительны, то командует «зафиксировать», если нет,то «отменить»• Серверы подтверждают команду «зафиксировать» позавершению таковой9-3819План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Сервисы распределенных объектных транзакций9-39Сервис объектных транзакцийCORBA• OTS – Object Transaction Services (Сервисобъектных транзакций)• Определен в 1994 году в качестве части наборасервисов CORBA• Данный сервис позволяет:• Сформировать серию вызовов и обращений кобъектам в единую транзакцию, обеспечиваяатомарность и долговечность• Организовать вложенные транзакции• Сервис объектных транзакций опирается насервис контроля одновременного доступа дляобеспечения свойства изоляции9-4020Интерфейсы IDL<<Interface>>TransactionFactory+ create()<<Interface>>Current+ begin()+ commit()+ rollback()+ rollback_only()+ get_control()+ get_status()<<Interface>>Control+ get_terminator()+ get_coordinator()<<Interface>>Coordinator<<Interface>>Resource+ prepare()+ rollback()+ commit()+ commit_one_phase()+ forget()<<Interface>>Terminator+ commit()+ rollback()+ register_resource()+ get_status()9-41Интерфейс Currentinterface Current {void begin() raises (...);void commit (in boolean report_heuristics)raises (NoTransaction, HeuristicMixed,HeuristicHazard);void rollback() raises(NoTransaction);Status get_status();string get_transaction_name();Coordinator get_control();Coordinator suspend();void resume(in Coordinator which)raises(InvalidControl);9-42};21Интерфейс Coordinatorinterface Coordinator {Status get_status();Status get_parent_status();Status get_top_level_status();boolean is_same_transaction(in Coordinator tr);boolean is_related_transaction(in Coordinator tr)RecoveryCoordinator register_resource(in Resource r) raises(Inactive);void register_subtran_aware(in SubtransactionAwareResource r)raises(Inactive, NotSubtransaction);…9-43};Интерфейс Resourceenum Vote {VoteCommit,VoteRollback,VoteReadOnly};interface Resource {Vote prepare();void rollback() raises(...);void commit() raises(...);void commit_one_phase raises(...);void forget();};9-4422Пример перевода средствbegin()debit()Acc1@bankA Acc2@bankB:Resource:Resourcecredit()commit():Current :Coordinatorget_control()register_resource()get_control()register_resource()prepare()prepare()commit()commit()9-45План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Сервисы распределенных объектных транзакций9-4623Транзакции в MTSЭтап 1Админситр.MTSКлиентCoCreateInstanceContextОбъектMTSODBCDriverObjectCreate New TransactionКоординаторраспределенныхтранзакций (DTC)Менеджерресурсов 1Менеджерресурсов 29-47Транзакции в MTSЭтап 2Админимтр.MTSКлиентКредитоватьОбъектMTSODBC DriverContextGetTransaction IDObjectEnlist RM 1 inTransactionInform RM 1and accessdataКоординаторраспределенныхтранзакций (DTC)Менеджерресурсов 1Менеджерресурсов 29-4824Транзакции в MTSЭтап 3Администр.MTSКлиентДебетоватьОбъектMTSODBC DriverContextGetTransaction IDObjectEnlist RM 2 inTransactionInform RM2and accessdataКоординаторраспределенныхтранзакций (DTC)Менеджерресурсов 2Менеджерресурсов 19-49Транзакции в MTSЭтап 4Администр.MTSКлиентCommitContextObjectОбъектMTSODBCDriverSet CompleteCommit RequestPrepareКоординаторраспределенныхтранзакций (DTC)Менеджерресурсов 1PrepareМенеджерресурсов 29-5025План лекции• Принципы транзакций• Управление одновременным выполнением• Протокол двухфазной фиксации• Сервисы распределенных объектных транзакций9-51Управление транзакциями в JavaApplicationApplication ServerResource ManagerUserTransaction Transaction Manager XAResourceJava Transaction APIJava Transaction ServiceCORBA Transaction Service9-5226Транзакционный интерфейс Java<<Interface>>UserTransaction+ begin()+ commit()+ rollback()+ getStatus()<<Interface>>TransactionManager+ begin()+ commit()+ getStatus()+ getTransaction()+ resume()+ rollback()+ suspend()<<Interface>>Transaction+ enlist()0..*+ delist()+ commit()+ rollback()+ getStatus()<<Interface>>XAResource+ prepare()+ commit()+ rollback()+ forget()9-53Ключевые моменты• Распределенная объектная транзакция –атомарная, сохраняющая непротиворечивость,изолированная и долговечно хранимаяпоследовательность объектных запросов• Объекты, принимающие участие враспределенных объектных транзакциях,выполняют роль транзакционных клиентов,серверов и координаторов• Изоляция достигается с помощью двухфазнойблокировки и может быть либо делегированаСУБД, либо явно обеспечена на уровне объектов9-5427Ключевые моменты• Атомарность достигается с помощью двухфазнойфиксации транзакции, состоящей из фазголосования и фиксации9-55Литература / Internet источники• В.
Эммерих Конструирование распределенныхобъектов. - М.:Мир. - 2002.• М.Р. Когаловский Энциклопедия технологий базданных. - М.: ФС. - 2002.• Ю.А. Григорьев, А.Д. Плутенко. - Жизненный циклпроектирования распределенных баз данных. Благовещенск. - 1999.• Э. Таненбаум, М. Ван Стеен Распределенныесистемы. Принципы и парадигмы. – СПб.: Питер,2003. – 877 с.: ил. – (Серия «Классика computerscience»)• www.omg.org9-5628.