Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 105
Текст из файла (страница 105)
В частности, они предполагают, что каждая последовательность сопровождается сопутствующими операциями с переменными синхронизации, такими, как блокировки. Хотя это требует дополнительных усилий состороны программистов, эффективно реализовать модели слабой непротиворечивости обычно проще, чем строгой.В противовес этим моделям, ориентированным на данных, исследователи распределенных баз данных, предназначенных для мобильных пользователей, предложили множество моделей непротиворечивости, ориентированных на клиента.В этих моделях игнорируется тот факт, что данные могут совместно использоваться различными пользователями, вместо этого обсуждение сконцентрированона уровне непротиворечивости, необходимом отдельному клиенту. В основу этихмоделей легло соображение о том, что клиент время от времени может подсоединяться к различным репликам, при этом различия между ними должны быть незаметны.
В сущности, модели непротиворечивости, ориентированные на клиента, обеспечивают такое поведение системы, что при соединении клиента с новойрепликой эта реплика быстро приводится в соответствие с данными, с которымиэтот клиент работал раньше и которые могут находиться в других репликах.Для распространения обновлений применяются различные технологии. Разделение можно провести по тому, что на самом деле распространяется, куда распространяются обновления и кто инициирует распространение. Мы можем рассмотреть распространение уведомлений, операций или состояния. Кроме того,не все реплики следует всегда обновлять немедленно.
Какая реплика и в какоймомент будет обновлена, зависит от протокола распределения. И наконец, следует решить, могут ли обновления продвигаться другим репликам или каждая реплика сама должна извлекать обновление у других реплик.Протоколы непротиворечивости описывают конкретные реализации моделейнепротиворечивости. Для последовательной непротиворечивости и ее вариантоввыбор лежит между протоколами первичной копии и реплицируемой записи.В протоколах первичной копии все операции обновления передаются первичнойкопии, которая затем убеждается, что обновления правильно упорядочены и переданы. В протоколах реплицируемой записи обновление одновременно передается нескольким репликам.
В этом случае правильное упорядочение операцийчасто затруднено.Вопросы и задания1. Доступ к совместно используемым объектам в Java можно сериализовать,объявив их методы синхронизуемыми. Достаточно ли этого, чтобы гарантировать сериализацию при репликации этих объектов?2. Рассмотрим монитор, описанный в главе 1. Если потоки выполнения в реплицированном мониторе можно блокировать, что нам нужно сделать для гарантии правильного срабатывания условной переменной?6.7.
Итоги4013. Опишите своими словами, какова главная причина создания моделей слабойнепротиворечивости.4. Опишите, как реализована репликация в DNS и почему она так хорошо работает на практике.5. В ходе обсуждения моделей непротиворечивости мы часто ссылались на контракт между программой и хранилищем данных. Зачем нужен такой контракт?6. Линеаризуемость предполагает существование глобальных часов.
Однако, какмы видели, подобное требование делает нереальным поддержание в большинстве распределенных систем строгой непротиворечивости. Можно ли реализовать линеаризуемость в физически распределенных хранилищах данных?7. Мультипроцессорная система имеет одну шину. Можно ли реализовать в такой системе память со строгой непротиворечивостью?8.
Почему последовательность W1(x)a R2(x)NIL R3(x)a по отношению к представленному на рис. 6.5, б хранилищу данных запрещена?9. Рассмотрим рис. 6.7. Является ли допустимым результатом для распределенной разделяемой памяти, поддерживающей только непротиворечивость FIFO,значение 001110? Поясните свой ответ.10. Рассмотрим рис. 6.8. Является ли значение 001110 допустимым результатомдля последовательно непротиворечивой памяти? Поясните свой ответ.И.
В конце пункта 6.2.2 мы обсуждали формальную модель, которая гласит, чтолюбой набор операций в последовательно непротиворечивом хранилище данных может быть промоделирован строкой истории Я, из которой могут бытьвыведены все индивидуальные последовательности процессов. Для процессов Р1 и Р2, показанных на рис. 6.9, приведите все возможные значения Н.Игнорируйте процессы РЗ и Р4 и не включайте в Я их операции.12. Последовательно непротиворечивая память допускает шесть вариантов чередования инструкций, представленных в табл.
6.4. Перечислите их.13. Часто утверждается, что модели слабой непротиворечивости — это дополнительная «головная боль» для программистов. В какой степени это высказывание соответствует действительности?14. Во многих реализациях свободной непротиворечивости в распределенных системах с разделяемой памятью общие переменные синхронизируются при освобождении, а не при захвате. Зачем для них вообще нужен захват?15. Какую непротиворечивость обеспечивает система Огса, последовательную илипоэлементную? Поясните свой ответ.16. Способна ли полностью упорядоченная групповая рассылка, организуемаясеквенсором и предназначенная для сохранения непротиворечивости при активной репликации, повредить аргумент, передаваемый от точки к точке,в архитектуре системы?17. Какой тип непротиворечивости вы будете использовать при реализации проекта электронной биржи? Поясните свой ответ.402Глава 6. Непротиворечивость и репликация18.
Рассмотрим персональный почтовый ящик мобильного пользователя, реализованный как часть глобальной распределенной базы данных. Какой тип непротиворечивости, ориентированной на клиента, будет для него наиболее подходящим?19. Опишите простую реализацию непротиворечивости чтения своих записей дляотображения только что обновленных web-страниц.20. Приведите пример, когда непротиворечивость, ориентированная на клиента,может легко привести к конфликтам двойной записи.21. Необходимо ли, чтобы в условиях аренды часы клиента и сервера были точносинхронизированы?22. Рассмотрим неблокирующий протокол первичного архивирования, используемый для гарантированного соблюдения последовательной непротиворечивости в распределенном хранилище данных.
Будет ли это хранилище всегдаобеспечивать непротиворечивость чтения своих записей?23. Обычно для работы активной репликации необходимо, чтобы все операциивыполнялись всеми репликами в одном и том же порядке. Всегда ли это необходимо?24. Один из методов реализации полностью упорядоченной групповой рассылкис помощью секвенсора — сначала передать операцию секвенсору, которыйприсвоит ей уникальный номер и произведет групповую рассылку операции.Предложите два альтернативных метода и сравните эти три решения.25. Файл реплицирован на 10 серверах.
Перечислите все комбинации кворумовчтения и записи, которые допускает алгоритм голосования.26. В тексте мы описывали ориентированную на отправителя схему, предотвращающую реплицирование обращений. В схеме, ориентированной на получателя, реплика, получающая сообщение, распознает копии входящих сообщений,относящихся к одному и тому же обращению. Опишите, как можно предотвратить реплицирование обращений в схеме, ориентированной на получателя.27.
Рассмотрим причинно непротиворечивую медленную репликацию. Когда операции могут быть удалены из очереди?28. В этом упражнении вам предстоит реализовать простую систему, поддерживающую групповые вызовы RPC. Мы предполагаем, что имеется несколькореплицированных серверов и каждый клиент работает с сервером посредством RFC. Однако в условиях репликации клиент должен послать RFC каждой реплике. Программируя клиента, помните, что для приложения это должновыглядеть посылкой единственного вызова RFC. Считайте, что репликациятребуется для повышения производительности, а серверы подвержены сбоям.Глава 7Отказоустойчивость7.1. Понятие отказоустойчивости7.2. Отказоустойчивость процессов7.3.
Надежная связь клиент-сервер7.4. Надежная групповая рассылка7.5. Распределенное подтверждение7.6. Восстановление7.7. ИтогиХарактерной чертой распределенных систем, которая отличает их от единичныхмашин, является возможность частичного отказа. Частичный отказ происходитпри сбое в одном из компонентов распределенной системы. Этот отказ может нарушить нормальную работу некоторых компонентов, в то время как другие компоненты это никак не затронет.
В противоположность отказу в распределеннойсистеме отказ в нераспределенной системе всегда является глобальным, в томсмысле, что он затрагивает все ее компоненты и легко может привести к неработоспособности всего приложения.При создании распределенной системы очень важно добиться, чтобы она могла автоматически восстанавливаться после частичных отказов, незначительноснижая при этом общую производительность. В частности, когда бы ни случилсяотказ, распределенная система в процессе восстановления должна продолжатьработать приемлемым образом, то есть быть устойчивой к отказам, сохраняя вслучае отказов определенную степень функциональности.В этой главе мы познакомимся со способами обеспечения отказоустойчивости распределенной системы.
После изложения определенных базовых сведенийоб отказоустойчивости мы рассмотрим вопросы отказоустойчивости процессов инадежной групповой рассылки. Под отказоустойчивостью процессов мы понимаем методы, при помощи которых отказ одного или более процессов проходитдля остальной части системы почти незаметно. С этим вопросом связана проблема надежной групповой рассылки, при которой передача сообщений набору процессов производится с гарантией доставки. Надежная групповая рассылка частонеобходима для поддержания синхронности процессов.404Глава 7.
ОтказоустойчивостьКак мы уже говорили в главе 5, атомарность — это свойство, важное для многих приложений. Так, например, в распределенных транзакциях необходимо гарантировать, что все операции, входящие в транзакцию, либо происходят, либонет. Фундаментальным для атомарности в распределенных системах являетсяпонятие распределенных протоколов подтверждения, которые обсуждаются вотдельном разделе этой главы.И, наконец, мы рассмотрим, как восстанавливать систему после отказов. В частности, мы обсудим, когда и как следует сохранять состояние распределеннойсистемы на тот случай, если позже это состояние потребуется восстанавливать.7 . 1 . Понятие отказоустойчивостиИсследованию отказоустойчивости посвящено большое количество трудов.
Этотраздел мы начнем с рассмотрения базовых концепций обработки отказов, а далееобсудим модели отказов. Основа всех методик ликвидации последствий отказов — избыточность, о ней мы тоже поговорим. Дополнительную информациюобщего характера по отказоустойчивости можно найти, например, в [213].7 . 1 . 1 . Основные концепцииЧтобы понять роль отказоустойчивости в распределенных системах, сначала необходимо выяснить, что для распределенных систем означает «быть отказоустойчивыми». Отказоустойчивость тесно связана с понятием надежных систем {dependable systems). Надежность — это термин, охватывающий множество важныхтребований к распределенным системам [241], включая:4 доступность (availability);-¥ безотказность (reliability);> безопасность (safety);4 ремонтопригодность (maintainability).Доступность — это свойство системы находиться в состоянии готовности кработе.