The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Книга описывает методы создания событийно-управляемых микросервисов для обработки больших объемов данных и предлагает шаблоны приложений, использующих подобную архитектуру. Рассказано о роли микросервисов в поддержке событийно-управляемых проектов, представлены примеры практических реализаций подобных архитектур как силами сотрудников организации, так и с привлечением сторонних специалистов. Подробно описаны инструменты, необходимые для разработки экосистемы микросервисов. Приведены способы решения возникающих проблем, даны рекомендации по налаживанию взаимодействия команд и отдельных сотрудников в процессе создания событийно-управляемых микросервисных систем.

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by BHV.RU Publishing House, 2021-11-03 15:17:52

Создание событийно-управляемых микросервисов

Книга описывает методы создания событийно-управляемых микросервисов для обработки больших объемов данных и предлагает шаблоны приложений, использующих подобную архитектуру. Рассказано о роли микросервисов в поддержке событийно-управляемых проектов, представлены примеры практических реализаций подобных архитектур как силами сотрудников организации, так и с привлечением сторонних специалистов. Подробно описаны инструменты, необходимые для разработки экосистемы микросервисов. Приведены способы решения возникающих проблем, даны рекомендации по налаживанию взаимодействия команд и отдельных сотрудников в процессе создания событийно-управляемых микросервисных систем.

Keywords: микросервис

312 | Предметный указатель Правила развития схемы 59, 75
Право владения потоком 255, 256
Операция материализации 41 Практически однократная обработка 145,
Определение данных 57–59, 93
Определения исходных данных 75 147, 148, 151
Оркестрованные транзакции 165, 167, 168 Предметно-ориентированное
Оркестровка
◊ процессов с прямым вызовом 160 проектирование 23
◊ событийно-управляемых процессов 160 Преимущества синхронных микросервисов
Освобождение данных 71–77, 79, 80, 82, 92,
39
93, 95, 97 Преобразование 100
Освобожденные данные 79 Привязка микросервисов к техническим
Основные типы окон событий 122
Откат транзакции 167 требованиям 25
Отметка об удалении 46 Примеры полезных метаданных 256
Отозванный раздел 132 Принцип
Очередь 48, 53 ◊ единственного автора 164
◊ с возможностью индивидуальной ◊ единственного источника событий 255,

фиксации 183 261
◊ единственной ответственности
П
(single responsibility) 36
Первичные выгоды от использования Принципы
событийно-управляемых микросервисов ◊ определения контракта на передачу
35
данных 66
Переворачивающееся (tumbling) окно 122 ◊ проектирования FaaS 169
Переподразделение (repartitioning) 102 Проблемы
◊ событий 100, 102 ◊ использования синхронных
Переработка (reprocessing) 126
Перераспределение (shuffle) 115 микросервисов 38
◊ событий 219 ◊ модификации унаследованных систем 74
Перестраивание хранилищ состояний 143 Программное создание имитационных
Планирование событий 112, 126
Повторная обработка 126, 129 событий 285
Подготовленные для тестирования наборы Продолженная миграция 299
Производящие микросервисы 41
данных 285 Пространства имен 211
Поддержание состояния 46 Пространство решений 24
Поддержка Протоколы статического назначения 106
◊ непрерывной поставки 36 Процесс создания микросервиса 263
◊ триггеров 89 Процессы прямого вызова 161
Поддомен 23
Подразделение доменов на поддомены 24 Р
Подход с фиксацией смещений 170
Политика «без локального состояния» («no Рабочий процесс 154, 156, 158, 162, 164,
165, 167
local state» policy) 178
Пользовательский интерфейс (UI) 240 ◊ хореографической транзакции 164
Понятия, связанные с временными метками Рабочий узел (worker node) 197
Развертывание кластера на CMS 201
110 Развитие схемы 70
Популярность фреймворков 212 Разделение команды 30
Поток освобожденных событий 73 ◊ на две меньшие 32
Потоки событий 35 Размер пакета 175, 184
Потоковые фреймворки 195 Разрушительное изменение схемы 61, 297
Потребляющие микросервисы 41 Распределенная файловая система Hadoop

(Hadoop Distributed File System, HDFS)
204

Распределенные транзакции 162, 163 Предметный указатель | 313
◊ с хореографическими рабочими
Случайный отказ в обслуживании 257
процессами 163 Смещение 52
Реактивные события 228 Снимок существующих данных 80
Реализации брокера событий 145 Собственный планировщик событий 113
Реестр схем 258 Событие 43
Решения на основе FaaS с поддержкой Событизация (eventification) 85
◊ пользователя 85
состояния 178 Событийно-управляемая
Риск запуска и выполнения новых сервисов ◊ архитектура 71, 96, 98
◊ структура обмена информацией 34
30 ◊ топология 41
Риски Событийно-управляемые архитектуры 76,
◊ добавления нового бизнес-требования
155
в существующий сервис 31 Событийно-управляемые
◊ создания нового сервиса 30 ◊ микросервисы (Event-Driven

С Microservice, EDM) 22, 23, 25, 26, 32, 35,
37, 47, 64, 71, 73, 86, 99, 107, 108, 126,
Саги (распределенные транзакции) 163 130, 134, 187, 215, 230, 232, 259
Сброс внутреннего состояния приложения ◊ микросервисы без поддержки состояния
107
261 ◊ топологии 273
Сеансовое (session) окно 124 Событийно-управляемый
Серверы сетевого протокола времени ◊ микросервис 41, 45
◊ подход 33
(Network Time Protocol, NTP) 111 Событийные данные 47
Сервисно-ориентированные архитектуры Совместные базы данных 29
Соглашение об уровне обслуживания (SLA)
(Service-Oriented Architectures, SOA) 22 307
Сервисы, требующие уплаты «налога на Соединения
◊ по внешнему ключу (foreign-key joins)
микросервисы» 303 221
Сериализация схемы 86 ◊ по первичному ключу (primary-key joins)
Сильная зацепленность (highly cohesive) 24 220
«Сине-зеленое» развертывание 300, 301, Создание
◊ единой общей среды тестирования 286
307 ◊ определений событий 64
Синхронизированные миграции 300 Соподразделение (copartitioning) 103
Синхронные Соподразделенные потоки 107
◊ вызовы функций 182 Состояние по ключу 205, 219
◊ потоки «запрос-ответ» 161 Списки управления доступом (Access
◊ триггеры 175 Control List, ACL) 259
Синхронный ввод/вывод в формате Способы
◊ обработки запоздалого события 125
«запрос-ответ» 187 ◊ поддержки ограниченных контекстов
Система управления контейнерами с функциями 170
Средства обработки пакетов данных
(Container Management System, CMS) 171, big data 196
195, 201, 216, 294 Средство извлечения метки времени 114
Системы Среды для тестирования микросервиса 289
◊ контейнеризации и управления Стратегии масштабирования приложений
с поддержкой состояния 206
контейнерами 56
◊ управления контейнерами 41, 55, 264
Скольжение окна 123
Скользящее (sliding) окно 123
Слабая
◊ связанность (loosely coupled) 24
◊ сцепленность 36
Слияние потоков событий 101

314 | Предметный указатель ◊ фреймворки пакетной обработки 196
◊ фреймворки потоковой обработки 196,
Стратегия
◊ миграции 72 215
◊ обработки неупорядоченных и «Тяжеловесный»
◊ кластер потоковой обработки 197
запоздалых событий 124 ◊ фреймворк 196, 217
Строго одноразовая обработка 145
Структура обмена У
◊ бизнес-информацией 27
◊ данными 28, 40 Удаленное интеграционное тестирование
◊ информацией 26, 28, 40 275
◊ технической информацией 27
◊ формализованного обмена данными 35 Узловое время события 116
Сценарий Унаследованные системы 188
◊ единоличное владение 25 Уплотнение 46
◊ трансграничное владение 25 Управление
◊ данными предприятия (EDM, Enterprise
Т
Data Management) 154, 232
Тест топологии 274 ◊ окнами (windowing) 122
Тестирование Уровень параллелизации 223
◊ с использованием реальных
Ф
производственных данных 284
◊ топологии 275 Физически подключенный локальный диск
Технологическая гибкость 36 134
Технология
◊ Debezium 81 Фиксация
◊ Maxwell 81 ◊ смещений 170
◊ «Функция как сервис» (Functions-as-a- ◊ смещений до завершения обработки 171
Формат
Service, FaaS) 169, 306 ◊ события 63
«Теплая» функция 173 ◊ схемы 59
Типы Формы событий 52
◊ запросов шаблона освобождения данных Фреймворк FaaS 172, 173, 177, 180, 186
Фреймворки тестирования топологии 274
по запросу 77 Функциональное тестирование 272
◊ событий 43 Функция 169
◊ совместимости 59 ◊ соединения (join) 225
Топология 41, 42
◊ микросервисов 41, 42, 100 Х
Транзакции 145, 147–149, 152, 153
Триггер 90, 174 «Холодный старт» (cold start) 173
◊ на основе расписания 177 Хореографическая архитектура 155
◊ по задержке группы потребителей 177 Хореографический
◊ слушателя потока 175, 176 ◊ рабочий процесс 155, 157, 163
◊ слушателя потока событий (event-stream ◊ шаблон 156, 163, 168

listener trigger) 174 саги 163
Триггерная логика 57, 58, 68, 70 Хранилище
Триггерные системы со слушателем ◊ глобального состояния 133
◊ состояний 130–132, 136, 138, 140,
событий 185
Триггеры 89, 91 142–144, 151, 153
«Тяжеловесные»
◊ потоковые фреймворки 209
◊ фреймворки 195, 197, 200, 204, 209, 306

Ц Предметный указатель | 315

Целевые уровни обслуживания ◊ прямого вызова (direct-call pattern) 180
(Service-Level Objectives, SLO) 210 ◊ слушателя потока событий (listener

Централизованный фреймворк 94, 95 pattern) 173
◊ фильтрации 189, 190, 200
Ш ◊ хореографии 155, 179, 180
Шаблоны
Шаблон ◊ использования «тяжеловесных»
◊ «запрос-ответ» 230
◊ «Коляска» (sidecar) 188, 189 фреймворков 199
◊ «Сага» 163 ◊ освобождения данных 75
◊ архитектурного дизайна, основанный
Э
на хореографии 180
◊ гибридного приложения (hybrid Эмерджентное поведение 155

application pattern) 192–194 Я
◊ нагрузки (load pattern) 191
◊ оркестратора 186 Явная схема для каждого события 58
◊ оркестровки 158, 163, 179, 180, 182 Язык определения данных (Data Definition

Language, DDL) 93

316 | Предметный указатель

Об авторе

Адам Беллемар — штатный инженер платформы данных в Shopify. Он занимает
эту должность с 2020 года. Ранее, с 2014 по 2020 год, он работал в качестве штат-
ного инженера во Flipp. А до этого занимал должность разработчика программного
обеспечения в BlackBerry, где впервые начал работать с событийно-управляемыми
системами.
Его опыт включает разработку и сопровождение (DevOps) кластеров Kafka, Spark,
Mesos, Kubernetes, Solr, Elasticsearch, HBase и Zookeeper — создание программ,
масштабирование, мониторинг; техническую поддержку — помощь предприятиям
в организации их уровня обмена данными, в интеграции с существующими систе-
мами, в разработке новых систем с акцентом на поставку продуктов; разработку
программного обеспечения — построение событийно-управляемых микросервисов
на Java и Scala с помощью потоковых библиотек Beam, Flink, Spark и Kafka, а также
инженерию данных — изменение способов сбора поведенческих данных с пользо-
вательских устройств и обмена ими внутри организации.

Об обложке

На обложке книги изображена желтощекая синица (Machlolophus spilonotus). Эту
птичку можно встретить в широколиственных и смешанных холмистых лесах,
а также в созданных людьми парках и садах Юго-Восточной Азии.
Ярко-желтая область вокруг клюва и задняя часть головы желтощекой синицы,
контрастирующие с ее черным гребнем, зобом и грудью, делают ее легко узнавае-
мой. У самца, чье изображение приведено на обложке, серое тело и черные крылья,
испещренные белыми пятнами и полосами, тело самки же оливковое, а крылья
у нее бледно-желтые и тоже полосатые.
Желтощекие синицы питаются мелкими беспозвоночными, пауками и некоторыми
фруктами и ягодами, добывая пищу в нижних и средних уровнях леса. Как и другие
птицы из семейства синиц, желтощекая синица порхает над лесом короткими вол-
нообразными виражами, быстро-быстро взмахивая крыльями.
К счастью, выживание желтощекой синицы пока не вызывает беспокойства, однако
многие представители животного мира, изображенные на обложках книг издатель-
ства O'Reilly, находятся под угрозой исчезновения. Все они чрезвычайно важны для
нашей планеты.
Иллюстрация на обложке создана Карен Монтгомери и основана на черно-белой
гравюре из книги «Илюстрированный музей живой природы» («Pictorial Museum of
Animated Nature»).


Click to View FlipBook Version