Часть I. Одноузловые паттерны проектирования. В гла-вах 2–4 обсуждаются повторно используемые паттерны и компоненты, имеющие место в рамках одного узла распре-деленной системы. В частности, рассматриваются паттерны Sidecar, Adapter и Ambassador.
Часть II. Паттерны проектирования обслуживающих си-стем.В главах 8–9 рассматриваются многоузловые паттер-ны, применяемые в постоянно работающих обслуживающих системах, таких как веб-приложения. Обсуждаются паттерны репликации, масштабирования и выбора главного узла.
Часть III. Паттерны проектирования систем пакетных вы-числений.В главах 10–12 рассматриваются паттерны распре-деленных систем для широкомасштабной обработки данных, в том числе очереди задач, событийно-ориентированная обработка и согласованные рабочие процессы.
Если вы опытный разработчик распределенных систем, мо-жете пропустить первые несколько глав. Тем не менее вам Предисловие 15
стоит хотя бы пролистать их, чтобы понять, как применять паттерны проектирования и почему считается, что сама идея паттернов проектирования распределенных систем настоль-ко важна.
Многие, вероятно, найдут полезными одноузловые паттерны, так как они являются наиболее универсальными и их проще всего использовать повторно.
В зависимости от ваших целей и от того, какие системы вы со-бираетесь разрабатывать, имеет смысл сосредоточиться либо на паттернах обработки больших объемов данных, либо на пат-тернах проектирования постоянно работающих серверов (либо и на тех и на других). Части II и III практически не зависят друг от друга, и их можно читать в любом порядке. Если вы имеете обширный опыт разработки распределенных систем, то, возможно, посчитаете некоторые паттерны из первых глав избыточными (например, описанные в части II именование, обнаружение, распределение нагрузки). Тогда можете их просто пролистать, чтобы получить общее представление, но по пути не забудьте рассмотреть все иллюстрации! Условные обозначения
В данной книге приняты следующие условные обозначения. Курсив
Курсивом выделяются новые термины, слова, на которых сделан акцент.
Рубленый шрифт
Применяется для отображения URL, адресов электронной почты.
16Предисловие
Моноширинный шрифт
Используется для текстов программ, а также внутри ос-новного текста для обозначения элементов программы: имен функций, баз данных, типов данных, переменных среды, выражений и ключевых слов. Им же выделяются имена и расширения файлов.
Онлайн-ресурсы
Хотя в этой книге описаны популярные паттерны проектирова-ния распределенных систем, ожидается, что читатели знакомы с контейнерами и системами их оркестровки. Если же у вас недостаточно знаний об этих программных продуктах, рекомен-
дую воспользоваться следующими ресурсами: https://docker.io ;
https://kubernetes.io ;
https://dcos.io .
Использование примеров кода Дополнительные материалы (примеры кода, упражнения и т. п.) доступны для загрузки по следующему адресу: https://github.com/ brendandburns/designing-distributed-systems .
Это издание призвано помочь вам в вашей работе. В общем слу-чае вы можете использовать поставляемые с книгой примеры кода в своих программах и документации. Нет необходимости обращаться к нам за разрешением на использование кода, за Предисловие 17
исключением тех случаев, когда копируются его существенные фрагменты. К примеру, если вы напишете программу, исполь-зующую несколько фрагментов кода из данной книги, то вам не нужно получать разрешение. Продажа или распространение компакт-диска с исходными текстами, однако, требуют разре-шения. Использование цитат и фрагментов кода из книги при ответе на вопросы не требует получения разрешения. Включе-ние значительной части кода в документацию по вашему про-дукту требует разрешения.
Мы ценим, хотя и не требуем ссылки на первоисточник. Ссылка обычно включает название книги, имя автора, название издате-ля и номер ISBN. Например: «Распределенные системы. Паттер-ны проектирования. Брендан Бёрнс (O’Reilly). Авторские права
защищены, Брендан Бёрнс, 2018, ISBN 978-5-4461-0950-0». Если вам кажется, что вы выходите за рамки правомерного использования примеров кода, связывайтесь с нами по адресу permissions@oreilly.com .
Благодарности
Я хотел бы поблагодарить свою жену Робин и своих детей за все то, что они делали, чтобы я оставался здоровым и счастливым. Большое спасибо тем людям на моем жизненном пути, которые помогли мне освоить все то, о чем написано в этой книге! От-дельное спасибо моим родителям за первый Macintosh SE/30. 1 Введение
Читать дальше