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

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

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

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

Сообщение С от про­цесса 2 процессу 1 будет послано на отметке 60 и достигнет цели на отметке 56.Сообщение D от процесса 1 процессу О будет послано на отметке 64 и достигнетцели на отметке 54. Эти цифры абсолютно невозможны. Это та ситуация, кото­рую мы должны предотвратить.Решение, найденное Лампортом, прямо вытекает из отношения «происходитраньше». Поскольку С посылается на отметке 60, оно должно достичь цели наотметке 61 или позднее. Поэтому каждое сообщение содержит время отправкипо часам отправителя.

Когда сообщение достигает цели, но часы получателя по-288Глава 5. Синхронизацияказывают время, более раннее чем время отправки, получатель быстро подводитсвои часы так, чтобы они показывали время на единицу большее времени от­правки. На рис. 5.7, б мы видим, что теперь сообщение С приходит на отметке 61.Таким же образом сообщение D приходит теперь на отметке 70.С одним небольшим дополнением этот алгоритм удовлетворяет нашим требо­ваниям по глобальному времени.

Это добавление состоит в том, что между лю­быми двумя событиями часы должны «протикать» как минимум один раз. Еслипроцесс посылает или принимает в коротком сеансе два сообщения, он долженсделать так, чтобы его часы успели протикать один раз (как минимум) в проме­жутке между сообщениями.В некоторых случаях желательно удовлетворять дополнительному требова­нию: никакие два сообщения не должны происходить одновременно. Чтобы выпол­нить это требование, мы можем добавить номер процесса, в котором происходятсобытия, справа от метки времени и отделить его от целой части десятичной точ­кой.

Таким образом, если в процессах 1 и 2 в момент времени 40 происходят со­бытия, то первый из них будет происходить в 40.1, а второй в 40.2.Используя этот способ, мы получаем возможность указания времени для всехсобытий в распределенной системе, подпадающих под перечисленные ниже ус­ловия.4 Если а происходит раньше b в одном и том же процессе, то С(а)<С(Ь),4- Если аи b представляют собой отправку и получение сообщения, соответ­ственно С(а)<С(Ь),4^ Для всех различимых событий аиЬ выполняется соотношение С(а) ^ С(Ь).Этот алгоритм дает нам возможность полностью упорядочить все событияв системе.

В отличие от этого множество других распределенных алгоритмов дляустранения неясностей требуют упорядоченности, так что этот алгоритм широкоцитируется в литературе.Пример — полностью упорядоченная групповая рассылкав качестве области приложения алгоритма Лампорта рассмотрим ситуацию, ко­гда необходима репликация базы данных на нескольких сайтах. Например, дляповышения производительности запросов банк может разместить копию базыданных по счетам в двух разных местах, скажем в Нью-Йорке и Сан-Франциско.Запросы всегда пересылаются к ближайшей копии.

Ценой быстрого ответа на за­прос отчасти являются высокие затраты на обновление, поскольку каждая опера­ция обновления должна быть передана каждой из реплик.На самом деле в отношении изменений существуют более точные требования.Предположим, клиент в Сан-Франциско хочет добавить $100 на свой счет, накотором в настоящее время лежит $1000.

В то же самое время сотрудник банка вНью-Йорке начинает обновлять счета пользователей, увеличивая сумму на нихна процент по вкладу — 1 %. Оба изменения должны быть внесены в обе копиибазы данных. Однако из-за задержек в базовой сети передачи данных обновле­ния могут дойти в ином порядке (рис. 5.8).5.2. Л о г и ч е с к и е часыОбновление 1выполняется раньше,чем обновление 2Реплицированнаябаза данных289Обновление 2выполняется раньше,чем обновление 1Рис. 5.8.

Обновление реплицированной базы данных, после которогоона приходит в противоречивое состояниеПользовательская операция обновления будет выполнена в Сан-Францискораньше обновления для начисления процентов. В Нью-Йорке же наоборот, ко­пия счета клиента будет обновлена после получения одного процента прибыли,а уж после этого по ней будет проведена операция с депозитом в $100. Соответ­ственно, база данных в Сан-Франциско будет иметь общую сумму счета $1,111,а база данных в Нью-Йорке — $1,110.Проблема, с которой мы столкнулись, состоит в том, что две операции обнов­ления должны быть выполнены в одинаковом порядке в каждой из копий. Хотяочередность обработки разная, с точки зрения непротиворечивости она абсолют­но не важна. Важно, чтобы обе копии были абсолютно одинаковыми. Обычно та­кого рода ситуации требуют полностью упорядочетюй групповой рассылки{totally-ordered multicasting), то есть такой операции групповой рассылки, при ко­торой все сообщения доставляются всем получателям с одинаковой очередно­стью.

Для реализации такой рассылки абсолютно распределенным методом мо­гут использоваться отметки времени Лампорта.Рассмотрим группу процессов, посылающих друг другу сообщения путемгрупповой рассылки. Каждое из сообщений всегда имеет отметку времени с те­кущим временем (логическим) отправителя. Если сообщение передается путемгрупповой рассылки, оно по идее приходит также и отправителю. Кроме того,мы предполагаем, что сообщения каждого из отправителей принимаются в томпорядке, в котором они посылались, и что ни одно сообщение не теряется.Когда процесс принимает сообщение, оно попадает в локальную очередь в по­рядке, определяемом отметкой времени.

Получатель рассылает групповое под­тверждение остальным процессам. Заметим, что если для корректировки локаль­ных часов мы используем алгоритм Лампорта, отметка времени на полученномсообщении должна быть меньше, чем на подтверждении.Интересный аспект такого подхода состоит в том, что все процессы будутиметь одну и ту же копию локальной очереди. Каждое сообщение рассылаетсявсем процессам, включая подтверждения, а предполагает ответ от всех процес­сов. Напомним также, что мы решили, что сообщения принимаются в порядке ихотправки. Каждый процесс помещает полученное сообщение в свою локальнуюочередь в соответствии с отметкой времени на этом сообщении. Часы Лампортагарантируют, что никакие два сообщения не могут иметь одинаковую отметкувремени, а также то, что отметки времени отражают общий порядок сообщений.290Глава 5.

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

Векторные отметки времениОтметки времени Лампорта приводят к ситуации, когда все события в распреде­ленной системе имеют единую последовательность, такую, что если событие апроисходит раньше события 6, то а оказывается перед /?, то есть С{а) < С(Ь).Однако при помощи отметок времени Лампорта ничего нельзя сказать о взаимо­связи между двумя сообщениями аи Ь, просто сравнивая их временные отметки,соответственно С(а) и С{Ь). Другими словами, если С(а) < С{Ь), это не обяза­тельно означает, что события а действительно произошло раньше, чем Ь. Для это­го необходимо что-то еще.Чтобы понять это, рассмотрим систему рассылки сообщений.

Один из наибо­лее популярных примеров подобной системы сообщений — это служба элек­тронных досок сообщений в Интернете, сетевые новости (например, описанныев [110]). Пользователи, а следовательно, процессы, выбирают определенные дис­куссионные группы. Послания в такую группу, будь то письма или реакция надругие письма, рассылаются групповой рассылкой всем членам группы. Чтобыгарантировать, что ответы присылаются после писем, на которые в них отвечали,мы можем попытаться использовать описанную выше схему полностью упоря­доченной групповой рассылки.

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

Не более, но и не менее. Если два письма илиответы на них независимы друг от друга, порядок их получения обычно неважен.Причинно-следственная связь может быть соблюдена посредством векторныхотметок времени (vector timestamps). Векторная отметка времени VT{d) присво­енная событию а, имеет следующее свойство: если VT{d) < VT(b) для события 6,значит, событие а является причинно предшествующим событию Ь. Векторныеотметки времени создаются путем приписыванию каждому процессу Р, вектора Vuс перечисленными ниже свойствами.5.2.

Логические часы291^ V^[/] — это число событий, которые произошли с процессом Р, к настояще­му времени.> Если Vi[j] = ky то процесс Р/ знает, что с процессом Р, произошло k событий.Первое свойство поддерживается путем увеличения У, [г] на единицу при ка­ждом новом событии, происходящем в процессе Ру. Второе свойство поддержива­ется вложением векторов в посылаемые сообщения.

Так, когда процесс Р/ посы­лает сообщение т, он пересылает вместе с ним и его текущий вектор как отметкувремени vt.Таким образом, получатель оказывается информированным о номере сообще­ния, которое вызвало активность процесса Р/. Более важно, однако, что получа­тель уведомляется о том, сколько сообщений от других процессов должны прий­ти к нему до того момента, как процесс Р, послал ему сообщение т. Другимисловами, отметка времени vt в сообщении т говорит получателю, сколько собы­тий в других процессах должны предварять т и с каким из них у сообщения тможет быть причинно-следственная связь.

Когда процесс Pj получает т, это побужда­ет его установить каждый элемент Vj[k] в собственном векторе в max{Vj[k], vt[k]}.Вектор теперь отражает число сообщений, которые должен получить процесс Р/и которые, как он видел, предшествовали посылке т. Затем элемент Vj[i] увели­чивается на единицу, отражая факт получение сообщения ш, как следующего со­общения от процесса Р, [374].Векторная отметка времени может использоваться для доставки сообщенийтолько без нарушения причинно-следственной связи.

Рассмотрим далее примерс электронной доской объявлений. Когда процесс Р, отправляет письмо, он осу­ществляет множественную рассылку этого письма в виде сообщения а с помет­кой времени vt(a), равной Vi. Когда другой процесс, Pj, получает а, он исправляетсвой собственный вектор, устанавливая Vj[i] > vt(a)[i].Допустим теперь, что Pj посылает ответ на это письмо. Он делает это посред­ством множественной рассылки сообщения г с отметкой времени vt(r)y равной Vj.Отметим, что vt(r)[i] >vt(a)[i].

Если считать связь надежной, оба эти сообще­ния — а, содержащее письмо, и г, содержащее ответ, — в конце концов достигнутдругого процесса, Pk. Поскольку мы не делали никаких предположений относи­тельно очередности доставки сообщений, сообщение г может прийти процессу Pkраньше, чем сообщение а.

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

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

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