Микросервисы Spring в действии
Покупка
Новинка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Перевод:
Киселев Артём Николаевич
Год издания: 2022
Кол-во страниц: 490
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-97060-971-2
Артикул: 833979.01.99
В книге рассказывается о том, как создавать приложения на основе микросервисов с использованием Java и Spring. Описываются особенности управления конфигурацией микросервисов и передовые практики их разработки. Уделено внимание защите потребителей, когда один или несколько экземпляров микросервисов выходят из строя. Начав с создания простых служб, читатель постепенно перейдет к знакомству с приемами эффективного журналирования и мониторинга, научится реструктурировать приложения на Java с помощью инструментов Spring, освоит управление API с помощью Spring Cloud Gateway. Издание предназначено для разработчиков на Java, имеющим опыт создания распределенных приложений и использования Spring, а также всем, кому интересно узнать, что необходимо для развертывания приложения на основе микросервисов в облаке.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Джон Карнелл, Иллари Уайлупо Санчес Микросервисы Spring в действии
Spring Microservices in Action JOHN CARNELL and ILLARY HUAYLUPO SÁNCHEZ
Микросервисы Spring в действии Джон Карнелл, Иллари Уайлупо Санчес Москва, 2022
УДК 004.432 ББК 32.972.1 К21 Джон Карнелл, Иллари Уайлупо Санчес К21 Микросервисы Spring в действии / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2022. – 490 с.: ил. ISBN 978-5-97060-971-2 В книге рассказывается о том, как создавать приложения на основе микросервисов с использованием Java и Spring. Описываются особенности управления конфигурацией микросервисов и передовые практики их разработки. Уделено внимание защите потребителей, когда один или несколько экземпляров микросервисов выходят из строя. Начав с создания простых служб, читатель постепенно перейдет к знакомству с приемами эффективного журналирования и мониторинга, научится реструктурировать приложения на Java с помощью инструментов Spring, освоит управление API с помощью Spring Cloud Gateway. Издание предназначено для разработчиков на Java, имеющим опыт создания распределенных приложений и использования Spring, а также всем, кому интересно узнать, что необходимо для развертывания приложения на основе микросервисов в облаке. УДК 004.432 ББК 32.972.1 Copyright Original English language edition published by Manning Publications USA, USA. Copyright (c) 2021 by Manning Publications. Russian-language edition copyright (c) 2021 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. © 2021 by Manning Publications Co. © Оформление, издание, перевод, ДМК Пресс, 2022 ISBN (анг.) 978-1-617-29695-6 ISBN (рус.) 978-5-97060-971-2
Я посвящаю эту книгу всем женщинам, которые делают карьеру в естественно-научных, инженерно-технических и математических дисциплинах. Нет ничего невозможного, если упорно трудиться.
Краткое оглавление 1 Добро пожаловать в Spring Cloud ........................................ 27 2 Обзор мира микросервисов через призму Spring Cloud .. 63 3 Создание микросервисов с использованием Spring Boot ... 91 4 Добро пожаловать в Docker ................................................. 129 5 Управление конфигурациями с использованием Spring Cloud Configuration Server ....................................... 150 6 Обнаружение служб .............................................................. 191 7 Когда случаются неприятности: шаблоны устойчивости с использованием Spring Cloud и Resilience4j .................. 223 8 Маршрутизация служб с использованием Spring Cloud Gateway .................................................................................... 259 9 Безопасность микросервисов ............................................. 294 10 Событийно-ориентированная архитектура и Spring Cloud Stream ........................................................... 332 11 Распределенная трассировка с использованием Spring Cloud Sleuth и Zipkin ................................................ 367 12 Развертывание микросервисов .......................................... 404
Содержание Предисловие от издательства ............................................................... 16 Предисловие .................................................................................................. 17 Благодарности ............................................................................................. 19 Об этой книге ............................................................................................... 21 1 Добро пожаловать в Spring Cloud ............................................. 27 1.1. Эволюция архитектуры микросервисов ................................. 28 1.1.1. N-уровневая архитектура .................................................... 28 1.1.2. Что такое монолитная архитектура? ............................... 29 1.1.3. Что такое микросервис? ...................................................... 30 1.1.4. Зачем менять способ создания приложений? ....................... 32 1.2. Микросервисы со Spring ............................................................ 34 1.3. Что мы будем создавать? ............................................................ 36 1.4. О чем эта книга? .......................................................................... 37 1.4.1. Что вы узнаете в этой книге ............................................... 37 1.4.2. Почему эта книга актуальна для вас? ................................ 38 1.5. Облачные приложения и приложения на основе микросервисов ................................................................................... 39 1.5.1. Создание микросервиса с помощью Spring Boot .................... 39 1.5.2. Что такое облачные вычисления? ....................................... 44 1.5.3. В чем преимущества облачных вычислений и микросервисов? ............................................................................ 46 1.6. Микросервисы – это больше чем код ...................................... 49 1.7. Базовый шаблон разработки микросервисов ........................ 50 1.8. Шаблоны маршрутизации ......................................................... 52 1.9. Устойчивость клиентов .............................................................. 54
1.10. Шаблоны безопасности ........................................................... 55 1.11. Шаблоны журналирования и трассировки .......................... 56 1.12. Шаблон сбора метрик приложения ....................................... 58 1.13. Шаблоны сборки/развертывания микросервисов ............ 59 Итоги ................................................................................................... 61 2 Обзор мира микросервисов через призму Spring Cloud ........ 63 2.1. Что такое Spring Cloud? ............................................................. 64 2.1.1. Spring Cloud Config ............................................................... 65 2.1.2. Spring Cloud Service Discovery ................................................ 66 2.1.3. Spring Cloud LoadBalancer и Resilience4j .............................. 66 2.1.4. Spring Cloud API Gateway ..................................................... 67 2.1.5. Spring Cloud Stream ............................................................... 67 2.1.6. Spring Cloud Sleuth ................................................................ 67 2.1.7. Spring Cloud Security ............................................................. 68 2.2. Пример использования Spring Cloud ...................................... 68 2.3. Приемы создания облачных микросервисов ......................... 71 2.3.1. База кода .............................................................................. 74 2.3.2. Зависимости ........................................................................ 75 2.3.3. Конфигурация ...................................................................... 76 2.3.4. Вспомогательные службы ..................................................... 76 2.3.5. Сборка, выпуск, выполнение ................................................. 77 2.3.6. Процессы .............................................................................. 78 2.3.7. Привязка портов ................................................................. 78 2.3.8. Масштабируемость ............................................................. 79 2.3.9. Одноразовость ...................................................................... 79 2.3.10. Сходство окружений разработки/эксплуатации ............. 80 2.3.11. Журналирование ................................................................ 80 2.3.12. Задачи администрирования ............................................. 81 2.4. Актуальность наших примеров ................................................. 81 2.5. Создание микросервиса с использованием Spring Boot и Java ..................................................................................82 2.5.1. Подготовка окружения ........................................................ 83 2.5.2. Начало создания проекта .................................................... 83 2.5.3. Запуск приложения Spring Boot: класс инициализации ...... 88 Итоги ................................................................................................... 90 3 Создание микросервисов с использованием Spring Boot ....... 91 3.1. Точка зрения архитектора: проектирование микросервисной архитектуры ......................................................... 92 3.1.1. Декомпозиция бизнес-задачи ............................................ 92 Содержание 8
3.1.2. Детализация служб ............................................................. 95 3.1.3. Определение интерфейсов служб .......................................... 98 3.2. Когда не следует использовать микросервисы ...................... 99 3.2.1. Сложность распределенных систем ..................................... 99 3.2.2. Беспорядочный рост виртуальных серверов или контейнеров ............................................................................. 99 3.2.3. Тип приложения................................................................. 100 3.2.4. Транзакции и согласованность данных .............................. 100 3.3. Точка зрения разработчика: создание микросервиса с использованием Spring Boot и Java ............................................. 100 3.3.1. Встраивание дверного проема в микросервис: контроллер Spring Boot ................................................................. 101 3.3.2. Добавление интернационализации в службу лицензий ..... 112 3.3.3. Реализация Spring HATEOAS для отображения связанных ссылок .......................................................................... 115 3.4. Точка зрения инженера DevOps: сборка выполняемых артефактов ........................................................................................ 118 3.4.1. Сборка службы: упаковка и развертывание микросервисов .....120 3.4.2. Инициализация службы: управление конфигурацией микросервисов ...................................................... 122 3.4.3. Регистрация и обнаружение службы: взаимодействие клиентов с микросервисами ............................... 123 3.4.4. Мониторинг состояния микросервиса ............................... 124 3.5. Объединение точек зрения ..................................................... 127 Итоги ................................................................................................. 128 4 Добро пожаловать в Docker ...................................................... 129 4.1. Контейнеры или виртуальные машины? .............................. 130 4.2. Что такое Docker? ..................................................................... 132 4.3. Файлы Dockerfile ....................................................................... 135 4.4. Docker Compose......................................................................... 136 4.5. Интеграция Docker с микросервисами ................................. 138 4.5.1. Создание образа Docker ...................................................... 138 4.5.2. Создание образов Docker со Spring Boot ............................... 144 4.5.3. Запуск служб с помощью Docker Compose ............................ 147 Итоги ................................................................................................. 148 5 Управление конфигурациями с использованием Spring Cloud Configuration Server .............................................. 150 5.1. Об управлении конфигурациями (и сложностью) .............. 151 5.1.1. Архитектура управления конфигурацией ......................... 152 Содержание 9
5.1.2. Варианты реализации....................................................... 154 5.2. Настройка Spring Cloud Configuration Server ...................... 156 5.2.1. Настройка класса инициализации Spring Cloud Config ... 161 5.2.2. Использование Spring Cloud Config Server с файловой системой .................................................................... 161 5.2.3. Создание конфигурационных файлов для службы ............. 163 5.3. Интеграция Spring Cloud Config с клиентом Spring Boot ..... 168 5.3.1. Настройка зависимостей Spring Cloud Config Service в службе лицензий ......................................................................... 170 5.3.2. Настройка службы лицензий для взаимодействий с Spring Cloud Config ..................................................................... 170 5.3.3. Подключение к источнику данных с использованием Spring Cloud Config Server ............................................................. 175 5.3.4. Чтение настроек с использованием @ConfigurationProperties ............................................................... 179 5.3.5. Обновление настроек с использованием Spring Cloud Config Server ............................................................. 180 5.3.6. Использование Spring Cloud Configuration Server с Git ....... 182 5.3.7. Интеграция Vault со службой Spring Cloud Config ............. 183 5.3.8. Пользовательский интерфейс Vault ................................... 184 5.4. Защита конфиденциальных настроек в конфигурации ..... 187 5.4.1. Настройка симметричного шифрования .......................... 187 5.4.2. Шифрование и дешифрование настроек ............................ 188 5.5. Заключительные мысли ........................................................... 190 Итоги ................................................................................................. 190 6 Обнаружение служб ..................................................................... 191 6.1. Где моя служба? .......................................................................... 193 6.2. Обнаружение служб в облаке .................................................. 195 6.2.1. Архитектура механизма обнаружения служб ................... 196 6.2.2. Обнаружение служб с использованием Spring и Netflix Eureka ....................................................................................200 6.3. Создание службы Spring Eureka .............................................. 202 6.4. Регистрация служб в Spring Eureka ........................................ 207 6.4.1. REST API Eureka ................................................................ 211 6.4.2. Панель управления Eureka ................................................. 212 6.5. Использование механизма обнаружения служб .................. 214 6.5.1. Поиск экземпляров служб с Spring Discovery Client ............. 216 6.5.2. Вызов служб с использованием шаблона Spring REST с поддержкой Load Balancer ......................................................... 218 6.5.3. Вызов служб с использованием Netflix Feign ........................ 220 Итоги ................................................................................................. 222 Содержание 10