Как выбрать компоненты в последней версии SpringCloud2023?
Как выбрать компоненты в последней версии SpringCloud2023?

Предисловие

Developing distributed systems can be challenging. Complexity is moved from the application layer to the network layer and demands greater interaction between services. Making your code ‘cloud-native’ means dealing with 12-factor issues such as external configuration, statelessness, logging, and connecting to backing services. The Spring Cloud suite of projects contains many of the services you need to make your applications run in the cloud.

Разработка распределенных систем является сложной задачей. Сложность перемещается с уровня приложений на сетевой уровень и требует более тесного взаимодействия между отдельными сервисами. Разработка вашего кода как «облачного» означает решение 12-факторных проблем, таких как внешняя конфигурация, отсутствие состояния, ведение журналов и подключения к серверным службам. Пакет проектов Spring Cloud содержит множество сервисов, позволяющих запускать приложения в облачной среде.

Схема архитектуры

микросервисы Архитектура
микросервисы Архитектура
  1. Мультитерминальная адаптация, Интернет вещей, мобильные телефоны и компьютерные устройства получают доступ к услугам через шлюз.
  2. Центр конфигурации Gatewayuse получает конфигурацию,Через центр регистрации услуг Обнаружитьвызовмикросервисы。
  3. Распределенная трассировка выполняется во время работы службы.

Выбор компонентов

обнаружение службы

проходитьобнаружение Компонент службы мониторинга может отслеживать развертывание и работоспособность сервисов, а также реализовывать балансировку нагрузки на основе удаленного кодирования сервисов. вызов. Вот некоторые общие открытия службыинструмент:

  • Netflix Eureka: обслуживание прекращено, и использование больше не рекомендуется.
  • HashiCorp Консул: Обеспечивает мощное обнаружение. службыи Управление конфигурацией Функция。
  • Zookeeper: более низкая стоимость при переходе с Eureka и относительно простой функционал. рекомендовать
  • Nacos: он имеет полный набор функций, предоставляет пользовательский интерфейс (UI), им легко управлять и контролировать. рекомендовать

интерфейсный шлюз

Многосторонние вызовы и развертывание микросервисов могут привести к усложнению системы. Вызов нескольких служб через шлюз API может снизить сложность системы. Шлюз API может предоставлять такие функции, как безопасная обработка перехвата, передача информации о маршрутизации, скрытые сервисы и балансировка нагрузки.

При выборе шлюза API можно выбрать одну из нескольких распространенных платформ:

  • Spring Cloud Gateway: это шлюз API, основанный на экосистеме Spring Cloud, который предоставляет богатые функции, такие как маршрутизация, фильтры, балансировка нагрузки и т. д. Spring Cloud Gateway обладает хорошей масштабируемостью и гибкостью. рекомендовать
  • Zuul: это ранняя платформа шлюза API, разработанная Netflix. Однако важно отметить, что Zuul прекратил поддержку и больше не рекомендуется.

Помимо Spring Cloud Gateway и Zuul, существуют и другие платформы API-шлюзов, такие как Kong, Tyk, APISIX и т. д.

Конфигурация облачного сервиса

В микросервисах существует множество ограничений на встраивание конфигурации в часть приложения. Например, обновления в реальном времени невозможны, обновления конфигурации требуют перезапуска, обслуживание версий недоступно и доступна поддержка нескольких сред. Центр конфигурации в основном решает эти проблемы.

  • Конфигурация Spring Cloud, распределенное развертывание, центр регистрации поддержки, контроль версий и т. д. рекомендую.
  • Nacos предоставляет визуальный интерфейс пользовательского интерфейса. Он также поддерживает распределенное развертывание, центр регистрации, контроль версий и т. д. рекомендую.

предохранитель

Когда в распределенной системе возникает ненадежность сервиса,предохранительможет помочь решить эту проблему。предохранитель Устройство может использовать ограничение тока、Понизить версию、Такие механизмы, как повторные попытки, используются для борьбы с ненадежными услугами.

  • Resilience4J: это легкий защитный каркас.,Обеспечивает ограничение тока、Понизить версиюи Повторите попытку и подождите Функция。Resilience4J Простота в использовании и настройке. рекомендовать
  • Sentinel: Это мощный предохранитель и система ограничения тока.,Он поддерживает несколько стратегий ограничения тока.,И обеспечивает богатые функции мониторинга и индикатора. уйти
  • Hystrix:это классикапредохранительсерверная структура,Зависит от Netflix разработка. Хайстрикс Предусмотрены такие функции, как автоматический выключатель, понижение версии и кэширование.

Отслеживание услуг

Отладка распределенных приложений действительно является сложной и трудоемкой задачей. При возникновении проблемы могут быть задействованы несколько независимых микросервисов. Сыщик Предоставляет серию интегрированных решений для сервисного отслеживания звонков, делая Отслеживание услуг более предсказуем и повторяем.

Следует отметить, что Sleuth прекратил поддержку Spring Boot 3, и его последующая замена — Micrometer Tracing. Micrometer Tracing предоставляет аналогичные интерфейсы и функциональные возможности.

  • Micrometer Tracing: Являясь преемником Sleuth, Micrometer Tracing предоставляет более мощные и гибкие возможности отслеживания. рекомендовать
  • Зипкин: Это распределенная система отслеживания с открытым исходным кодом, которая может собирать и визуализировать взаимосвязи вызовов между службами.
  • Skywalking: это многофункциональная распределенная система отслеживания и мониторинга, обеспечивающая комплексные возможности мониторинга и анализа. рекомендовать

Тестовая интеграция

Если вы хотите иметь надежный, заслуживающий доверия и стабильный API, вам нужны модульные тесты. Контрактное тестирование — это метод, обычно используемый высокопроизводительными командами, чтобы гарантировать правильную работу кода или API путем формализации содержимого API и создания соответствующих тестов. Следует отметить, что Spring Cloud Contract прекратил обслуживание. При выборе среды тестирования рекомендуется использовать JUnit 5 (Spring Boot Test). JUnit 5 — это широко используемая среда модульного тестирования, которая хорошо интегрируется со Spring Boot, что упрощает написание и выполнение тестов.

  • Контракт Spring Cloud прекратил обслуживание
  • Junit5 (тест загрузки Spring) может писать тестовые примеры для API, чтобы проверить, соответствуют ли результаты ответа API ожиданиям. Моделируя запросы и ответы, API можно полностью протестировать, включая проверку параметров, коды состояния ответа, возврат данных и т. д. рекомендовать

удаленный вызов

В микросервисной архитектуре существует множество независимых одиночных сервисов, увеличивается частота вызовов между сервисами, а зависимости усложняются. Чтобы решить эти проблемы, нам нужна общая структура для обработки вызовов между службами и решения ряда проблем, таких как балансировка нагрузки, механизмы безопасности и ухудшение качества обслуживания.

OpenFeign — очень популярная и мощная платформа для звонков между микросервисами. Он обеспечивает краткую и простую в использовании API позволяет разработчикам легко вызывать другие службы. OpenFeign Поддержка балансировки нагрузки、предохранительустройство、Механизм повторной попытки и т. д.Функция,для повышения надежности системыиотказоустойчивость。

Используя OpenFeign, вы можете определять интерфейсы служб и методы вызова с помощью аннотаций или конфигураций, а затем платформа автоматически будет выполнять обнаружение служб, вызовы и обработку исключений. Он также поддерживает динамическую маршрутизацию и передачу параметров, что упрощает связь между службами.

OpenFeign хорошо интегрируется с другими платформами микросервисов (такими как Spring Cloud) и может использоваться с центрами регистрации (такими как Eureka) для автоматической регистрации и обнаружения сервисов.

  • OpenFeign, рекомендуется

Документация интерфейса

по единой Документации Управление интерфейсом может сократить моделирование интерфейса, тестирование интерфейса, Документация вывод интерфейса и другие сопутствующие работы.

  • Springdoc-openapi, рекомендуется, поддерживает экологию Springboot3, поддерживает openapi3
  • Springfox (ранее Swagger-springmvc), не рекомендуется, не поддерживает openapi3.

Распределенные транзакции

Распределенные Трансляция относится к механизму в распределенной системе, где операции между несколькими узлами или несколькими базами данных должны поддерживать согласованность и атомарность. В традиционных одноузловых транзакциях транзакции выполняются в одной базе данных, а в Распределенных При передаче транзакции могут включать операции между несколькими базами данных или несколькими службами.

Распределенные транзакции Основная задача – координацияи Хранить данныепоследовательность。Зависит от Использование нескольких узлов или нескольких баз данных,Выполнение транзакций столкнется со следующими проблемами:

  • Поддержание свойств ACID: Распределенные транзакции должны удовлетворять требованиям ACID (атомарность).、последовательность、Изоляция、упорство)свойство,То есть либо все операции завершаются успешно,Или оба потерпят неудачу. Для этого необходимо обеспечить синхронизацию операций на разных узлах или базах данных.,и возможность отката в случае сбоя.
  • Управление параллелизмом: из-за распределённых обработка может включать в себя несколько одновременно выполняемых операций,Необходимость контроля одновременного доступа,чтобы избежать повреждения данныхпоследовательность。Общие методы управления параллелизмом включают механизмы блокировки.、Ожидание многоверсионного управления параллелизмом (MVCC).
  • Обработка ошибок. В распределенной среде каждый узел или база данных может выйти из строя или сетевая связь может быть прервана, что может привести к прерыванию транзакции или несогласованности данных. Следовательно, необходимы эффективные механизмы обработки ошибок, такие как восстановление после сбоев, механизмы повторных попыток и т. д.

Для решения этих проблем существуют различные Распределенные Были предложены протоколы координации передачи, в том числе двухфазная фиксация (2PC), трехфазная фиксация (3PC), Paxos, Raft. Эти протоколы гарантируют, что Распределение гарантировано путем координации поведения узлов-участников. согласованность и атомарность транзакций. Кроме того, существуют некоторые Распределенные Альтернативы обработке, такие как итоговая согласованность на основе очередей сообщений, компенсация задержки транзакций. Эти решения в определенной степени снижают стоимость Распределенных. сложность передачи и накладные расходы на производительность, но также приносит некоторые другие ограничения и проблемы.

Распределенные транзакцииподдерживается в распределенной системепоследовательностьиважный механизм атомарности,Необходимо принять соответствующие протоколы координации.ирешения для решения данныхпоследовательностьи Проблемы управления параллелизмом。

  • Рекомендуется Seata — проект с открытым исходным кодом, инициированный командой промежуточного программного обеспечения Alibaba. Fescar, позже переименованный в Seata, представляет собой проект с открытым исходным кодом Распределенные. рамка передачи. Решайте микросервисы эффективным и неинвазивным способом для бизнеса Распределенные, с которыми сталкиваются в деловых ситуациях Вопрос о передаче, в настоящее время он обеспечивает режим AT (т.е. 2PC) и режим TCC Распределенные. Трансфертное решение.

Компонент в порядке

Благодаря выбору компонентов Spring Cloud Alibaba и Spring Cloud окончательная версия Spring Cloud 2023 выглядит следующим образом:

  • Центр регистрации (Spring Cloud Zookeeper): отвечает за регистрацию и обнаружение служб.
  • Шлюз (Spring Cloud Gateway): служит точкой входа для внешних запросов для реализации маршрутизации и балансировки нагрузки.
  • Конфигурация облачного сервиса(Spring Cloud Config): информация о конфигурации, используемая для управления службами.
  • предохранитель(Sentinel):поставлятьпредохранительустройство Функция,Внедрить текущее ограничение услуги Понизить версию。
  • Отслеживание услуг(Micrometer Трассировка): используется для отслеживания и мониторинга производительности службы и вызовов.
  • Тестовая интеграция(JUnit 5 + Spring Boot Тест): используется для написания и выполнения модульных тестов.
  • удаленный вызов (OpenFeign): для удаленного между сервисами вызов。
  • Документация интерфейса(springdoc-openapi + openapi3): используется для генерации и управления. API документация.
  • Распределенные Трансляция (Seata): используется для обработки транзакций между несколькими службами.

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

Об авторе

Восемь лет исследований и практики от передового Full-Stack программиста Nine, который продолжает работать над итерациями.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose