
330 Глава 6. Непротиворечивость и репликация
Другой довод в пользу репликации данных
—
производительность. Реплика-
ция повышает производительность, когда распределенную систему приходится
масштабировать на множество машин и географических зон. Масштабирование
на множество машин имеет место, например, когда возрастает число процессов,
требующих доступа к данным, управляемым одним сервером. В этом случае
производительность можно повысить путем репликации сервера с последующим
разделением общего объема работы между сервером и репликами. Мы уже при-
водили этот пример в главе 1, когда кратко рассматривали кластеры реплициро-
ванных web-серверов.
При масштабировании на увеличившуюся географическую зону мы также нуж-
даемся в репликации. Основная идея состоит в помещении копии данных побли-
зости от использующего ее процесса, что ведет к сокращению времени доступа.
В результате наблюдаемая производительность процесса возрастает. Этот при-
мер иллюстрирует также и то, что выигрыш в производительности, получаемый
благодаря репликации, оценить не просто. Хотя в клиентском процессе может
наблюдаться рост производительности, возможна ситуация, в которой для свое-
временного обновления всех реплик потребуется увеличение пропускной спо-
собности сети. Мы вернемся к этой теме при обсуждении протоколов распро-
странения.
Если репликация помогает повысить надежность и производительность, что
нам может помешать? К сожалению, это цена, которую нам придется заплатить
за репликацию данных. Проблема репликации в том, что наличие множества ко-
пий может создать проблемы с непротиворечивостью данных. Каждый раз при
изменении копии она начинает отличаться от всех прочих. Соответственно, для
сохранения непротиворечивости эти изменения должны быть перенесены и на
остальные копии. То, как и когда следует переносить эти изменения, и определя-
ет цену репликации.
Чтобы разобраться в проблеме, рассмотрим постоянно растущее время досту-
па к web-страницам. Если не предпринимать никаких специальных мер, загрузка
страницы с удаленного web-сервера может занимать до нескольких секунд. Для
повышения производительности web-браузеры часто локально сохраняют копии
загруженных ранее web-страниц (то есть
кэшируют
web-страницы). Если поль-
зователь снова запросит подобную страницу, браузер автоматически вернет ему
локальную копию. Скорость доступа, с точки зрения пользователя, будет потря-
сающая. Однако, если пользователь всегда хочет иметь последнюю версию стра-
ницы, его может постичь разочарование. Проблема состоит в том, что если в про-
межутке между обращениями страница будет модифицирована, модификации не
распространяться на копии в кэше, что сделает эти копии устаревшими.
Одно из решений проблемы возвращения пользователю актуальных копий
состоит в том, чтобы запретить браузеру хранить локальные копии, а задачу об-
новления полностью возложить на сервер. Однако это решение может приве-
сти к увеличению времени доступа, ведь тогда у пользователя не будет реплик.
Другое решение
—
позволить web-серверу объявлять кэшированные копии уста-
ревшими или обновлять их, но тогда серверу придется проверять все кэширован-
ные копии и рассылать им сообщения. Это, в свою очередь, может привести