
1.2. Задачи 29
Последний тип прозрачности, который обычно ассоциируется с распределен-
ными системами,
—
это
прозрачность сохранности {persistence
transparency),
мас-
кирующая реальную (диск) или виртуальную (оперативная память) сохранность
ресурсов. Так, например, многие объектно-ориентированные базы данных пре-
доставляют возможность непосредственного вызова методов для сохраненных
объектов. За сценой в этот момент происходит следующее: сервер баз данных
сначала копирует состояние объекта с диска в оперативную память, затем вы-
полняет операцию и, наконец, записывает состояние на устройство длительного
хранения. Пользователь, однако, остается в неведении о том, что сервер переме-
щает данные между оперативной памятью и диском. Сохранность играет важ-
ную роль в распределенных системах, однако не менее важна она и для обычных
(не распределенных) систем.
Степень прозрачности
Хотя прозрачность распределения в общем желательна для всякой распределен-
ной системы, существуют ситуации, когда попытки полностью скрыть от пользо-
вателя всякую распределенность не слишком разумны. Это относится, например,
к требованию присылать вам свежую электронную газету до 7 утра по местному
времени, особенно если вы находитесь на другом конце света и живете в другом
часовом поясе. Иначе ваша утренняя газета окажется совсем не той утренней га-
зетой, которую вы ожидаете.
Точно так же в глобальной распределенной системе, которая соединяет про-
цесс в Сан-Франциско с процессом в Амстердаме, вам не удастся скрыть тот факт,
что мать-пррфода не позволяет пересылать сообщения от одного процесса к дру-
гому быстрее чем за примерно 35 мс. Практика показывает, что при использова-
нии компьютерных сетей на это реально требуется несколько сотен миллисе-
кунд. Скорость передачи сигнала ограничивается не столько скоростью света,
сколько скоростью работы промежуточных переключателей.
Кроме того, существует равновесие между высокой степенью прозрачности
и производительностью системы. Так, например, многие приложения, предназна-
ченные для Интернета, многократно пытаются установить контакт с сервером,
пока, наконец, не откажутся от этой затеи. Соответственно, попытки замаскиро-
вать сбой на промежуточном сервере, вместо того чтобы попытаться работать че-
рез другой сервер, замедляют всю систему. В данном случае было бы эффектив-
нее как можно быстрее прекратить эти попытки или по крайней мере позволить
пользователю прервать попытки установления контакта.
Еще один пример: мы нуждаемся в том, чтобы реплики, находящиеся на раз-
ных континентах, были в любой момент гарантированно идентичны. Другими
словами, если одна копия изменилась, изменения должны распространиться на
все системы до того, как они выполнят какую-либо операцию. Понятно, что оди-
ночная операция обновления может в этом случае занимать до нескольких се-
кунд и вряд ли возможно проделать ее незаметно для пользователей.
Вывод из этих рассуждений следующий. Достижение прозрачности распреде-
ления
—
это разумная цель при проектировании и разработке распределенных