Создание событийно-управляемых микросервисов: масштабирование использования организационных данных: перевод с английского 🔍
Адам Беллемар
БХВ-Петербург, 1, 2022
English [en] · Russian [ru] · PDF · 7.0MB · 2022 · 📘 Book (non-fiction) · 🚀/lgli/lgrs/nexusstc/zlib · Save
description
Книга описывает методы создания событийно-управляемых микросервисов для обработки больших объемов данных и предлагает шаблоны приложений, использующих подобную архитектуру. Рассказано о роли микросервисов в поддержке событийно-управляемых проектов, представлены примеры практических реализаций подобных архитектур как силами сотрудников организации, так и с привлечением сторонних специалистов. Подробно описаны инструменты, необходимые для разработки экосистемы микросервисов. Приведены способы решения возникающих проблем, даны рекомендации по налаживанию взаимодействия команд и отдельных сотрудников в процессе создания событийно-управляемых микросервисных систем.
Alternative filename
lgli/Создание событийно-управляемых микросервисов.pdf
Alternative filename
lgrsnf/Создание событийно-управляемых микросервисов.pdf
Alternative filename
zlib/Computers/Web Development/Адам Беллемар/Создание событийно-управляемых микросервисов_22352515.pdf
Alternative title
Building event-driven microservices : leveraging organizational data at scale
Alternative title
Building event-driven microservices: leveraging distributed large-scale data
Alternative author
Bellemare, Adam
Alternative author
Adam Bellemare
Alternative author
Беллемар, Адам
Alternative publisher
O'Reilly Media, Incorporated
Alternative publisher
BXV-Peterburg
Alternative edition
O'Reilly, Санкт-Петербург, Russia, 2022
Alternative edition
United States, United States of America
Alternative edition
O'Reilly Media, Sebastopol, CA, 2020
Alternative edition
First edition, Sebastopol, CA, 2020
Alternative edition
Russia, Russian Federation
Alternative edition
Beijing, 2020
Alternative edition
1, PT, 2020
metadata comments
Vector PDF
metadata comments
{"edition":"1","isbns":["1492057894","597756757X","9781492057895","9785977567572"],"last_page":320,"publisher":"БХВ-Петербург"}
metadata comments
类型: 图书
metadata comments
出版日期: 2020
metadata comments
出版社: O'Reilly Media
metadata comments
Фактическая дата выхода в свет - 2021
Предм. указ.: с. 309-315
Пер.: Bellemare, Adam Building event-driven microservices 978-1-492-05789-5
Предм. указ.: с. 309-315
Пер.: Bellemare, Adam Building event-driven microservices 978-1-492-05789-5
metadata comments
РГБ
metadata comments
Russian State Library [rgb] MARC:
=001 010951389
=005 20220128182235.0
=008 220111s2022\\\\ru\\\\\\\\\\\\|||\|\rus|d
=017 \\ $a КН-П-21-096787 $b RuMoRKP
=020 \\ $a 978-5-9775-6757-2 $c 1300 экз.
=040 \\ $a RuMoRKP $b rus $e rcr $d RuMoRGB
=041 1\ $a rus $h eng
=044 \\ $a ru
=080 \\ $a 004.2 $2 4
=084 \\ $a З973.2-018-5-05,07 $2 rubbk
=100 1\ $a Беллемар, Адам
=245 00 $a Создание событийно-управляемых микросервисов : $b масштабирование использования организационных данных : перевод с английского $c Адам Беллемар
=260 \\ $a Санкт-Петербург $b БХВ-Петербург $c 2022
=300 \\ $a 315, [3] с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a O'Reilly
=500 \\ $a Фактическая дата выхода в свет - 2021
=500 \\ $a Предм. указ.: с. 309-315
=520 \\ $a Книга описывает методы создания событийно-управляемых микросервисов для обработки больших объемов данных и предлагает шаблоны приложений, использующих подобную архитектуру. Рассказано о роли микросервисов в поддержке событийно-управляемых проектов, представлены примеры практических реализаций подобных архитектур как силами сотрудников организации, так и с привлечением сторонних специалистов. Подробно описаны инструменты, необходимые для разработки экосистемы микросервисов. Приведены способы решения возникающих проблем, даны рекомендации по налаживанию взаимодействия команд и отдельных сотрудников в процессе создания событийно-управляемых микросервисных систем
=534 \\ $p Пер.: $a Bellemare, Adam $t Building event-driven microservices $z 978-1-492-05789-5
=650 \7 $a Базы данных $x Управление $2 RuMoRKP
=650 \7 $a Вычислительные сети $x Архитектура $2 RuMoRKP
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Программирование -- Автоматизация. Проектирование программного обеспечения -- Пособие для специалистов $2 rubbk
=653 \\ $a событийно-управляемые микросервисы
=653 \\ $a событийно-управляемая архитектура
=653 \\ $a синхронные микросервисы
=653 \\ $a асинхронные микросервисы
=653 \\ $a детерминированная обработка потоков
=653 \\ $a потоковая передача с поддержкой состояний
=653 \\ $a фреймворки
=852 \\ $a РГБ $b FB $j 2 21-78/152 $x 90
=852 \\ $a РГБ $b FB $j 2 21-78/56 $x 90
=001 010951389
=005 20220128182235.0
=008 220111s2022\\\\ru\\\\\\\\\\\\|||\|\rus|d
=017 \\ $a КН-П-21-096787 $b RuMoRKP
=020 \\ $a 978-5-9775-6757-2 $c 1300 экз.
=040 \\ $a RuMoRKP $b rus $e rcr $d RuMoRGB
=041 1\ $a rus $h eng
=044 \\ $a ru
=080 \\ $a 004.2 $2 4
=084 \\ $a З973.2-018-5-05,07 $2 rubbk
=100 1\ $a Беллемар, Адам
=245 00 $a Создание событийно-управляемых микросервисов : $b масштабирование использования организационных данных : перевод с английского $c Адам Беллемар
=260 \\ $a Санкт-Петербург $b БХВ-Петербург $c 2022
=300 \\ $a 315, [3] с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=490 0\ $a O'Reilly
=500 \\ $a Фактическая дата выхода в свет - 2021
=500 \\ $a Предм. указ.: с. 309-315
=520 \\ $a Книга описывает методы создания событийно-управляемых микросервисов для обработки больших объемов данных и предлагает шаблоны приложений, использующих подобную архитектуру. Рассказано о роли микросервисов в поддержке событийно-управляемых проектов, представлены примеры практических реализаций подобных архитектур как силами сотрудников организации, так и с привлечением сторонних специалистов. Подробно описаны инструменты, необходимые для разработки экосистемы микросервисов. Приведены способы решения возникающих проблем, даны рекомендации по налаживанию взаимодействия команд и отдельных сотрудников в процессе создания событийно-управляемых микросервисных систем
=534 \\ $p Пер.: $a Bellemare, Adam $t Building event-driven microservices $z 978-1-492-05789-5
=650 \7 $a Базы данных $x Управление $2 RuMoRKP
=650 \7 $a Вычислительные сети $x Архитектура $2 RuMoRKP
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Программирование -- Автоматизация. Проектирование программного обеспечения -- Пособие для специалистов $2 rubbk
=653 \\ $a событийно-управляемые микросервисы
=653 \\ $a событийно-управляемая архитектура
=653 \\ $a синхронные микросервисы
=653 \\ $a асинхронные микросервисы
=653 \\ $a детерминированная обработка потоков
=653 \\ $a потоковая передача с поддержкой состояний
=653 \\ $a фреймворки
=852 \\ $a РГБ $b FB $j 2 21-78/152 $x 90
=852 \\ $a РГБ $b FB $j 2 21-78/56 $x 90
Alternative description
Оглавление
Предисловие
Условные обозначения, принятые в книге
Благодарности
Предисловие научного редактора к русскому изданию
Глава 1. Почему именно событийно-управляемые микросервисы?
Что такое событийно-управляемые микросервисы?
Введение в предметно-ориентированное проектирование и ограниченные контексты
Использование моделей предметной области и ограниченных контекстов
Привязка ограниченных контекстов к бизнес-требованиям
Структуры обмена информацией
Структуры обмена бизнес-информацией
Структуры обмена технической информацией
Структуры обмена данными
Закон Конвея и структуры обмена информацией
Структуры обмена информацией в традиционных вычислениях
Вариант 1: создать новый сервис
Вариант 2: добавить новое бизнес-требование в существующий сервис
Плюсы и минусы каждого варианта
Командный сценарий: продолжение
Конфликтующие обстоятельства
Событийно-управляемые коммуникационые структуры
События являются основой обмена информацией
Потоки событий обеспечивают единственный источник истины
Потребители занимаются своим моделированием и выполняют свои запросы
Обмен данными улучшается по всей организации
Доступные данные поддерживают изменения в обмене информацией
Асинхронные событийно-управляемые микросервисы
Пример команды, использующей событийно-управляемые микросервисы
Синхронные микросервисы
Недостатки синхронных микросервисов
Связь «точка-точка»
Зависимое масштабирование
Обработка отказов сервисов
Управление версиями API и зависимостями
Доступ к данным с привязкой к реализации
Распределенные монолиты
Тестирование
Преимущества синхронных микросервисов
Резюме
Глава 2. Основы событийно-управляемых микросервисов
Построение топологий
Топология микросервисов
Бизнес-топология
Содержимое события
Структура события
Событие без ключа
Сущностное событие
Событие с ключом
Материализация состояния из сущностных событий
Определения и схемы данных событий
Принцип единственного источника событий
Взаимодействие микросервисов с помощью брокера событий
Хранение и обработка событий
Дополнительные факторы, которые следует учитывать
Брокеры событий или брокеры сообщений?
Потребление из неизменяемого журнала
Потребление в качестве потока событий
Потребление в форме очереди
Обеспечение единственного источника истины
Масштабное управление микросервисами
Размещение микросервисов в контейнерах
Размещение микросервисов на виртуальных машинах
Управление контейнерами и виртуальными машинами
Уплата налога на микросервисы
Резюме
Глава 3. Обмен информацией и контракты на передачу данных
Событийно-управляемые контракты на передачу данных
Использование явных схем в качестве контрактов
Комментарии к определению схемы
Полнофункциональное развитие схемы
Поддержка генератора кода
Разрушительные изменения схемы
Учет критических изменений схемы для событий
Выбор формата события
Дизайн событий
Говорите правду, всю правду и ничего, кроме правды
Используйте одно-единственное определение события в расчете на поток
Используйте самые точные типы данных
Держите события узконаправленными
Пример: перегрузка определений событий
Минимизируйте размер событий
Привлекайте потенциальных потребителей к дизайну события
Не используйте события в качестве семафоров и сигналов
Резюме
Глава 4. Интеграция событийно-управляемых архитектур с существующими системами
Что такое освобождение данных?
Компромиссы для освобождения данных
Конвертация освобожденных данных в события
Шаблоны освобождения данных
Фреймворки освобождения данных
Освобождение данных по запросу
Массовая загрузка
Инкрементная загрузка временных меток
Загрузка с автоинкрементируемым ID
Выполнение пользовательских запросов
Инкрементное обновление
Выгоды от обновления по запросу
Недостатки обновления по запросу
Освобождение данных с помощью журналов захвата изменений в данных
Выгоды от использования журналов хранилища данных
Недостатки использования журналов базы данных
Освобождение данных с помощью исходящих таблиц
Некоторые мысли по поводу производительности
Изоляция внутренних моделей данных
Обеспечение совместимости схем
Выгоды от создания событий с помощью исходящих таблиц
Недостатки создания событий с помощью исходящих таблиц
Захват изменений в данных с помощью триггеров
Выгоды от использования триггеров
Недостатки использования триггеров
Внесение изменений определения данных в захватываемые наборы данных
Обработка произведенных постфактум изменений определения данных для шаблонов запросов и журналов CDC
Обработка изменений определения данных для шаблонов захвата таблиц изменений в данных
Запись данных о событиях в хранилища данных
Влияние на бизнес записи данных в приемники и получения их из источников
Резюме
Глава 5. Основы событийно-управляемой обработки
Топологии без поддержки состояния
Преобразования
Ветвление и слияние потоков
Переподразделение потоков событий
Пример переподразделения потока событий
Соподразделение потоков событий
Пример соподразделения потока событий
Назначение разделов экземпляру потребителя
Назначение разделов с помощью контроллера разделов
Назначение соподразделенных разделов
Стратегии назначения разделов
Назначение по круговой схеме
Статическое назначение
Индивидуально настраиваемое назначение
Восстановление после отказов экземпляра обработчика без поддержки состояния
Резюме
Глава 6. Детерминированная обработка потоков
Детерминизм событийно-управляемых рабочих процессов
Временные метки
Синхронизация распределенных временных меток
Обработка с помощью событий, помеченных временными метками
Пример: выбор порядка событий при обработке многочисленных разделов
Планирование событий и детерминированная обработка
Индивидуально настраиваемые планировщики событий
Обработка на основе времени события, времени обработки и времени получения
Извлечение временной метки потребителем
Вызовы к внешним системам в форме «запрос-ответ»
Водяные знаки
Водяные знаки в параллельной обработке
Время потока
Время потока в параллельной обработке
Неупорядоченные и запоздалые события
Запоздалые события с водяными знаками и временем потока
Причины и последствия неупорядоченных событий
Загрузка из источников с неупорядоченными данными
Несколько производителей в несколько разделов
Чувствительные ко времени функции и управление окнами
Переворачивающиеся окна
Скользящие окна
Сеансовые окна
Обработка запоздалых событий
Повторная обработка или обработка в режиме, близком к реальному времени
Периодические сбои и запоздалые события
Проблемы с подключением производителя/брокера событий
Резюме и дополнительная литература
Глава 7. Потоковая передача с поддержкой состояния
Хранилища состояний и материализация состояний из потока событий
Запись состояния в поток событий журнала изменений
Материализация состояния во внутреннее хранилище состояний
Материализация глобального состояния
Преимущества использования внутреннего состояния
Требования к масштабируемости снимаются с разработчика
Высокопроизводительные возможности, основанные на использовании дисков
Гибкость использования подключенного через сеть внешнего диска
Недостатки использования внутреннего состояния
Ограничения при использовании локальных дисков
Потери при использовании дискового пространства
Масштабирование и восстановление внутреннего состояния
Использование «горячих реплик»
Восстановление и масштабирование из журналов изменений
Восстановление и масштабирование входных потоков событий
Материализация состояния во внешнее хранилище состояний
Преимущества внешнего состояния
Полная локализация данных
Технологии
Недостатки внешнего состояния
Управление многочисленными технологиями
Потеря производительности из-за сетевой задержки
Финансовые затраты на сервисы внешнего хранилища состояний
Полная локальность данных
Масштабирование и восстановление с помощью внешних хранилищ состояний
Использование исходных потоков
Использование журналов изменений
Использование моментальных снимков
Перестраивание хранилищ состояний или их мигрирование?
Перестраивание
Мигрирование
Транзакции и практически однократная обработка
Пример: сервис учета запасов
Практически однократная обработка с транзакциями клиент-брокер
Практически однократная обработка без транзакции клиент-брокер
Генерация дублирующихся событий
Идентификация дублирующихся событий
Защита от дубликатов
Поддержание согласованного состояния
Резюме
Глава 8. Построение рабочих процессов с помощью микросервисов
Шаблон «хореография»
Простой пример событийно-управляемой хореографии
Создание и изменение хореографического рабочего процесса
Мониторинг хореографического рабочего процесса
Шаблон «оркестровка»
Простой пример событийно-управляемой оркестровки
Простой пример оркестровки с прямым вызовом
Событийно-управляемая оркестровка в сравнении с окрестровкой с прямым вызовом
Создание и изменение рабочего процесса на основе оркестровки
Мониторинг процесса на основе оркестровки
Распределенные транзакции
Хореографические транзакции: шаблон «Сага»
Пример хореографической транзакции
Транзакции с оркестровкой
Компенсационные процессы
Резюме
Глава 9. Микросервисы с использованием технологии «Функция как сервис»
Проектирование функционально-ориентированных решений в качестве микросервисов
Обеспечивайте строгое членство в ограниченном контексте
Фиксируйте смещения только после завершения обработки
Когда функция завершила свою обработку
Когда функция только что запустилась
Меньше значит больше
Выбор провайдера FaaS
Построение микросервисов из функций
«Холодный старт» и «теплые старты»
Запуск функций с помощью триггеров
Запуск по новому событию: слушатель потока событий
Запуск по задержке группы потребителей
Запуск по расписанию
Запуск с использованием веб-перехватчиков
Запуск по событиям ресурсов
Решение бизнес-задач с помощью функций
Поддержание состояния
Функции, вызывающие другие функции
Шаблон событийно-управляемого обмена информацией
Шаблон прямого вызова
Хореография и асинхронный вызов функций
Оркестровка и синхронный вызов функций
Завершение работы функции и выключение
Тонкая настройка функций
Выделение достаточных ресурсов
Параметры пакетной обработки событий
Масштабирование решений FaaS
Резюме
Глава 10. Микросервисы на основе базового шаблона производителя и потребителя
Где BPC работают хорошо?
Интеграция с существующими и унаследованными системами
Пример: шаблон «Коляска»
Бизнес-логика с поддержкой состояния без учета порядка событий
Пример: книгоиздание
Когда уровень данных выполняет значительную часть работы
Независимое масштабирование уровня обработки и данных
Пример: агрегирование данных о событиях для создания профилей взаимодействия с пользователями
Гибридные приложения BPC с внешней потоковой обработкой
Пример: использование внешнего фреймворка обработки потоков для объединения потоков событий
Резюме
Глава 11. «Тяжеловесные» фреймворки для микросервисов
Краткая история «тяжеловесных» фреймворков
Внутренняя логика работы «тяжеловесных» фреймворков
Выгоды и ограничения
Варианты настройки кластера и режимы исполнения
Используйте сервис, размещенный на хосте провайдера
Постройте свой собственный полный кластер
Создайте кластер, интегрированный с CMS
Развертывание и запуск кластера с использованием CMS
Указание ресурсов для одного задания с использованием CMS
Режимы передачи приложений в кластер
Драйверный режим
Кластерный режим
Обработка состояния и использование контрольных точек
Масштабирование приложений и обработка разделов потока событий
Масштабирование приложения во время его работы
Масштабирование приложения путем его перезапуска
Автоматическое масштабирование приложений
Восстановление после отказов
Рекомендации по части мультитенантности
Языки и синтаксис
Выбор фреймворка
Пример: обработка щелчков и просмотров с помощью сеансовых окон
Резюме
Глава 12. «Легковесные» фреймворки для микросервисов
Выгоды и ограничения
«Легковесная» обработка
Обработка состояния и использование журналов изменений
Масштабирование приложений и восстановление после отказов
Перераспределение событий
Назначение состояния
Репликация состояния и «горячие реплики»
Выбор «легковесного» фреймворка
Apache Kafka Streams
Apache Samza: режим встраивания
Языки и синтаксис
Операция соединения «поток-таблица-таблица»: шаблон обогащения
Резюме
Глава 13. Интегрирование событийно-управляемых микросервисов с микросервисами типа «запрос-ответ»
Обработка внешних событий
Автономно генерируемые события
Реактивно генерируемые события
Обработка автономно генерируемых аналитических событий
Интегрирование со сторонними API «запрос-ответ»
Обработка и обслуживание данных с поддержкой состояния
Обслуживание запросов реального времени с помощью внутренних хранилищ состояний
Обслуживание запросов реального времени с помощью внешних хранилищ состояний
Обслуживание запросов путем материализации событийно-управляемого микросервиса
Обслуживание запросов через отдельный микросервис
Обработка запросов внутри событийно-управляемого рабочего процесса
Обработка событий для пользовательских интерфейсов
Пример: рабочий процесс публикации газет (шаблон одобрения)
Разделение сервисов одобрения редактором и рекламодателем
Микрофронтенды в приложениях на основе запросов-ответов
Выгоды от микрофронтендов
Композиционные микросервисы
Простота привязки к бизнес-требованиям
Недостатки микрофронтендов
Потенциальное отсутствие единообразия элементов пользовательского интерфейса и стилизации
Различающаяся производительность микрофронтендов
Пример: приложение поиска источников впечатлений и отзывов о них
Резюме
Глава 14. Вспомогательные инструменты
Система закрепления микросервисов за командами
Создание и модифицирование потока событий
Разметка потока событий метаданными
Квоты
Реестр схем
Оповещение о создании и модификации схем
Управление смещением
Разрешения и списки контроля доступа для потоков событий
Управление состоянием и сброс приложения
Мониторинг запаздывания смещения потребителей
Оптимизированный процесс создания микросервисов
Элементы управления контейнерами
Создание кластеров и управление ими
Программная доводка брокеров событий
Программная доводка вычислительных ресурсов
Межкластерная репликация событийных данных
Программная доводка инструментария
Отслеживание зависимостей и визуализация топологии
Пример топологии
Резюме
Глава 15. Тестирование событийно-управляемых микросервисов
Общие принципы тестирования
Модульное тестирование функций топологии
Функции без поддержки состояния
Функции с поддержкой состояния
Тестирование топологии
Тестирование развития и совместимости схем
Интеграционное тестирование событийно-управляемых микросервисов
Локальное интеграционное тестирование
Создание временной среды внутри среды выполнения тестируемого кода
Создание временной среды, внешней по отношению к тестируемому коду
Интеграция размещенных на хосте сервисов с использованием возможностей имитации и симуляции
Интеграция удаленных сервисов, не имеющих локальных возможностей
Полное интеграционное тестирование
Программное создание временной среды интеграционного тестирования
Заполнение событиями с использованием реальных производственных данных
Заполнение событиями из подготовленного источника тестирования
Создание имитационных событий с использованием схем
Тестирование с использованием единой общей среды
Тестирование с использованием производственной среды
Выбор стратегии полного интеграционного тестирования
Резюме
Глава 16. Развертывание событийно-управляемых микросервисов
Принципы развертывания микросервисов
Архитектурные компоненты развертывания микросервисов
Системы непрерывной интеграции, доставки и развертывания
Системы управления контейнерами и стандартное аппаратное обеспечение
Базовый шаблон полного развертывания
Шаблон непрерывного обновления
Шаблон разрушительных изменений схемы
Продолженная миграция через два потока событий
Синхронизированная миграция в новый поток событий
Шаблон «сине-зеленого» развертывания
Резюме
Глава 17. Заключение
Уровни обмена информацией
Предметные области бизнеса и ограниченные контексты
Совместные инструменты и инфраструктура
Схематизированные события
Освобождение данных и единственный источник истины
Микросервисы
Варианты реализации микросервисов
Тестирование
Развертывание
Завершающие слова
Предметный указатель
Об авторе
Об обложке
Предисловие
Условные обозначения, принятые в книге
Благодарности
Предисловие научного редактора к русскому изданию
Глава 1. Почему именно событийно-управляемые микросервисы?
Что такое событийно-управляемые микросервисы?
Введение в предметно-ориентированное проектирование и ограниченные контексты
Использование моделей предметной области и ограниченных контекстов
Привязка ограниченных контекстов к бизнес-требованиям
Структуры обмена информацией
Структуры обмена бизнес-информацией
Структуры обмена технической информацией
Структуры обмена данными
Закон Конвея и структуры обмена информацией
Структуры обмена информацией в традиционных вычислениях
Вариант 1: создать новый сервис
Вариант 2: добавить новое бизнес-требование в существующий сервис
Плюсы и минусы каждого варианта
Командный сценарий: продолжение
Конфликтующие обстоятельства
Событийно-управляемые коммуникационые структуры
События являются основой обмена информацией
Потоки событий обеспечивают единственный источник истины
Потребители занимаются своим моделированием и выполняют свои запросы
Обмен данными улучшается по всей организации
Доступные данные поддерживают изменения в обмене информацией
Асинхронные событийно-управляемые микросервисы
Пример команды, использующей событийно-управляемые микросервисы
Синхронные микросервисы
Недостатки синхронных микросервисов
Связь «точка-точка»
Зависимое масштабирование
Обработка отказов сервисов
Управление версиями API и зависимостями
Доступ к данным с привязкой к реализации
Распределенные монолиты
Тестирование
Преимущества синхронных микросервисов
Резюме
Глава 2. Основы событийно-управляемых микросервисов
Построение топологий
Топология микросервисов
Бизнес-топология
Содержимое события
Структура события
Событие без ключа
Сущностное событие
Событие с ключом
Материализация состояния из сущностных событий
Определения и схемы данных событий
Принцип единственного источника событий
Взаимодействие микросервисов с помощью брокера событий
Хранение и обработка событий
Дополнительные факторы, которые следует учитывать
Брокеры событий или брокеры сообщений?
Потребление из неизменяемого журнала
Потребление в качестве потока событий
Потребление в форме очереди
Обеспечение единственного источника истины
Масштабное управление микросервисами
Размещение микросервисов в контейнерах
Размещение микросервисов на виртуальных машинах
Управление контейнерами и виртуальными машинами
Уплата налога на микросервисы
Резюме
Глава 3. Обмен информацией и контракты на передачу данных
Событийно-управляемые контракты на передачу данных
Использование явных схем в качестве контрактов
Комментарии к определению схемы
Полнофункциональное развитие схемы
Поддержка генератора кода
Разрушительные изменения схемы
Учет критических изменений схемы для событий
Выбор формата события
Дизайн событий
Говорите правду, всю правду и ничего, кроме правды
Используйте одно-единственное определение события в расчете на поток
Используйте самые точные типы данных
Держите события узконаправленными
Пример: перегрузка определений событий
Минимизируйте размер событий
Привлекайте потенциальных потребителей к дизайну события
Не используйте события в качестве семафоров и сигналов
Резюме
Глава 4. Интеграция событийно-управляемых архитектур с существующими системами
Что такое освобождение данных?
Компромиссы для освобождения данных
Конвертация освобожденных данных в события
Шаблоны освобождения данных
Фреймворки освобождения данных
Освобождение данных по запросу
Массовая загрузка
Инкрементная загрузка временных меток
Загрузка с автоинкрементируемым ID
Выполнение пользовательских запросов
Инкрементное обновление
Выгоды от обновления по запросу
Недостатки обновления по запросу
Освобождение данных с помощью журналов захвата изменений в данных
Выгоды от использования журналов хранилища данных
Недостатки использования журналов базы данных
Освобождение данных с помощью исходящих таблиц
Некоторые мысли по поводу производительности
Изоляция внутренних моделей данных
Обеспечение совместимости схем
Выгоды от создания событий с помощью исходящих таблиц
Недостатки создания событий с помощью исходящих таблиц
Захват изменений в данных с помощью триггеров
Выгоды от использования триггеров
Недостатки использования триггеров
Внесение изменений определения данных в захватываемые наборы данных
Обработка произведенных постфактум изменений определения данных для шаблонов запросов и журналов CDC
Обработка изменений определения данных для шаблонов захвата таблиц изменений в данных
Запись данных о событиях в хранилища данных
Влияние на бизнес записи данных в приемники и получения их из источников
Резюме
Глава 5. Основы событийно-управляемой обработки
Топологии без поддержки состояния
Преобразования
Ветвление и слияние потоков
Переподразделение потоков событий
Пример переподразделения потока событий
Соподразделение потоков событий
Пример соподразделения потока событий
Назначение разделов экземпляру потребителя
Назначение разделов с помощью контроллера разделов
Назначение соподразделенных разделов
Стратегии назначения разделов
Назначение по круговой схеме
Статическое назначение
Индивидуально настраиваемое назначение
Восстановление после отказов экземпляра обработчика без поддержки состояния
Резюме
Глава 6. Детерминированная обработка потоков
Детерминизм событийно-управляемых рабочих процессов
Временные метки
Синхронизация распределенных временных меток
Обработка с помощью событий, помеченных временными метками
Пример: выбор порядка событий при обработке многочисленных разделов
Планирование событий и детерминированная обработка
Индивидуально настраиваемые планировщики событий
Обработка на основе времени события, времени обработки и времени получения
Извлечение временной метки потребителем
Вызовы к внешним системам в форме «запрос-ответ»
Водяные знаки
Водяные знаки в параллельной обработке
Время потока
Время потока в параллельной обработке
Неупорядоченные и запоздалые события
Запоздалые события с водяными знаками и временем потока
Причины и последствия неупорядоченных событий
Загрузка из источников с неупорядоченными данными
Несколько производителей в несколько разделов
Чувствительные ко времени функции и управление окнами
Переворачивающиеся окна
Скользящие окна
Сеансовые окна
Обработка запоздалых событий
Повторная обработка или обработка в режиме, близком к реальному времени
Периодические сбои и запоздалые события
Проблемы с подключением производителя/брокера событий
Резюме и дополнительная литература
Глава 7. Потоковая передача с поддержкой состояния
Хранилища состояний и материализация состояний из потока событий
Запись состояния в поток событий журнала изменений
Материализация состояния во внутреннее хранилище состояний
Материализация глобального состояния
Преимущества использования внутреннего состояния
Требования к масштабируемости снимаются с разработчика
Высокопроизводительные возможности, основанные на использовании дисков
Гибкость использования подключенного через сеть внешнего диска
Недостатки использования внутреннего состояния
Ограничения при использовании локальных дисков
Потери при использовании дискового пространства
Масштабирование и восстановление внутреннего состояния
Использование «горячих реплик»
Восстановление и масштабирование из журналов изменений
Восстановление и масштабирование входных потоков событий
Материализация состояния во внешнее хранилище состояний
Преимущества внешнего состояния
Полная локализация данных
Технологии
Недостатки внешнего состояния
Управление многочисленными технологиями
Потеря производительности из-за сетевой задержки
Финансовые затраты на сервисы внешнего хранилища состояний
Полная локальность данных
Масштабирование и восстановление с помощью внешних хранилищ состояний
Использование исходных потоков
Использование журналов изменений
Использование моментальных снимков
Перестраивание хранилищ состояний или их мигрирование?
Перестраивание
Мигрирование
Транзакции и практически однократная обработка
Пример: сервис учета запасов
Практически однократная обработка с транзакциями клиент-брокер
Практически однократная обработка без транзакции клиент-брокер
Генерация дублирующихся событий
Идентификация дублирующихся событий
Защита от дубликатов
Поддержание согласованного состояния
Резюме
Глава 8. Построение рабочих процессов с помощью микросервисов
Шаблон «хореография»
Простой пример событийно-управляемой хореографии
Создание и изменение хореографического рабочего процесса
Мониторинг хореографического рабочего процесса
Шаблон «оркестровка»
Простой пример событийно-управляемой оркестровки
Простой пример оркестровки с прямым вызовом
Событийно-управляемая оркестровка в сравнении с окрестровкой с прямым вызовом
Создание и изменение рабочего процесса на основе оркестровки
Мониторинг процесса на основе оркестровки
Распределенные транзакции
Хореографические транзакции: шаблон «Сага»
Пример хореографической транзакции
Транзакции с оркестровкой
Компенсационные процессы
Резюме
Глава 9. Микросервисы с использованием технологии «Функция как сервис»
Проектирование функционально-ориентированных решений в качестве микросервисов
Обеспечивайте строгое членство в ограниченном контексте
Фиксируйте смещения только после завершения обработки
Когда функция завершила свою обработку
Когда функция только что запустилась
Меньше значит больше
Выбор провайдера FaaS
Построение микросервисов из функций
«Холодный старт» и «теплые старты»
Запуск функций с помощью триггеров
Запуск по новому событию: слушатель потока событий
Запуск по задержке группы потребителей
Запуск по расписанию
Запуск с использованием веб-перехватчиков
Запуск по событиям ресурсов
Решение бизнес-задач с помощью функций
Поддержание состояния
Функции, вызывающие другие функции
Шаблон событийно-управляемого обмена информацией
Шаблон прямого вызова
Хореография и асинхронный вызов функций
Оркестровка и синхронный вызов функций
Завершение работы функции и выключение
Тонкая настройка функций
Выделение достаточных ресурсов
Параметры пакетной обработки событий
Масштабирование решений FaaS
Резюме
Глава 10. Микросервисы на основе базового шаблона производителя и потребителя
Где BPC работают хорошо?
Интеграция с существующими и унаследованными системами
Пример: шаблон «Коляска»
Бизнес-логика с поддержкой состояния без учета порядка событий
Пример: книгоиздание
Когда уровень данных выполняет значительную часть работы
Независимое масштабирование уровня обработки и данных
Пример: агрегирование данных о событиях для создания профилей взаимодействия с пользователями
Гибридные приложения BPC с внешней потоковой обработкой
Пример: использование внешнего фреймворка обработки потоков для объединения потоков событий
Резюме
Глава 11. «Тяжеловесные» фреймворки для микросервисов
Краткая история «тяжеловесных» фреймворков
Внутренняя логика работы «тяжеловесных» фреймворков
Выгоды и ограничения
Варианты настройки кластера и режимы исполнения
Используйте сервис, размещенный на хосте провайдера
Постройте свой собственный полный кластер
Создайте кластер, интегрированный с CMS
Развертывание и запуск кластера с использованием CMS
Указание ресурсов для одного задания с использованием CMS
Режимы передачи приложений в кластер
Драйверный режим
Кластерный режим
Обработка состояния и использование контрольных точек
Масштабирование приложений и обработка разделов потока событий
Масштабирование приложения во время его работы
Масштабирование приложения путем его перезапуска
Автоматическое масштабирование приложений
Восстановление после отказов
Рекомендации по части мультитенантности
Языки и синтаксис
Выбор фреймворка
Пример: обработка щелчков и просмотров с помощью сеансовых окон
Резюме
Глава 12. «Легковесные» фреймворки для микросервисов
Выгоды и ограничения
«Легковесная» обработка
Обработка состояния и использование журналов изменений
Масштабирование приложений и восстановление после отказов
Перераспределение событий
Назначение состояния
Репликация состояния и «горячие реплики»
Выбор «легковесного» фреймворка
Apache Kafka Streams
Apache Samza: режим встраивания
Языки и синтаксис
Операция соединения «поток-таблица-таблица»: шаблон обогащения
Резюме
Глава 13. Интегрирование событийно-управляемых микросервисов с микросервисами типа «запрос-ответ»
Обработка внешних событий
Автономно генерируемые события
Реактивно генерируемые события
Обработка автономно генерируемых аналитических событий
Интегрирование со сторонними API «запрос-ответ»
Обработка и обслуживание данных с поддержкой состояния
Обслуживание запросов реального времени с помощью внутренних хранилищ состояний
Обслуживание запросов реального времени с помощью внешних хранилищ состояний
Обслуживание запросов путем материализации событийно-управляемого микросервиса
Обслуживание запросов через отдельный микросервис
Обработка запросов внутри событийно-управляемого рабочего процесса
Обработка событий для пользовательских интерфейсов
Пример: рабочий процесс публикации газет (шаблон одобрения)
Разделение сервисов одобрения редактором и рекламодателем
Микрофронтенды в приложениях на основе запросов-ответов
Выгоды от микрофронтендов
Композиционные микросервисы
Простота привязки к бизнес-требованиям
Недостатки микрофронтендов
Потенциальное отсутствие единообразия элементов пользовательского интерфейса и стилизации
Различающаяся производительность микрофронтендов
Пример: приложение поиска источников впечатлений и отзывов о них
Резюме
Глава 14. Вспомогательные инструменты
Система закрепления микросервисов за командами
Создание и модифицирование потока событий
Разметка потока событий метаданными
Квоты
Реестр схем
Оповещение о создании и модификации схем
Управление смещением
Разрешения и списки контроля доступа для потоков событий
Управление состоянием и сброс приложения
Мониторинг запаздывания смещения потребителей
Оптимизированный процесс создания микросервисов
Элементы управления контейнерами
Создание кластеров и управление ими
Программная доводка брокеров событий
Программная доводка вычислительных ресурсов
Межкластерная репликация событийных данных
Программная доводка инструментария
Отслеживание зависимостей и визуализация топологии
Пример топологии
Резюме
Глава 15. Тестирование событийно-управляемых микросервисов
Общие принципы тестирования
Модульное тестирование функций топологии
Функции без поддержки состояния
Функции с поддержкой состояния
Тестирование топологии
Тестирование развития и совместимости схем
Интеграционное тестирование событийно-управляемых микросервисов
Локальное интеграционное тестирование
Создание временной среды внутри среды выполнения тестируемого кода
Создание временной среды, внешней по отношению к тестируемому коду
Интеграция размещенных на хосте сервисов с использованием возможностей имитации и симуляции
Интеграция удаленных сервисов, не имеющих локальных возможностей
Полное интеграционное тестирование
Программное создание временной среды интеграционного тестирования
Заполнение событиями с использованием реальных производственных данных
Заполнение событиями из подготовленного источника тестирования
Создание имитационных событий с использованием схем
Тестирование с использованием единой общей среды
Тестирование с использованием производственной среды
Выбор стратегии полного интеграционного тестирования
Резюме
Глава 16. Развертывание событийно-управляемых микросервисов
Принципы развертывания микросервисов
Архитектурные компоненты развертывания микросервисов
Системы непрерывной интеграции, доставки и развертывания
Системы управления контейнерами и стандартное аппаратное обеспечение
Базовый шаблон полного развертывания
Шаблон непрерывного обновления
Шаблон разрушительных изменений схемы
Продолженная миграция через два потока событий
Синхронизированная миграция в новый поток событий
Шаблон «сине-зеленого» развертывания
Резюме
Глава 17. Заключение
Уровни обмена информацией
Предметные области бизнеса и ограниченные контексты
Совместные инструменты и инфраструктура
Схематизированные события
Освобождение данных и единственный источник истины
Микросервисы
Варианты реализации микросервисов
Тестирование
Развертывание
Завершающие слова
Предметный указатель
Об авторе
Об обложке
Alternative description
Organizations today often struggle to balance business requirements with ever-increasing volumes of data. Additionally, the demand for leveraging large-scale, real-time data is growing rapidly among the most competitive digital industries. Conventional system architectures may not be up to the task. With this practical guide, you'll learn how to leverage large-scale data usage across the business units in your organization using the principles of event-driven microservices.Author Adam Bellemare takes you through the process of building an event-driven microservice-powered organization. You'll reconsider how data is produced, accessed, and propagated across your organization. Learn powerful yet simple patterns for unlocking the value of this data. Incorporate event-driven design and architectural principles into your own systems. And completely rethink how your organization delivers value by unlocking near-real-time access to data at scale.You'll learn:How to leverage event-driven architectures to deliver exceptional business valueThe role of microservices in supporting event-driven designsArchitectural patterns to ensure success both within and between teams in your organizationApplication patterns for developing powerful event-driven microservicesComponents and tooling required to get your microservice ecosystem off the ground
Alternative description
Organizations today often struggle when trying to balance business requirements with ever-increasing volumes of data. Yet the need to take advantage of real-time data continues to grow among the most competitive digital industries. Conventional system architectures may not be up to the task. With this practical guide, you'll learn how to leverage large-scale data usage across the business units in your organization using the principles of event-driven microservices. Author Adam Bellemare from Flipp takes you through the process of building a complete microservice-powered organization. You'll reconsider how data is produced, accessed, and used across your organization. Discover powerful yet simple patterns for unlocking the value of this data. Incorporate event-driven design and architectural principles into your own systems. And completely rethink how your organization delivers value by unlocking real-time access to data at scale. You'll learn: How to leverage event-driven architectures to deliver exceptional business value The role of microservices in supporting event-driven design Architectural patterns to ensure success both within and between teams in your organization Application patterns for developing powerful event-driven microservices.
Alternative description
Organizations today often struggle to balance business requirements with ever-increasing volumes of data. Additionally, the demand for leveraging large-scale, real-time data is growing rapidly among the most competitive digital industries. Conventional system architectures may not be up to the task. With this practical guide, youll learn how to leverage large-scale data usage across the business units in your organization using the principles of event-driven microservices. Author Adam Bellemare takes you through the process of building an event-driven microservice-powered organization. Youll reconsider how data is produced, accessed, and propagated across your organization. Learn powerful yet simple patterns for unlocking the value of this data. Incorporate event-driven design and architectural principles into your own systems. And completely rethink how your organization delivers value by unlocking near-real-time access to data at scale. Youll
date open sourced
2022-08-17
We strongly recommend that you support the author by buying or donating on their personal website, or borrowing in your local library.
🚀 Fast downloads
Become a member to support the long-term preservation of books, papers, and more. To show our gratitude for your support, you get fast downloads. ❤️
- Fast Partner Server #1 (recommended)
- Fast Partner Server #2 (recommended)
- Fast Partner Server #3 (recommended)
- Fast Partner Server #4 (recommended)
- Fast Partner Server #5 (recommended)
- Fast Partner Server #6 (recommended)
- Fast Partner Server #7
- Fast Partner Server #8
- Fast Partner Server #9
- Fast Partner Server #10
- Fast Partner Server #11
🐢 Slow downloads
From trusted partners. More information in the FAQ. (might require browser verification — unlimited downloads!)
- Slow Partner Server #1 (slightly faster but with waitlist)
- Slow Partner Server #2 (slightly faster but with waitlist)
- Slow Partner Server #3 (slightly faster but with waitlist)
- Slow Partner Server #4 (slightly faster but with waitlist)
- Slow Partner Server #5 (no waitlist, but can be very slow)
- Slow Partner Server #6 (no waitlist, but can be very slow)
- Slow Partner Server #7 (no waitlist, but can be very slow)
- Slow Partner Server #8 (no waitlist, but can be very slow)
- After downloading: Open in our viewer
All download options have the same file, and should be safe to use. That said, always be cautious when downloading files from the internet, especially from sites external to Anna’s Archive. For example, be sure to keep your devices updated.
External downloads
-
For large files, we recommend using a download manager to prevent interruptions.
Recommended download managers: Motrix -
You will need an ebook or PDF reader to open the file, depending on the file format.
Recommended ebook readers: Anna’s Archive online viewer, ReadEra, and Calibre -
Use online tools to convert between formats.
Recommended conversion tools: CloudConvert and PrintFriendly -
You can send both PDF and EPUB files to your Kindle or Kobo eReader.
Recommended tools: Amazon‘s “Send to Kindle” and djazz‘s “Send to Kobo/Kindle” -
Support authors and libraries
✍️ If you like this and can afford it, consider buying the original, or supporting the authors directly.
📚 If this is available at your local library, consider borrowing it for free there.
Total downloads:
A “file MD5” is a hash that gets computed from the file contents, and is reasonably unique based on that content. All shadow libraries that we have indexed on here primarily use MD5s to identify files.
A file might appear in multiple shadow libraries. For information about the various datasets that we have compiled, see the Datasets page.
For information about this particular file, check out its JSON file. Live/debug JSON version. Live/debug page.