
376 Глава 6. Непротиворечивость и репликация
выберет восприимчивый сервер, относительно мала (скорее они будут натыкать-
ся друг на друга). Соответственно, имеется шанс на то, что какой-то из серверов
в течение длительного времени будет оставаться восприимчивым просто потому,
что он не был выбран инфицированным сервером.
В противоположность этому, извлечение обновлений при большом количест-
ве инфицированных серверов будет работать гораздо лучше. В этом случае рас-
пространение обновлений, в сущности, возлагается на восприимчивые серверы.
Шансы значительно выше, ведь теперь сам восприимчивый сервер должен свя-
заться с инфицированныхМ сервером, чтобы затем получить от него обновления и
самому стать инфицированным.
Можно показать, что если изначально инфицирован лишь один сервер, при
использовании любой из форм антиэнторпии обновления потенциально могут
распространиться на все серверы. Однако, чтобы убедиться, что обновления рас-
пространяются быстро, имеет смысл задействовать дополнительный механизм,
при помощи которого более или менее инфицированными немедленно станут
как минимум несколько серверов. Обычно в таком случае помогает прямое про-
движение обновления на несколько серверов.
Один из специальных вариантов подобного подхода именуется
распростра-
нением слухов
{rumor
spreading),
или просто
болтовней
{gossiping).
Он работает
следующим образом. Если на сервере Р имеется обновленный элемент данных х,
значит, он связывается с другим произвольным сервером Q и пытается продви-
нуть обновление на Q. Однако возможно, что Q У^^ получил это обновление с
другого сервера. В этом случае Р может потерять интерес к дальнейшему распро-
странению обновления, скажем, с вероятностью \/k. Другими словами, он стано-
вится очищенным.
Болтовня полностью соответствует реальной жизни. Если Боб узнает какую-
то «жареную» новость, о которой можно посплетничать, он, скорее всего, позво-
нит своей подружке Алисе и все ей расскажет. Алиса, как и Боб, будет заинтере-
сована в том, чтобы нести эту новость дальше. Однако она может быть разочаро-
вана, если, позвонив приятелю, скажем Чаку, услышит от него, что он уже знает
эту новость. Имеется шанс на то, что она перестанет обзванивать своих друзей.
Зачем ей это, если все и так знают ее новость?
Болтовня может быть действительно хорошим способом быстрого распростра-
нения обновлений. Однако оно не гарантирует, что будут обновлены все серверы
[124].
Можно показать, что в случае хранилищ данных, содержащих множество
серверов, доля s серверов, которые не получат обновления, то есть останутся вос-
приР1мчивыми, рассчитывается следующим образом:
Например, при ^ = 3 значение s составляет менее 0,02. Это означает, что вос-
приимчивыми останутся менее 2
%
серверов. Тем не менее следует принять спе-
циальные меры, чтобы гарантировать, что эти серверы также будут обновлены.
Комбинирование антиэнтропии с механизмом распространения слухов
—
одна
из таких уловок
Одно из основных преимуществ эпидемических алгоритмов
—
их масштаби-
руемость, вытекающая из того факта, что синхронизировать друг с другом при-