Система Orphus

Распределенные системы

Принципы и парадигмы

Авторы: Эндрю Таненбаум
Маартен ван Стеен
Издательство: Питер, 2003
877 страниц

Материал предоставил: Евгений Охотников
Найти в магазинах
Купить в Озоне (505 руб.)
Купить в Books.Ru
Купить в Болеро (397 руб.)
Купить в My-Shop.ru (423 руб.)

Аннотация

Содержание
Из предисловия к книге
Комментарии

Аннотация

Эта книга является фундаментальным курсом по распределенным системам. В ней детально описаны принципы, концепции и технологии этих систем: связь, процессы, синхронизация, целостность и репликация, защита от сбоев и безопасность. Особое внимание в книге уделено World Wide Web, развитие которой и послужило толчком к резкому повышению интереса к распределенным системам. Как это характерно для всех книг Э.Таненбаума, последовательное и детальное изложение теории сопровождается примерами реально действующих систем.

Книга предназначена прежде всего студентам и преподавателям, но, безусловно, будет полезна и специалистам данной области.

Содержание

Об авторах
Предисловие
От издательства

Руководство по использованию книги

Курсы для студентов старших курсов и дипломников
Семинары для профессионалов
Первый день
Второй день
Самостоятельное изучение

Глава 1. Введение

1.1. Определение распределенной системы
1.2. Задачи
1.2.1. Соединение пользователей с ресурсами
1.2.2. Прозрачность
1.2.3. Открытость
1.2.4. Масштабируемость
1.3. Концепции аппаратных решений
1.3.1. Мультипроцессоры
1.3.2. Гомогенные мультикомпьютерные системы
1.3.3. Гетерогенные мультикомпьютерные системы
1.4. Концепции программных решений
1.4.1. Распределенные операционные системы
1.4.2. Сетевые операционные системы
1.4.3. Программное обеспечение промежуточного уровня
1.5. Модель клиент-сервер
1.5.1. Клиенты и серверы
1.5.2. Разделение приложений по уровням
1.5.3. Варианты архитектуры клиент-сервер
1.6. Итоги
Вопросы и задания

Глава 2. Связь

2.1. Уровни протоколов
2.1.1. Низкоуровневые протоколы
2.1.2. Транспортные протоколы
2.1.3. Протоколы верхнего уровня
2.2. Удаленный вызов процедур
2.2.1. Базовые операции RPC
2.2.2. Передача параметров
2.2.3. Расширенные модели RPC
2.2.4. Пример - DCE RPC
2.3. Обращение к удаленным объектам
2.3.1. Распределенные объекты
2.3.2. Привязка клиента к объекту
2.3.3. Статическое и динамическое удаленное обращение к методам
2.3.4. Передача параметров
2.3.5. Пример 1 - удаленные объекты DCE
2.3.6. Пример 2 - Java RMI
2.4. Связь посредством сообщений
2.4.1. Сохранность и синхронность во взаимодействиях
2.4.2. Нерезидентная связь на основе сообщений
2.4.3. Сохранная связь на основе сообщений
2.4.4. Пример - IBM MQSeries
2.5. Связь на основе потоков данных
2.5.1. Поддержка непрерывных сред
2.5.2. Потоки данных и качество обслуживания
2.5.3. Синхронизация потоков данных
2.6. Итоги
Вопросы и задания

Глава 3. Процессы

3.1. Потоки выполнения
3.1.1. Знакомство с потоками выполнения
3.1.2. Потоки выполнения в распределенных системах
3.2. Клиенты
3.2.1. Пользовательские интерфейсы
3.2.2. Клиентское программное обеспечение, обеспечивающее прозрачность распределения
3.3. Серверы
3.3.1. Общие вопросы разработки
3.3.2. Серверы объектов
3.4. Перенос кода
3.4.1. Подходы к переносу кода
3.4.2. Перенос и локальные ресурсы
3.4.3. Перенос кода в гетерогенных системах
3.4.4. Пример - D'Agent
3.5. Программные агенты
3.5.1. Программные агенты в распределенных системах
3.5.2. Технология агентов
3.6. Итоги
Вопросы и задания

Глава 4. Именование

4.1. Именованные сущности
4.1.1. Имена, идентификаторы и адреса
4.1.2. Разрешение имен
4.1.3. Реализация пространств имен
4.1.4. Пример - система доменных имен
4.1.5. Пример - X.500
4.2. Размещение мобильных сущностей
4.2.1. Именование и локализация сущностей
4.2.2. Простые решения
4.2.3. Подходы на основе базовой точки
4.2.4. Иерархические подходы
4.3. Удаление сущностей, на которые нет ссылок
4.3.1. Проблема объектов, на которые нет ссылок
4.3.2. Подсчет ссылок
4.3.3. Организация списка ссылок
4.3.4. Идентификация сущностей, на которые нет ссылок
4.4. Итоги
Вопросы и задания

Глава 5. Синхронизация

5.1. Синхронизация часов
5.1.1. Физические часы
5.1.2. Алгоритмы синхронизации часов
5.1.3. Использование синхронизированных часов
5.2. Логические часы
5.2.2. Отметки времени Лампорта
5.2.3. Векторные отметки времени
5.3. Глобальное состояние
5.4. Алгоритмы голосования
5.4.1. Алгоритм забияки
5.4.2. Кольцевой алгоритм
5.5. Взаимное исключение
5.5.1. Централизованный алгоритм
5.5.2. Распределенный алгоритм
5.5.3. Алгоритм маркерного кольца
5.5.4. Сравнение трех алгоритмов
5.6. Распределенные транзакции
5.6.1. Модель транзакций
5.6.2. Классификация транзакций
5.6.3. Реализация
5.6.4. Управление параллельным выполнением транзакций
5.7. Итоги
Вопросы и задания

Глава 6. Непротиворечивость и репликация

6.1. Обзор
6.1.1. Доводы в пользу репликации
6.1.2. Репликация объектов
6.1.3. Репликация как метод масштабирования
6.2. Модели непротиворечивости, ориентированные на данные
6.2.1. Строгая непротиворечивость
6.2.2. Линеаризуемость и последовательная непротиворечивость
6.2.3. Причинная непротиворечивость
6.2.4. Непротиворечивость FIFO
6.2.5. Слабая непротиворечивость
6.2.6. Свободная непротиворечивость
6.2.7. Поэлементная непротиворечивость
6.2.8. Сравнение моделей непротиворечивости
6.3. Модели непротиворечивости, ориентированные на клиента
6.3.1. Потенциальная непротиворечивость
6.3.2. Монотонное чтение
6.3.3. Монотонная запись
6.3.4. Чтение собственных записей
6.3.5. Запись за чтением
6.3.6. Реализация
6.4. Протоколы распределения
6.4.1. Размещение реплик
6.4.2. Распространение обновлений
6.4.3. Эпидемические протоколы
6.5. Протоколы непротиворечивости
6.5.1. Протоколы на базе первичной копии
6.5.2. Протоколы реплицируемой записи
6.5.3. Протоколы согласования кэшей
6.6. Примеры
6.6.1. Orca
6.6.2. Слабая причинно непротиворечивая репликация
6.7. Итоги
Вопросы и задания

Глава 7. Отказоустойчивость

7.1. Понятие отказоустойчивости
7.1.1. Основные концепции
7.1.2. Модели отказов
7.1.3. Маскирование ошибок при помощи избыточности
7.2. Отказоустойчивость процессов
7.2.1. Вопросы разработки
7.2.2. Маскировка ошибок и репликация
7.2.3. Соглашения в системах с ошибками
7.3. Надежная связь клиент-сервер
7.3.1. Сквозная передача
7.3.2. Семантика RPC при наличии ошибок
7.4. Надежная групповая рассылка
7.4.1. Базовые схемы надежной групповой рассылки
7.4.2. Масштабируемость надежной групповой рассылки
7.4.3. Атомарная групповая рассылка
7.5. Распределенное подтверждение
7.5.1. Двухфазное подтверждение
7.5.2. Трехфазное подтверждение
7.6. Восстановление
7.6.1. Основные понятия
7.6.2. Создание контрольных точек
7.6.3. Протоколирование сообщений
7.7. Итоги
Вопросы и задания

Глава 8. Защита

8.1. Общие вопросы защиты
8.1.1. Угрозы, правила и механизмы
8.1.2. Вопросы разработки
8.1.3. Криптография
8.2. Защищенные каналы
8.2.1. Аутентификация
8.2.2. Целостность и конфиденциальность сообщений
8.2.3. Защищенное групповое взаимодействие
8.3. Контроль доступа
8.3.1. Общие вопросы контроля доступа
8.3.2. Брандмауэры
8.3.3. Защита мобильного кода
8.4. Управление защитой
8.4.1. Управление ключами
8.4.2. Управление защищенными группами
8.4.3. Управление авторизацией
8.5. Пример - Kerberos
8.6. Пример - SESAME
8.6.1. Компоненты системы SESAME
8.6.2. Сертификаты атрибутов привилегий
8.7. Пример - электронные платежные системы
8.7.1. Электронные платежные системы
8.7.2. Защита в электронных платежных системах
8.7.3. Примеры протоколов
8.8. Итоги
Вопросы и задания

Глава 9. Распределенные системы объектов

9.1. CORBA
9.1.1. Обзор
9.1.2. Связь
9.1.3. Процессы
9.1.4. Именование
9.1.5. Синхронизация
9.1.6. Кэширование и репликация
9.1.7. Отказоустойчивость
9.1.8. Защита
9.2. DCOM
9.2.1. Обзор
9.2.2. Связь
9.2.3. Процессы
9.2.4. Именование
9.2.5. Синхронизация
9.2.6. Репликация
9.2.7. Отказоустойчивость
9.2.8. Защита
9.3. Globe
9.3.1. Обзор
9.3.2. Связь
9.3.3. Процессы
9.3.4. Именование
9.3.5. Синхронизация
9.3.6. Репликация
9.3.7. Отказоустойчивость
9.3.8. Защита
9.4. Сравнение систем CORBA, DCOM и Globe
9.4.1. Обзор
9.4.2. Связь
9.4.3. Процессы
9.4.4. Именование
9.4.5. Синхронизация
9.4.6. Кэширование и репликация
9.4.7. Отказоустойчивость
9.4.8. Защита
9.5. Итоги
Вопросы и задания

Глава 10. Распределенные файловые системы

10.1. Файловая система компании Sun
10.1.1. Обзор
10.1.2. Связь
10.1.3. Процессы
10.1.4. Именование
10.1.5. Синхронизация
10.1.6. Кэширование и репликация
10.1.7. Отказоустойчивость
10.1.8. Защита
10.2. Файловая система Coda
10.2.1. Обзор
10.2.2. Связь
10.2.3. Процессы
10.2.4. Именование
10.2.5. Синхронизация
10.2.6. Кэширование и репликация
10.2.7. Отказоустойчивость
10.2.8. Защита
10.3. Другие распределенные файловые системы
10.3.1. Plan 9 - ресурсы как файлы
10.3.2. xFS - файловая система без серверов
10.3.3. SFS - масштабируемая защита
10.4. Сравнение распределенных файловых систем
10.4.1. Философия
10.4.2. Связь
10.4.3. Процессы
10.4.4. Именование
10.4.5. Синхронизация
10.4.6. Кэширование и репликация
10.4.7. Отказоустойчивость
10.4.8. Защита
10.5. Итоги
Вопросы и задания

Глава 11. Распределенные системы документов

11.1. World Wide Web
11.1.1. WWW
11.1.2. Связь
11.1.3. Процессы
11.1.4. Именование
11.1.5. Синхронизация
11.1.6. Кэширование и репликация
11.1.7. Отказоустойчивость
11.1.8. Защита
11.2. Lotus Notes
11.2.1. Обзор
11.2.2. Связь
11.2.3. Процессы
11.2.4. Именование
11.2.5. Синхронизация
11.2.6. Репликация
11.2.7. Отказоустойчивость
11.2.8. Защита
11.3. Сравнение WWW и Lotus Notes
11.4. Итоги
Вопросы и задания

Глава 12. Распределенные системы согласования

12.1. Знакомство с моделями согласования
12.2. TIB/Rendezvous
12.2.1. WWW
12.2.2. Связь
12.2.3. Процессы
12.2.4. Именование
12.2.5. Синхронизация
12.2.6. Кэширование и репликация
12.2.7. Отказоустойчивость
12.2.8. Защита
12.3. Jini
12.3.1. Обзор
12.3.2. Связь
12.3.3. Процессы
12.3.4. Именование
12.3.5. Синхронизация
12.3.6. Кэширование и репликация
12.3.7. Отказоустойчивость
12.3.8. Защита
12.4. Сравнение TIB/Rendezvous и Jini
12.5. Итоги
Вопросы и задания

Глава 13. Библиография

13.1. Литература для дополнительного чтения
13.1.1. Введение и общие вопросы
13.1.2. Связь
13.1.3. Процессы
13.1.4. Именование
13.1.5. Синхронизация
13.1.6. Непротиворечивость и репликация
13.1.7. Отказоустойчивость
13.1.8. Защита
13.1.9. Распределенные системы объектов
13.1.10. Распределенные файловые системы
13.1.11. Распределенные системы документов
13.1.12. Распределенные системы согласования
13.2. Список литературы

Список терминов

Алфавитный указатель

Из предисловия к книге

Эта книга первоначально задумывалась как пересмотренный вариант книги Distributed Operating Systems, но вскоре мы поняли, что с 1995 года произошли такие изменения, что простым пересмотром здесь не обойтись. Нужна совершенно новая книга. Эта новая книга получила и новое название Distributed Systems: Principles and Paradigms. Изменения в названии отражают факт смещения акцентов. Раньше мы рассматривали вопросы, связанные с операционными системами, а эта книга посвящена распределенным системам в более широком смысле этого слова. Так, например, среда World Wide Web, которая считается самой большой из когда-либо построенных распределенных систем, в оригинальной книге даже не упоминалась, поскольку не является операционной системой. Теперь ей отведена едва ли целая глава.

Книгу логически образуют две части - принципы и парадигмы. В первой главе дается введение в тему. Затем следует семь глав, описывающих отдельные принципы, которые мы сочли особенно важными: связь, процессы, именование, синхронизация, непротиворечивость и репликация, защита от сбоев и защита.

Реальные распределенные системы строятся обычно на основе некоей парадигмы, например, "все кругом - это файлы". В следующих четырех главах рассматриваются различные парадигмы и описываются построенные на их основе реальные системы. В качестве парадигм выбраны системы объектов, распределенные файловые системы, системы документов и системы согласования.

В последней главе имеется аннотация литературы, которая может быть использована в качестве отправной точки для дополнительного изучения темы, а так же список работ, цитируемых в этой книге.

Книга предназначена для студентов старших курсов и дипломников по "компьютерным дисциплинам". Соответственно, у нее есть свой web-сайт с таблицами в формате PowerPoint и рисунками из книги в различных форматах. На него можно попасть, зайдя на страницу http://www.prenhall.com/tanenbaum/ и щелкнув на ссылке с названием книги. Для преподавателей, использующих эту книгу на занятиях, доступно руководство с решениями всех упражнений. За экземплярами руководства им следует обратиться к представителю издательства Prentice Hall. Разумеется, книга прекрасно подойдет и для тех, кто, хотя и никак не связан с получением образования, хотел бы получить дополнительные знания по этой нужной теме.

Комментарии

Евгений Охотников

Написать данный комментарий оказалось не проще, чем прочитать эту книгу. Широта охваченного книгой материала просто потрясает. Именно широта. В книге говорится об очень многих вопросах, но каждый из них не раскрывается слишком глубоко. Поэтому не нужно расчитывать, что прочтя "Распределенные системы" можно стать специалистом по, например, CORBA, Jini или распределенным файловым системам. Зато можно будет очень хорошо представить себе то множество проблем, с которыми связана разработка распределенных систем. Т.е. от книги следует ожидать не столько углубления собственных знаний, сколько расширения своего кругозора. Но расширения очень значительного.

На мой взгляд, бесполезно пытаться коротко пересказать о чем эта книга. Ее оглавление говорит само за себя. По способу подачи материала она действительно производит впечатление учебника для студентов старших курсов. Тем же, кто интересуется распределенными системами более серьезно, стоит обратить внимание на последнюю главу "Библиография", особенно на раздел "13.1. Литература для дополнительного чтения".

Мое же мнение состоит в том, что читать ее интересно и полезно. Хотя бы для общего развития.