Обзор Spring-компонентов. Часть 2 – Spring Cloud |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-07-10 13:58 В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте. Первая часть обзора доступна по ссылке – «Обзор Spring-компонентов. Часть 1 – Spring Boot и фреймворк интеграции». Вступление Создав приложение и освоив контейнеризацию, вы увидите, как легко, одной цифрой в конфиг-файле, настраивается запуск контейнеров во множестве экземпляров, для отказоустойчивости и масштабирования. Но возникает проблема, – потребитель сервисов не умеет работать с множеством экземпляров. Для связи прикладных сервисов в целостное приложение, необходимы инфраструктурные сервисы. Подсистема Spring Cloud состоит из:
Термины Чтобы ориентироваться в тексте, важно понимать отличие нового термина «инфраструктурные сервисы» от «облачных платформ» и «прикладных сервисов». Прикладные сервисы - реализуют бизнес-логику распределенного приложения. Инфраструктурные сервисы – координируют взаимодействие экземпляров прикладных сервисов. Подробнее: Основные функции:
Service Mesh – комплекс инфраструктурных сервисов, реализованный как самостоятельное ПО, не привязанное ни к облачным платформам, ни к фреймворкам разработки. Облачные платформы – распределяют по физическим серверам docker-контейнеры или поды (pod). Подробнее: Основные функции:
Под (pod) – минимальный юнит развертывания в Kubernetes, содержит произвольное количество docker-контейнеров. Компоненты Spring Cloud приложений Инфраструктурные сервисы, переносимые между облачными платформами Сервис с ролью Gateway 1. Spring Cloud Gateway Сервис для маршрутизации входящих запросов между микросервисами и балансировки между экземплярами микросервисов. Сервисы с ролью Config Server Сервисы с ролью Config Server (сервер конфигураций) являются внешним хранилищем настроек всех сервисов приложения для реализации третьего принципа 12-факторных приложений. Настройки хранятся в виде текстовых properties файлов, которые рассылаются сервисам по запросу. 2. Spring Cloud Config Сервер конфигураций по умолчанию. 3. Spring Cloud Vault Обертка над Spring Vault для использования коммерческого хранилища секретов HashiCorp в роли сервера конфигураций. 4. Spring Cloud Bus Механизм доставки конфигураций через брокеры Kafka или AMQP. Сервисы с ролью Service Discovery Бывают ситуации, когда некоторые контейнеры не работают. На это может быть несколько причин:
Service Discovery отслеживает доступность сервисов, их ip-адреса, роли и предоставляет эту информацию другим компонентам распределенного приложения. 5. Spring Cloud Netflix (Eureka) Сервис с ролью Service Discovery. Унаследован от Netflix и рекомендован по умолчанию. 6. Spring Cloud Zookeeper Клиент интеграции для Zookeeper. Zookeeper это Service Discovery по умолчанию для Apache Kafka. Если в проекте используется Kafka с Zookeeper, отдельный Service Discovery не требуется, достаточно подключиться к уже используемому. Интеграция с Service Mesh 7. Spring Cloud Consul Клиент для использования Config Server и Service Discovery, встроенных в Consul. Примечание: в главах 24.9 и 24.10 отражены клиенты интеграции с Istilo, – еще одной реализаций концепции Service Mesh. Зависимости, встраиваемые в приложения 8. Spring Cloud Это раздел вступительной документации, не описывающий какой-либо конкретный компонент. Из полезной информации, он содержит описание 850 properties настроек Cloud компонентов. Логически, эти настройки дополняют документацию к следующему компоненту «Spring Cloud Commons». 9. Spring Cloud Commons Транзитивная зависимость, не требующая явной загрузки. Расширяет Spring Boot, содержит две библиотеки: 9.1. Spring Cloud Context – клиент для загрузки properties файлов с Config Server и загрузки в DI-контейнер бинов, специфичных для Spring Cloud компонентов. Поддерживает шифрование, при передаче properties файлов. 9.2. Spring Cloud Commons (Commons в Commons, да) – для настройки абстракций Service Discovery, Circuit Breaker, LoadBalancer и ServiceRegistry независимо от имплементации. LoadBalancer – абстракция «клиентского» балансировщика запросов. LoadBalancer задокументирован только в «Spring Cloud Commons». Клиентский балансировщик используется, когда ваш прикладной сервис обращается к другим сервисам напрямую, в обход Gateway. Логика работы – запрашивает в Service Discovery ip-адреса подходящих запросу экземпляров сервисов и обеспечивает «веерную» рассылку запросов – каждый следующий запрос передается на следующий в списке ip и далее по кругу. 10. Spring Cloud OpenFeign Декларативный REST клиент – позволяет одной-двумя аннотациями организовать отправку HTTP запросов. Добавляется в прикладные сервисы, как maven зависимость. Используется для взаимодействия с инфраструктурными и прикладными микросервисами. Поддерживает интеграцию с Service Discovery, Circuit Breaker и LoadBalancer. Недостаток: может принимать только текстовые данные, но не двоичные, – загружать файлы не получится. 11. Spring Cloud Circuit Breaker Компонент для повышения отказоустойчивости сервисов, путем временного прерывания отправки запросов. Добавляется в прикладные сервисы, как maven зависимость. При перегрузке вызываемого сервиса, когда запросы завершаются ошибкой «превышен таймаут ожидания ответа», Circuit Breaker временно прерывает повторную отправку исходящих запросов, чтобы вызываемый сервис мог восстановить работоспособность. Также экономятся ресурсы отправляющего запросы сервиса. Является универсальным API для имплементаций: Netfix Hystrix, Alibaba Sentinel, Spring Retry, Resilience4J. 12. Spring Cloud Security Расширение Spring Security, реализует:
13. Spring Cloud Schema Registry Компонент для форматно-логического контроля сообщений Kafka на уровне библиотеки сериализации Apache Avro. Подробнее о сериализации в Kafka При работе с Kafka, из приложения-отправителя передаются java классы, и приложение-потребитель получает те же java классы. Сам Kafka хранит только массивы байтов. Поэтому, при передаче классов, используется сериализация – извлечение из классов полезных данных и преобразование в массив байтов. А при получении классов из Kafka, обратный процесс – десериализация. Apache Avro – популярная библиотека сериализации для Kafka, с поддержкой схем форматно-логического контроля. Может на этапе сериализации валидировать сообщения на соответствие схеме – проверять имена атрибутов, типы, структуру вложенности, наличие обязательных атрибутов и прочие параметры. 14. Spring Cloud Sleuth Реализует трассировку и логирование запросов для анализа проблем в распределенной системе. 15. Spring Cloud Contract Зонтичный проект для реализации подхода Consumer Driven Contracts. Пока содержит один подпроект:
16. Spring Cloud Cluster Компонент для встраивания в распределенную систему кластерных функций: выбор лидера, хранение состояния кластера, глобальные блокировки, одноразовые токены. Spring Session 17. Spring Session Core Компонент для межсервисного обмена данными об аутентификации и другими атрибутами HTTP сессии. Поддерживает несколько сессий в одном браузере и отправку сессий в заголовке. Репозитории Session Надстройки к «Spring Session Core» для хранения атрибутов сессий в БД. 18. Spring Session Data Redis Стандартный и реактивный репозитории сессий для Redis. 19. Spring Session MongoDB Репозиторий сессий для MongoDB. 20. Spring Session JDBC Репозиторий сессий для JDBC. 21. Spring Session Hazelcast Репозиторий сессий для Hazelcast. Hazelcast – облегченный In-Memory Data Grid. В нем отсутствует функционал распределенных вычислений. Этот функционал вынесен в отдельный модуль Hazelcast Jet. 22. Spring Session for Apache Geode Репозиторий сессий для Apache Geode. Apache Geode – полнофункциональный In-Memory Data Grid. Инфраструктурные сервисы, интегрированные в облачные платформы (только клиенты подключения) 23. Spring Cloud Alibaba В проект включены два типа компонентов:
Подробнее: Инфраструктурные сервисы: 23.1. Nacos Config – сервис с ролью Config Server; 23.2. Nacos Discovery – сервис с ролью Service Discovery; 23.3. Sentinel – сервис с ролью Circuit Breaker; 23.4. Dubbo – RPC фреймворк для взаимодействия сервисов по протоколам: Dubbo, RMI, Hessian, HTTP, Web Service, Thrift, Memcached, Redis. 23.5. RocketMQ Binder – клиент интеграции с RocketMQ. Клиенты для коммерческих сервисов в облаке Alibaba: 23.6. Cloud ANS (Application Naming Service) – Service Discovery; 23.7. Cloud ACM (Application Configuration Management) – Config Server; 23.8. Cloud OSS (Object Storage Service) – хранилище данных; 23.9. Cloud SchedulerX – планировщик заданий; 23.10. Cloud SMS – отправка и прием SMS. 24. Spring Cloud Kubernetes Клиенты подключения Spring приложений к инфраструктурным сервисам, интегрированным в Kubernetes. Не являются обязательными для развертывания приложения Spring Boot в Kubernetes. Подробнее: Роль LoadBalancer: 24.1 LoadBalancer for Kubernetes – клиент для использования Load Balancer встроенного в Kubernetes. Роль Config Server: 24.2 Kubernetes PropertySource – реализация роли Config Server на основе ConfigMap и PropertySource. Роль Service Discovery: 24.5 DiscoveryClient for Kubernetes – клиент для использования Service Discovery встроенного в Kubernetes. Интеграция с Spring Boot Actuator: 24.7 Pod Health Indicator – передает информацию о работоспособности сервисов в Spring Boot Actuator. Интеграция с Istilo: Istilo – одна из реализаций концепции Service Mesh. 24.9 Kubernetes native service discovery – клиент для передачи данных в Istilo из Service Discovery, встроенного в Kubernetes. Прочее: 24.11 Leader Election – API выбора лидера Spring Integration с использованием Kubernetes ConfigMap. 25. Spring Cloud for Amazon Web Services Клиенты подключения Spring приложений к инфраструктурным сервисам в AWS. Подробнее: 25.1 Spring Cloud AWS Core – клиент для базовой настройки безопасности и конфигурации через «Amazon EC2» и «AWS CloudFormation». 25.2 Spring Cloud AWS Context – клиент для сервисов:
25.3 Spring Cloud AWS JDBC – клиент для автоматического поиска и настройка источника данных в «Amazon RDS» (Relational Database Service). 25.4 Spring Cloud AWS Messaging – клиент для обмена сообщениями через:
25.5 Spring Cloud AWS Parameter Store Configuration – клиент для использования в роли Config Server, сервиса «Amazon SMPS» (Systems Manager Parameter Store). 25.6 Spring Cloud AWS Secrets Manager Configuration – клиент для использования в роли Config Server, сервиса «Amazon Secrets Manager». 26. Spring Cloud Azure Клиенты подключения приложений Spring к инфраструктурным сервисам в Microsoft Azure. Клиентов много, они представлены в виде maven зависимостей и не выделены в именованные компоненты. Maven зависимости могут иметь несколько вариантов использования. Документация к «Spring Cloud Azure» достаточно качественная, чтобы изучать возможности проекта непосредственно по ней, как минимум по составу глав документации. Прим. Одной из причин появления этого материала была предельно некачественная документация по большинству компонентов Spring. Кроме того, в облачной платформе Microsoft Azure есть сервис «Azure Spring Apps», именуемый в Spring-документации «Azure Spring Cloud». Сервис создан и поддерживается командой проекта «Spring Cloud Azure» и рекомендован к использованию по умолчанию. 27. Spring Cloud GCP Клиенты подключения приложений Spring к инфраструктурным сервисам в Google Cloud Platform. Клиентов много, они представлены в виде maven зависимостей и не выделены в именованные компоненты. Maven зависимости могут иметь несколько вариантов использования. Документация к «Spring Cloud GCP» достаточно качественная, чтобы изучать возможности проекта непосредственно по ней, как минимум по составу глав документации. 28. Spring Cloud for Cloud Foundry Реализует три maven зависимости:
29. Spring CredHub Клиент интеграции с CredHub. 30. Spring Vault Клиент интеграции с HashiCorp Vault. 31. Spring Cloud Connectors (развитие планируется в рамках другого проекта) Компонент для автоматического подключения к службам в облаке. Поддерживает облака: Cloud Foundry и Heroku. Для других облачных платформ, имеет 7 community-версий. Проект в статусе поддержки без развития, – планируются обновления безопасности, но не функционала. Развитие функционала планируется в рамках нового проекта Java CFEnv. Администрирование приложений в облачных платформах 32. Spring Cloud CLI Приложение командной строки под Linux, Mac и Windows для развертывания, запуска и автонастройки микросервисов скриптами YAML и Groovy и командами CLI. 33. Spring Cloud Skipper Компонент для обнаружения Spring приложений в облачных платформах, их обновления и отката между разными версиями без необходимости повторно собирать приложения из исходного кода. Может использоваться в CI/CD как версионный «единый источник достоверной информации». Разрабатывался для «Spring Cloud Data Flow», но может использоваться для других Cloud приложений. Поддерживает платформы: Local, Cloud Foundry и Kubernetes. 34. Spring Cloud Pipelines (устарел) Клиент интеграции с CI/CD системами Jenkins и Concourse. Сервисы администрирования с ролью Open Service Broker Open Service Broker – сервис с REST API с ограниченной функциональностью по администрированию микросервисов в облачной платформе. Реализует: Ограниченность возможностей гарантирует безопасность передачи клиентам облачной платформы описанных функций администрирования. Это дает ряд преимуществ:
35. Spring Cloud App Broker Готовый сервис, реализующий API Open Service Broker. 36. Spring Cloud Open Service Broker Набор зависимостей для разработки сервиса, реализующего API Open Service Broker (OSB). Требует ручного программирования логики OSB (пример). Позволяет расширить функциональность брокера, если у вас частное облако. Поддерживает все облачные платформы, реализующие клиент для OSB: Cloud Foundry, Kubernetes и OpenShift и т.п. 37. Spring Cloud – Cloud Foundry Service Broker (устарел) Набор зависимостей для разработки сервиса, реализующего API Open Service Broker (OSB). Микро-фреймворки для разработки микросервисов 38. Spring Cloud Function Микрофреймворк для разработки переносимых между облаками сервисов, с автогенерацией REST (опционально RSocket) интерфейсов. Позволяет сосредоточиться на бизнес-логике. Для этого реализован механизм автоматического оборачивания REST-интерфейсами бинов, реализующих функциональные интерфейсы Supplier, Function или Consumer. Для этого, бины должны быть созданы одним из двух способов:
Поддерживает реактивный, императивный и комбинированный стили программирования. Может запускать сервисы – «Spring Cloud Stream». Поддерживает платформы: Local, AWS Lambda, Microsoft Azure, Google Cloud Functions, Apache OpenWhisk. 39. Spring Cloud Stream Микрофреймворк для разработки переносимых между облаками сервисов, с автогенерацией MQ-интерфейсов (Kafka или AMQP). Допускает встраивание в конвейеры средствами компонента «Spring Cloud Data Flow». Позволяет сосредоточиться на бизнес-логике. Для этого реализован механизм автоматического оборачивания MQ-интерфейсами бинов, реализующих функциональные интерфейсы Supplier, Function или Consumer. Stream сервисы могут быть трех типов:
Конвейеры данных – представляют множество Stream сервисов, выстроенных в цепочку и связанные MQ-интерфейсами для пошагового преобразования данных. Конвейер может иметь один Source-сервис, произвольное количество Processor-сервисов и один Sink-сервис. Может вызываться из сервисов – Spring Cloud Function. Поддерживает MQ брокеры для взаимодействия в рамках конвейера: RabbitMQ, Apache Kafka, Kafka Streams, RocketMQ, Amazon Kinesis, AWS SQS, AWS SNS, Azure Event Hubs, Azure Service Bus, Google PubSub, Solace PubSub+. 40. Spring Cloud Stream Applications Коллекция из 57 готовых сервисов Spring Cloud Stream (список), с поддержкой около 30 протоколов взаимодействия с внешними ресурсами. Кроме базовой функциональности, проект содержит сервисы обработки видео:
41. Spring Cloud Task Микрофреймворк для разработки переносимых между облаками краткосрочных сервисов. Жизненный цикл сервиса состоит из старта, выполнения задачи и завершения работы. Сервис сам опрашивает источник данных (БД, CSV, XML и т.п.) и сохраняет результат в этот или другой источник. Может запускаться:
Поддерживает платформы: Local, Spring Cloud Data Flow (разворачивает сервисы в Cloud Foundry и Kubernetes), Cloud Foundry. 42. Spring Cloud Task App Starters Коллекция из двух готовых сервисов Spring Cloud Task:
Оркестровка конвейеров из Stream и Task сервисов 43. Spring Cloud Data Flow Инструментарий для развертывания конвейеров данных из сервисов Spring Cloud Stream и Spring Cloud Task, на платформах Cloud Foundry, Kubernetes или локально (пример). Поддерживает проектирование и развертывание конвейеров тремя способами:
Графический интерфейс: «Spring Cloud Data Flow» и «Spring Cloud Skipper» проектировались для совместного использования: 44. Spring Flo Графический интерфейс, встроенный в «Spring Cloud Data Flow», для создания и мониторинга конвейеров данных. Заключение Это была заключительная часть обзора. Рассмотрены 85 проектов, включающие 156 компонентов. Поправки и уточнения приветствуются. Источник: m.vk.com Комментарии: |
|