 |
Распределенные системы. Паттерны проектирования
Брендан Бёрнс
Год выпуска: 2019
ISBN: 978-5-4461-0950-0
Переплёт: мягкий
224 страниц
Цена: 501.00 грн.
|
Современный мир попросту немыслим без использования распределенных систем. Даже у простейшего мобильного приложения есть API, через который оно подключается к облачному хранилищу. Однако, проектирование распределенных систем до сих пор остается искусством, а не точной наукой. Необходимость подвести под нее серьезный базис назрела давно, и, если вы хотите обрести уверенность в создании, поддержке и эксплуатации распределенных систем - начните с этой книги!
Брендан Бёрнс, авторитетнейший специалист по облачным технологиям и Kubernetes, излагает в книге "Распределенные системы. Паттерны проектирования" абсолютный минимум, необходимый для правильного проектирования распределенных систем. Эта книга описывает неустаревающие паттерны проектирования распределенных систем. Она поможет вам не только создавать такие системы с нуля, но и эффективно переоборудовать уже имеющиеся.
Оглавление книги Брендан Бёрнс "Распределенные системы. Паттерны проектирования"
Предисловие...................................................................................12 Глава 1. Введение .......................................................................... 18 Краткая история разработки систем.............................................19 Краткая история паттернов проектирования в разработке ПО......21 Формализация алгоритмического программирования.........21 Паттерны в объектно-ориентированном программировании.........................................................22 Расцвет программного обеспечения с открытым исходным кодом.................................................................23 Ценность паттернов, практик и компонентов................................24 Стоя на плечах гигантов....................................................24 Общий язык обсуждения подходов к разработке................25 Общие повторно используемые компоненты......................26 Резюме.........................................................................................27
Часть I. Одноузловые паттерны проектирования
Мотивация....................................................................................30 Резюме.........................................................................................32 Глава 2. Паттерн Sidecar ................................................................ 34 Пример реализации паттерна Sidecar. Добавление возможности HTTPS-соединения к унаследованному сервису.......35 Динамическая конфигурация с помощью паттерна Sidecar...........36 Модульные контейнеры приложений............................................39 Практикум. Развертывание контейнера topz.......................40 Создание простейшего PaaS-сервиса на основе паттерна Sidecar.................................................................42 Разработка модульных и повторно используемых реализаций паттерна Sidecar........................................................43 Параметризованные контейнеры........................................44 Определение API всех контейнеров...................................45 Документирование контейнеров........................................47 Резюме.........................................................................................49 Глава 3. Паттерн Ambassador ......................................................... 50 Использование паттерна Ambassador для шардирования сервиса....................................................51 Практикум. Шардируем Redis-хранилище...........................54 Использование паттерна Ambassador для реализации сервиса-посредника.....................................................................57 Использование паттерна Ambassador для проведения экспериментов и разделения запросов.........................................59 Практикум. Реализация 10%-ных экспериментов...............60 Глава 4. Адаптеры .......................................................................... 64 Мониторинг..................................................................................66 Практикум. Мониторинг с помощью Prometheus.................67 Ведение журналов........................................................................69 Практикум. Нормализация форматов журналов с помощью fluentd..............................................................70 Мониторинг работоспособности сервисов.....................................72 Практикум. Комплексный мониторинг работоспособности MySQL.................................................73
Часть II. Паттерны проектирования обслуживающих систем
Введение в микросервисы............................................................78 Глава 5. Реплицированные сервисы с распределением нагрузки .... 82 Сервисы без внутреннего состояния.............................................82 Датчики готовности для балансировщика нагрузки............84 Практикум. Создание реплицированного сервиса с помощью Kubernetes........................................................85 Сервисы с закреплением сессий...................................................87 Сервисы с репликацией на уровне приложения............................89 Добавляем кэширующую прослойку.............................................89 Развертывание кэширующего сервера...............................90 Практикум. Развертывание кэширующей прослойки...........92 Расширение возможностей кэширующей прослойки.....................95 Ограничение частоты запросов и защита от атак типа "отказ в обслуживании" (DoS)...........................................95 SSL-мост.............................................................................96 Практикум. Развертывание nginx и SSL-моста.....................98 Резюме.......................................................................................101 Глава 6. Шардированные сервисы ................................................ 102 Шардирование кэша...................................................................103 Зачем вам нужен шардированный кэш.............................104 Роль кэша в производительности системы.......................105 Реплицированный и шардированный кэш.........................107 Практикум. Развертывание реализации паттерна Ambassador и сервиса memcache для организации шардированного кэша......................108 Шардирующие функции.............................................................114 Выбор ключа....................................................................115 Консистентные хеш-функции...........................................117 Практикум. Построение консистентного шардированного прокси-сервера.....................................118 Шардирование реплицированных сервисов................................119 Системы с "горячим" шардированием........................................120 Глава 7. Паттерн Scatter/Gather .................................................... 122 Scatter/Gather с распределением нагрузки корневым узлом.........................................................................123 Практикум. Распределенный поиск в документах.............125 Scatter/Gather с шардированием терминальных узлов................126 Практикум. Шардированный поиск в документах.............128 Выбор подходящего количества терминальных узлов......129 Масштабирование Scatter/Gather-систем с учетом надежности и производительности.............................................132 Глава 8. Функции и событийно-ориентированная обработка ........ 134 Как определить, когда полезен подход FaaS...............................135 Преимущества FaaS..........................................................136 Проблемы разработки FaaS-систем...................................136 Потребность в фоновой обработке...................................138 Необходимость хранения данных в памяти......................138 Стоимость постоянного использования запросно-ориентированных вычислений..........................139 Паттерны FaaS............................................................................140 Паттерн Decorator. Преобразование запроса или ответа.......................................................................140 Практикум. Подстановка значений по умолчанию до обработки запроса......................................................142 Обработка событий..........................................................144 Практикум. Реализация двухфакторной аутентификации...............................................................145 Событийные конвейеры...................................................147 Практикум. Реализация конвейера для регистрации нового пользователя........................................................148 Глава 9. Выбор владельца ............................................................ 151 Как определить, нужен ли выбор владельца..............................152 Основы процесса выбора владельца...........................................155 Практикум. Развертывание etcd.......................................157 Реализация блокировок...................................................159 Практикум. Реализация блокировок в etcd.......................163 Реализация владения.......................................................164 Практикум. Реализация аренды в etcd..............................166 Параллельный доступ к данным.................................................167
Часть III. Паттерны проектирования систем пакетных вычислений
Глава 10. Системы на основе очередей задач .............................. 173 Система на основе обобщенной очереди задач..........................173 Интерфейс контейнера-источника....................................174 Интерфейс контейнера-исполнителя................................177 Общая инфраструктура очередей задач...........................179 Практикум. Реализация генератора миниатюр видеофайлов..............................................................................182 Динамическое масштабирование исполнителей..........................184 Паттерн Multi-Worker..................................................................187 Глава 11. Событийно-ориентированная пакетная обработка ........ 189 Паттерны событийно-ориентированной обработки.....................191 Паттерн Copier.................................................................191 Паттерн Filter...................................................................192 Паттерн Splitter................................................................193 Паттерн Sharder...............................................................194 Паттерн Merger................................................................196 Практикум. Создание событийно-ориентированного потока задач для регистрации нового пользователя.................198 Инфраструктура publish/subscribe...............................................201 Практикум. Развертывание Kafka................................................202 Глава 12. Координированная пакетная обработка ........................ 205 Паттерн Join (барьерная синхронизация)....................................206 Паттерн Reduce..........................................................................207 Практикум. Подсчет.........................................................209 Суммирование..................................................................210 Гистограмма.....................................................................211 Практикум. Конвейерная разметка и обработка изображений......................................................212 Глава 13. Заключение - новое начало? ...................................... 217
|