Распределенные системы. Паттерны проектирования - [2]
Паттерны в объектно-ориентированном
программировании ........................................................ 22
Расцвет программного обеспечения с открытым исходным кодом ................................................................ 2 3
Ценность паттернов, практик и компонентов ............................... 24
Стоя на плечах гигантов ................................................... 24
Общий язык обсуждения подходов к разработке ............... 25
Общие повторно используемые компоненты ..................... 26
Резюме ........................................................................................ 27
Оглавление 7
Часть 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
8 Оглавление
Ведение журналов ....................................................................... 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
Резюме ...................................................................................... 10 1
Глава 6. Шардированные сервисы ............................................... 102
Шардирование кэша .................................................................. 103
Зачем вам нужен шардированный кэш ............................ 104
Оглавление 9
Роль кэша в производительности системы ...................... 105
Реплицированный и шардированный кэш ........................ 107
Практикум. Развертывание реализации паттерна Ambassador и сервиса memcache
для организации шардированного кэша ..................... 108
Шардирующие функции ............................................................ 114