Книга написана на базе курсов, прочитанных автором в Утрехтском университете, и снабжена упражнениями, которые могут быть полезны широкому кругу читателей, в том числе тем, кто рискнет ее использовать для самостоятельной проработки. Кроме семнадцати глав, освещающих основные аспекты темы книги, в ней имеются два приложения. В первом изложены соглашения об использовании псевдокода, подобного языку программирования Паскаль, на котором в книге приведены описания алгоритмов. Во втором приложении даны сведения о графах и сетях, приводятся термины и определения, а также рассмотрены наиболее распространенные виды графов и обращено внимание на то, как следует применять графы при проектировании и анализе вычислительных сетей.
Книгу открывает введение с описанием распределенной системы в понимании автора, а также с изложением архитектуры и используемых языков программирования. Кроме того, дается представление
об алгоритмах, используемых для описания функционирования распределенных вычислительных систем.
Далее внимание читателя сосредоточивается на модели распределенной системы, прежде всего через рассмотрение ее состояний с помощью переходов и их алгоритмов. Функционирование распределенной сети представляется через причинно-следственный порядок событий и логические часы их синхронизации. Наряду с этим алгоритмический анализ распределенной сети учитывает сложность алгоритмов.
Ряд глав книги посвящен алгоритмам взаимодействия частей распределенных систем, а также коммуникационным протоколам, в том числе: симметричному протоколу раздвижного окна и протоколу
с таймером; алгоритму маршрутизации и неблокируемой коммутации пакетов; алгоритму обхода сети и обнаружения завершения процесса функционирования системы на основе распределенных алгоритмов, позволяющему организовывать взаимодействие частей внутри распределенной системы с учетом их функционирования. Такие алгоритмы позволяют давать взаимодействию количественную оценку.
В сложных распределенных системах, реализуемых на сетях связи, важными являются проблемы организации доступа к их частям, анализ моментальных состояний системы, а также особенности восприятия направления движения информации и ориентации процесса ее обработки. В этой связи ряд глав книги посвящен распределенным алгоритмам синхронизации.
Особый интерес в книге Теля представляет то, что в ней рассматриваются распределенные системы, которые функционируют в условиях отказов, возникающих в результате помех, что предъявляет к алгоритмам требование отказоустойчивости, при этом отдельно автор рассматривает модели асинхронных и синхронных распределенных систем, удовлетворяющих требованиям отказоустойчивости.
Завершают книгу главы, содержащие материалы по обнаружению неисправностей в функционировании распределенных систем путем включения специальных модулей, реализующих контроль работы реализованных алгоритмов. Здесь также рассматриваются стабилизирующие алгоритмы, позволяющие устранять последствия обнаруженных отказов в работе системы.
Работа с книгой Теля потребует от читателя некоторого упорства – уровень изложения находится в ней выше, чем предлагаемый сегодня в традиционных курсах по теории сетей связи, читаемых в технических вузах. Особо в книге хотелось бы отметить способ подачи материала, позволяющий заинтересованным читателям использовать в проектных решениях количественные рекомендации приводимых автором алгоритмов, а также опираться на весьма общие модели рассматриваемых распределенных систем и их функциональных возможностей.
Несомненный интерес у читателей вызовут рассматриваемые в книге помехозащищенные распределенные алгоритмы, гарантирующие устойчивую работу распределенных систем, и количественные оценки сложности алгоритмов, позволяющих оценивать качество функционирования распределенных систем в целом. Более того, материалы главы книги о поиске неисправностей в распределенных системах позволяют оценить время, необходимое на устранение последствий сбоев и отказов в работе систем.
Уверен, этот содержательный труд вызовет большой интерес у широкого круга читателей – от студентов и преподавателей до активных проектировщиков сложных распределенных систем. Вместе с тем следует заметить, что материал, представленный в книге Теля, отражает лишь работы и представления западных научных школ, что, конечно, доставит определенные неудобства отечественному читателю, как и отсутствие ссылок на русскоязычные источники.
Тель Ж. Введение в распределенные алгоритмы. – М.: МЦНМО, 2009. – 616 с.: ил.