Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 80

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 80 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 802019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 80)

Первая из них содержала полныесведения о товарах на момент открытия утром текущего дня, а вторая — список5.6. Распределенные транзакции307изменений за день: продукты, купленные покупателями, и продукты, возвращен­ные поставщикам. Компьютер считывал информацию с обеих лент и создавалновую основную ленту инвентаризации, как показано на рис. 5.16.ПредыдущаяинвентаризацияНоваяинвентаризацияИсходные Jленты)^ ^^Н^I/"^NКомпьютер [—•(^ )Лента с результатомСегодняшниеизмененияРис. 5.16. Внесение изменений в основную ленту защищено от сбоевОсновное преимущество этой схемы (несмотря на то, что люди, вынужден­ные этим заниматься, тогда часто не могли этого оценить) состояло в том, чтопри любых сбоях все ленты можно было перемотать на начало и начать работуснова без каких-либо проблем. Такие примитивные старые магнитные ленты об­ладали свойством, характерным для транзакции, — «все или ничего».Взглянем теперь на современное банковское приложение, которое вносит из­менения в сетевую базу данных.

Клиент звонит в банк, используя компьютерс модемом, намереваясь снять деньги с одного счета и положить их на другой.Операция осуществляется в два приема.1. Снять сумму а со счета 1.2. Положить сумму а на счет 2.В том случае, если модемное соединение после выполнения первого этапа, нодо выполнения второго разорвется, деньги с первого счета будут сняты, но навторой не перечислены. Деньги просто растворятся в воздухе.Проблему решает объединение этих операций в одну транзакцию. Либо обеони будут выполнены, либо не будет выполнена ни одна.

Ключевой, следова­тельно, является возможность отката к исходному состоянию при невозможно­сти завершить транзакцию. Что нам действительно нужно — так это способ «от­мотать к началу» базу данных, как мы это проделывали с магнитной лентой. Этувозможность дает нам транзакция.Программирование с использованием транзакций требует специальных при­митивов, которые могут поддерживаться как базовой распределенной системой,так и исполняющей системой языка программирования. Типичные примеры при­водятся в табл. 5.2. Полный список примитивов зависит от того, какие объектыиспользуются в транзакции. В почтовой системе примитивами могут быть от­правление, прием и пересылка почты.

В банковских системах примитивы могутбыть совершенно другими. Однако, как правило, там присутствуют команды READи WRITE. Обычные инструкции, вызовы процедур и пр. также могут включатьсявнутрь транзакций.308Глава 5. СинхронизацияТ а б л и ц а 5 . 2 . Некоторые п р и м и т и в ы , используемые в транзакцияхПримитивОписаниеBEGINTRANSACTIONПометить начало транзакцииENDTRANSACTIONПрекратить транзакцию и попытаться завершить ееABORT_TRANSACTIONПрервать транзакцию и восстановить прежние значенияREADСчитать данные из файла, таблицы или другого источникаWRITEЗаписать данные в файл, таблицу или другой приемникДля ограничения области действия транзакции используются примитивыBEGIN_TRANSACTION и END_TRANSACTION. Операции, расположенные между ними, фор­мируют тело транзакции.

Все эти операции либо выполняются, либо не выпол­няются. Это могут быть системные вызовы, библиотечные процедуры или инст­рукции на языке реализации.Рассмотрим в качестве примера процесс резервирования посадочных мест отБелых равнин, штат Нью-Йорк, до Малинди, Кения, в авиационной системе ре­зервирования мест.

Один из возможных маршрутов: из Белых равнин в аэропортим. Джона Кеннеди, из аэропорта им. Джона Кеннеди в Найроби, из Найробив Малинди. На листинге 5.1 мы видим, что резервирование билетов на эти трирейса выполняется тремя различными операциями.Листинг 5 . 1 . Подтверждение транзакции резервирования билетовна три авиарейсаBEGIN_TRANSACTIONзарезервировать WP -> JFK:зарезервировать JFK -> Nairobi:зарезервировать Nairobi -> Malindi;END_TRANSACTIONТеперь представим, что билеты на первые два рейса зарезервированы, а тре­тий, если судить по документам, оказался переполнен.

Транзакция прерывается,и результаты первых двух резервирований отменяются — база данных по биле­там на авиарейсы возвращается к тем значениям, которые были в ней до началатранзакции (листинг 5.2). Все выглядит так, будто нршего не происходило.Листинг 5 . 2 . Транзакция прервана по причине невозможности заказа билетана третий самолетBEGIN_TRANSACTIONзарезервировать WP -> JFK;зарезервировать JFK -> Nairobi;Nairobi -> Malindi переполнен =>ABORTJRANSACTIONСвойство транзакций «все или ничего» — это лишь одно из характерныхсвойств транзакции. Говоря более конкретно, транзакции:> атомарны {atomic) — для окружающего мира транзакция неделима;4 непротиворечивы {consistent) — транзакция не нарушает инвариантов сис­темы;5.6. Распределенные транзакции3094 изолированы (isolated) — одновременно происходящие транзакции не влия­ют друг на друга;"¥ долговечны {durable) — после завершения транзакции внесенные ею изме­нения становятся постоянными.На эти свойства часто ссылаются по их первым буквам — ACID.Первое ключевое свойство, которое проявляется во всех транзакциях, — ато­марность.

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

После любых внутренних переводов количество денег в банкедолжно сохраняться таким же, каким оно было до перевода, хотя на краткий мо­мент в ходе транзакции этот инвариант и может нарушаться, но такое нарушениене будет заметно извне.Третье свойство, о котором мы говорили, — это изолированность, или сериализуемость. В том случае, если две или более транзакций происходят одновре­менно, для каждой из них и для других процессов итоговый результат выглядиттак же, как если бы все транзакции выполнялись последовательно в некотором(зависящем от системы) порядке. Ниже мы еще вернемся к этому свойству.Четвертое свойство гласит, что транзакции долговечны. Это свойство отражаеттот факт, что после завершения транзакций последующие действия не имеют ни­какого значения, транзакция закончена, ее результаты неизменны.

Никакие сбоипосле завершения транзакции не могут привести к отмене результатов транзак­ции или их потере. Долговечность подробно обсуждается в главе 7.5.6.2. Классификация транзакцийИтак, мы считаем транзакцией серию операций, удовлетворяющую свойствамACID. Этот тип транзакции именуется также плоской транзакцией {flat trans­action).

Плоские транзакции — это наиболее простой и наиболее часто используе­мый тип транзакций. Однако плоские транзакции имеют множество ограниче-310Глава 5. СинхронизацияНИИ, которые вынуждают нас заняться поисками альтернативных моделей. Нижемы обсудим два важных класса транзакций — вложенные транзакции и распреде­ленные транзакции. Другие классы широко рассмотрены в [177].Ограничения плоских транзакцийОсновное ограничение плоских транзакций состоит в том, что они не могут да­вать частичного результата в случае завершения или прерывания. Другими сло­вами, сила атомарности плоских транзакций является в то же время и их слабо­стью.Рассмотрим снова полет из Нью-Йорка в Кению, проиллюстрированный лис­тингами 5.1 и 5.2.

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

Плоская транзакция не позволит нам этого сделать.В качестве другого примера рассмотрим web-сайт, гиперссылка в которомдвунаправленная. Другими словами, если web-страница W\ содержит URL стра­ницы W2J ТО Wi знает, что W2 ссылается на нее [224]. Теперь представим себе, чтостраница W перенесена в другое место или заменена другой страницей. В этомслучае все гиперссылки на W должны быть обновлены, причем желательно од­ной атомарной операцией, в противном случае мы можем получить (временно)потерянные ссылки на W.

Теоретически здесь можно использовать плоскуютранзакцию. Транзакция состоит из внесения изменений в W и серии опера­ций, каждая из которых изменяет одну web-страницу, содержащую гиперссылкуПроблема, однако, состоит в том, что такая транзакция может потребоватьдля выполнения нескольких часов. Страницы, ссылающиеся на W, могут бытьразбросаны по всему Интернету, а таких страниц, нуждающихся в правке, можетбыть тысячи. Производить правку отдельными транзакциями не слишком хорошо,потому что в этом случае некоторые web-страницы будут содержать правильныессылки, а некоторые нет. Возможным решением в этом случае было бы заверше­ние изменений с сохранением старой ссылки на 1^ для тех страниц, ссылки накоторые еще не изменились.Вложенные транзакцииНекоторые из тех ограничений, о которых мы говорили выше, могут быть снятыпри использовании вложенных транзакций (nested transactions).

Транзакцияверхнего уровня может разделяться на дочерние транзакции, работающие парал­лельно, на различных машинах, для повышения производительности или упро­щения программирования. Каждая из этих дочерних транзакций также может со-5.6. Распределенные транзакции311стоять из одной или более транзакций или, в свою очередь, делиться на дочерниетранзакции.Вложенные транзакции поднимают перед нами небольшую, но важную про­блему. Представьте себе, что транзакция запускает несколько параллельныхдочерних транзакций, и одна из них завершается, делая результат видимым дляродительской транзакции. В ходе дальнейших вычислений родительская транз­акция прерывается, возвращая систему в то состояние, в котором она была дозапуска транзакции верхнего уровня.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6501
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее