Б Бёрнс - Распределенные системы. Паттерны проектирования
- Название:Распределенные системы. Паттерны проектирования
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0950-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Б Бёрнс - Распределенные системы. Паттерны проектирования краткое содержание
Распределенные системы. Паттерны проектирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Рубленый шрифт
Применяется для отображения 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 Введение
В современном мире постоянно работающих приложений и про-граммных интерфейсов (API) к ним предъявляются такие тре-бования, которые пару десятилетий назад предъявлялись только к небольшому количеству наиболее важных систем. Анало-гичным образом наличие возможности быстрого, «вирусного» роста популярности сервиса означает, что любое приложение должно создаваться с расчетом на почти мгновенное масштаби-рование в ответ на увеличивающийся пользовательский спрос. Эти ограничения и требования означают, что почти каждое разрабатываемое приложение, будь то мобильная клиентская программа или сервис обработки платежей, должно быть рас-пределенной системой.
Но строить распределенные системы непросто. Как правило, это единичные заказные системы. В этом смысле разработка распределенных систем поразительно похожа на разработку программного обеспечения (ПО) в тот период, когда еще не существовало современных объектно-ориентированных язы-ков программирования. К счастью, как и в случае с созданием Глава 1. Введение 19
объектно-ориентированных языков, имел место технический прогресс, существенно снизивший трудоемкость построения распределенных систем. В данном случае он связан с расту-щей популярностью контейнеров и инструментов оркестри-рования.
Подобно объектам в объектно-ориентированном программи-ровании, контейнеризованные строительные блоки — основа разработки повторно используемых компонентов и паттернов проектирования. Они существенно упрощают создание на-
дежных распределенных систем и делают его более доступным для начинающих разработчиков. Далее будет кратко описана история разработок, приведших к современному состоянию отрасли.
Краткая история разработки систем Первое время машины создавались для какой-то одной цели: расчета артиллерийских таблиц, прогнозирования приливов и отливов, взлома шифров и других точных, сложных, но рутинных математических вычислений. Спустя годы специ-ализированные машины превратились в программируемые компьютеры общего назначения. Те со временем перешли от выполнения одной программы на одной машине к парал-лельному выполнению многих программ на одной машине с помощью операционных систем с разделением времени. Эти машины все еще были разъединены друг с другом. Постепенно машины стали объединяться в сети, в результате чего появились клиент-серверные архитектуры. Относительно маломощные компьютеры на рабочих местах получили доступ к вычислительным ресурсам мощных мейнфреймов, находя-щихся в других помещениях или даже зданиях. И хотя такой вид клиент-серверного программирования был несколько сложнее написания программы для одного компьютера, он все 20Глава 1. Введение
еще был относительно прост для понимания. Клиент (-ы) делал (-и) запросы, а сервер (-ы) их обслуживал (-и). Рост Интернета и появление в начале 2000-х крупных центров обработки данных (ЦОД), состоящих из тысяч относительно недорогих массово производимых компьютеров, которые объ-единялись в сеть, привели к широкому распространению рас-пределенных систем . В отличие от клиент-серверных архитек-тур распределенные приложения состоят либо из нескольких разных приложений, либо из нескольких копий одного при-ложения, работающих на разных машинах. Взаимодействуя, они реализуют некоторый сервис, например веб-поисковик или систему розничных продаж.
В силу своего распределенного характера такие системы при грамотной их структуризации более надежны по определению. А при грамотно спроектированной архитектуре системы мас-штабируемой становится и ее команда разработчиков. К сожале-нию, за эти преимущества приходится платить. Распределенные системы существенно сложнее в проектировании, построении и отладке. При построении надежной распределенной системы к инженерно-техническим навыкам специалистов предъявляют-ся существенно более высокие требования, чем при построении локальных приложений. Так или иначе, потребность в надеж-ных распределенных системах продолжает расти. Следователь-но, возникает необходимость в соответствующих инструментах, паттернах и практиках их построения.
Читать дальшеИнтервал:
Закладка: