Практика реактивного программирования в Spring 5.
Book information
Description
Данная книга посвящена реактивному программированию в Spring. Описаны многочисленные возможности построения эффективных реактивных систем с помощью Spring 5 и других инструментов, та- ких как WebFlux, Spring Boot и Project Reactor. Приведены методы реактивного программирования и их использование для взаимо- действий с базами данных и между серверами. Рассмотрено созда- ние независимых и высокопроизводительных микросервисов с по- мощью Spring Cloud Streams. Издание предназначено разработчикам на Java, использующим фреймворк Spring для своих задач и желающим научиться созда- вать надежные и реактивные приложения, способные автоматиче- ски масштабироваться в облаке. Практика реактивного программирования в Spring 5_переплет Практика реактивного программирования в Spring 5 финал.pdf Предисловие 1. Причины выбора Spring Основные преимущества реактивности Взаимодействия на основе обмена сообщениями Примеры использования реактивности Причины добавления поддержкиреактивности в Spring Реактивность на уровне служб Заключение 2. Реактивное программирование в Spring. Основные понятия Первые реактивные решения в Spring Шаблон «Наблюдатель» Примеры использования шаблона «Наблюдатель» Шаблон «Публикация/Подписка» с использованием @EventListener Создание приложений с @EventListener Создание приложения на основе Spring Реализация бизнес-логики Асинхронные взаимодействия по HTTP с помощью Spring Web MVC Публикация конечной точки SSE Настройка поддержки асинхронноговыполнения Создание пользовательского интерфейса с поддержкой SSE Проверка приложения Критический обзор решения RxJava как реактивный фреймворк «Наблюдатель» плюс «Итератор» равно «реактивный поток» Производство и потребление потоков Генерация последовательности асинхронных событий Преобразование потоков и диаграммы Marble Оператор map Оператор filter Оператор count Оператор zip Требования и преимущества RxJava Переделка приложения с RxJava Реализация бизнес-логики Нестандартный SseEmitter Публикация конечной точки SSE Конфигурация приложения Краткая история развития реактивных библиотек Реактивный ландшафт Заключение 3. Reactive Streams – новый стандарт потоков Реактивность для всех Проблема несовместимости API Модели обмена PULL и PUSH Проблема управления потоком данных Медленный производитель и быстрый потребитель Быстрый производитель и медленный потребитель Неограниченная очередь Ограниченная очередь со сбросом избыточных элементов Ограниченная очередь с блокировкой Решение Основные положения стандарта Reactive Streams Требования Reactive Streams в действии Введение в понятие обработчика Processor Проверка совместимости с Reactive Streams Проверка издателя Publisher Проверка подписчика Subscriber JDK 9 Асинхронный и параллельный API в Reactive Streams Преображение реактивного ландшафта Изменения в RxJava Изменения в Vert.x Усовершенствования в Ratpack Драйвер MongoDB с поддержкой Reactive Streams Комбинирование реактивных технологий на практике Заключение 4. Project Reactor – основа реактивных приложений Краткая история Project Reactor Project Reactor 1.x Project Reactor 2.x Основы Project Reactor Добавление библиотеки Reactor в проект Реактивные типы: Flux и Mono Flux Mono Реактивные типы из RxJava 2 Observable Flowable Single Maybe Completable Создание последовательностей Flux и Mono Подписка на реактивный поток Реализация своих подписчиков Преобразование реактивных последовательностей с помощью операторов Отображение элементов реактивных последовательностей Фильтрация реактивных последовательностей Сбор данных из реактивных последовательностей Сокращение элементов потока Комбинирование реактивных потоков Пакетная обработка элементов потока Операторы flatMap, concatMap и flatMapSequential Извлечение выборки элементов Преобразование реактивных последовательностей в блокирующие структуры Просмотр элементов при обработке последовательности Материализация и дематериализация сигналов Поиск подходящего оператора Создание потоков данных программным способом Фабричные методы push и create Фабричный метод generate Передача одноразовых ресурсовв реактивные потоки Обертывание транзакций с помощью фабричного метода usingWhen Обработка ошибок Управление обратным давлением Горячие и холодные потоки данных Широковещательная рассылка элементов потока данных Кеширование элементов потока Совместное использование элементов из потока Работа с временем Компоновка и преобразование реактивных потоков Процессоры Тестирование и отладка Project Reactor Дополнения к Reactor Продвинутые средства в Project Reactor Жизненный цикл реактивных потоков данных Этап сборки Этап подписки Выполнение Модель планирования потоков выполнения в Reactor Оператор publishOn Параллельная обработка с помощью publishOn Оператор subscribeOn Оператор parallel Планировщик Контекст Особенности внутренней реализацииProject Reactor Макрослияние Микрослияние Заключение 5. Добавление реактивности с помощью Spring Boot 2 Быстрый старт как ключ к успеху Использование Spring Roo для ускорения разработки приложений Spring Boot как ключ к созданию быстро растущих приложений Реактивность в Spring Boot 2.0 Реактивность в Spring Core Поддержка преобразования реактивных типов Реактивный ввод/вывод Реактивность в Web Реактивность в Spring Data Реактивность в Spring Session Реактивность в Spring Security Реактивность в Spring Cloud Реактивность в Spring Test Реактивность в мониторинге Заключение 6. Неблокирующие и асинхронные взаимодействия с WebFlux WebFlux как основа реактивного сервера Реактивное веб-ядро Реактивные фреймворки Web и MVC Чисто функциональные приемы в WebFlux Неблокирующие взаимодействия между службами с WebClient Реактивный WebSocket API Серверный WebSocket API Клиентский WebSocket API Сравнение WebFlux WebSocket и Spring WebSocket Реактивный поток SSE и легковесная замена WebSockets Реактивные механизмы шаблонов Реактивная безопасность Реактивный доступ к SecurityContext Использование реактивной безопасности Взаимодействия с другими реактивными библиотеками Сравнение WebFlux и Web MVC Законы сравнения фреймворков Закон Литтла Закон Амдала Универсальный закон масштабируемости Анализ и сравнение Модели обработки в WebFlux и Web MVC Влияние моделей обработки на пропускную способность и задержку Проблемы модели обработки в WebFlux Потребление памяти разными моделями обработки Влияние модели обработки на удобство Практическое применение WebFlux Системы на основе микросервисов Системы, обслуживающие клиентов с медленными соединениями Потоковые системы или системы реального времени WebFlux в действии Заключение 7. Реактивный доступк базам данных Модели обработки данныхв современном мире Предметно-ориентированное проектирование Хранение данных в эпоху микрослужб Использование хранилищ разного типа База данных как услуга Разделение данных между микросервисами Распределенные транзакции Событийно-ориентированные архитектуры Согласованность в конечном счете Шаблон SAGA Регистрация событий Разделение ответственности на команды и запросы Бесконфликтно реплицируемые типы данных Система обмена сообщениями как хранилище данных Синхронная модель извлечения данных Протокол связи для доступа к базе данных Драйвер базы данных JDBC Управление соединениями Реактивный доступ к базе данных Spring JDBC Spring Data JDBC Добавление реактивности в Spring Data JDBC JPA Добавление реактивности в JPA Spring Data JPA Добавление реактивности в Spring Data JPA Spring Data NoSQL Ограничения синхронной модели Достоинства синхронной модели Реактивный доступ к данным с использованием Spring Data Реактивное хранилище на основе MongoDB Объединение операций с хранилищем Как работают реактивные хранилища Поддержка разбиения на страницы Детали реализации ReactiveMongoRepository Использование ReactiveMongoTemplate Использование реактивных драйверов (MongoDB) Использование асинхронных драйверов (Cassandra) Реактивные транзакции Реактивные транзакции в MongoDB 4 Распределенные транзакции с шаблоном SAGA Реактивные коннекторы в Spring Data Реактивный коннектор MongoDB Реактивный коннектор Cassandra Реактивный коннектор Couchbase Реактивный коннектор Redis Ограничения и ожидаемые улучшения Асинхронный доступ к базам данных Реактивное соединение с реляционной базой данных Использование R2DBC вместе с Spring Data R2DBC Преобразование синхронного хранилища в реактивное С помощью библиотеки rxjava2-jdbc Обертывание синхронного CrudRepository Реактивный Spring Data в действии Заключение 8. Масштабирование с Cloud Streams Брокеры сообщений как основа систем, управляемых сообщениями Балансировка нагрузки на стороне сервера Балансировка нагрузки на стороне клиента с Spring Cloud и Ribbon Брокеры сообщений как эластичный и надежный слой для передачи сообщений Рынок брокеров сообщений Spring Cloud Streams как моств экосистему Spring Реактивное программирование в облаке Spring Cloud Data Flow Модульная организация приложений с Spring Cloud Function Spring Cloud – функция как часть конвейера обработки данных RSocket для реактивной передачи сообщений с низкой задержкой RSocket и Reactor-Netty RSocket в Java RSocket и gRPC RSocket в Spring Framework RSocket в других фреймворках Проект ScaleCube Проект Proteus В заключение о RSocket Заключение 9. Тестирование реактивных приложений Почему реактивные потоки данных сложно тестировать? Тестирование реактивных потоков с помощью StepVerifier Основы StepVerifier Продвинутые приемы тестирования с использованием StepVerifier Виртуальное время Проверка реактивного контекста Тестирование WebFlux Тестирование контроллеров с помощью WebTestClient Тестирование WebSocket Заключение 10. И, наконец, выпуск! Важность поддержки идеологии DevOps в приложениях Мониторинг реактивных Spring-приложений Spring Boot Actuator Добавление механизма мониторинга в проект Конечная точка для получения информации о службе Конечная точка для получения информации о работоспособности Конечная точка для получения информации о параметрах работы Конечная точка управления журналированием Другие важные конечные точки Реализация своей конечной точки для Actuator Безопасность конечных точек Micrometer Параметры по умолчанию в Spring Boot Мониторинг реактивных потоков данных Мониторинг потоков в Reactor Мониторинг планировщиков в Reactor Реализация своих параметров Micrometer Распределенная трассировка с Spring Boot Sleuth Пользовательский интерфейс Spring Boot Admin 2.x Развертывание в облаке Развертывание в Amazon Web Services Развертывание в Google Kubernetes Engine Развертывание в Pivotal Cloud Foundry Обнаружение RabbitMQ в PCF Обнаружение MongoDB в PCF Развертывание в PCF без конфигурации с помощью Spring Cloud Data Flow Knative для FaaS на основе Kubernetes и Istio Советы по успешному развертыванию приложений Заключение Указатель
Similar books
Практика реактивного программирования в Spring 5. Code
2019 · RAR
Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique
2025 · PDF
Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная
2022 · PDF
Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание
2021 · PDF
Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)
2022 · PDF
Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)
2023 · PDF
Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"
2022 · PDF
Философия. Учебно-методический комплекс дисциплины по направлениям подготовки: 51.03.03 (071800.62) «Социально-культурная деятельность», профили подготовки: «Социально-культурные технологии в индустрии досуга», «Менеджмент социально-культурной деятельности», «Менеджмент детско-юношеского досуга», «Постановка и продюсирование культурно-досуговых программ», «Социально-культурная анимация и рекреация»; 38.03.02 (080200.62) «Менеджмент», профили подготовки: «Управление человеческими ресурсами», «Управление малым бизнесом», квалификации (степень) выпускника – «бакалавр»
2014 · PDF