Spring Cloud
Spring Boot
освобождает нас от громоздких конфигурационных файлов, аSpring Cloud
, он предоставляет полный набор микросервисных решений, что значительно снижает порог для разработки микросервисов и снижает затраты на разработку.
Состав весеннего облака
Spring Cloud
Это не относится к какой-то конкретной структуре, на самом деле это комбинация ряда зрелых платформ, черезSpring Boot
Стиль инкапсуляции скрывает сложные принципы конфигурации и реализации и, наконец, оставляет набор инструментов для разработки распределенных систем, которые легко понять и развернуть для разработчиков.
Мы знаем, что при разработке микросервисов необходима следующая инфраструктура:
- Служба управления
- Диспетчер конфигурации
- шлюз
- Отказоустойчивость сервиса
- потребители услуг
- ПО промежуточного слоя сообщений
- Отслеживание распределенных услуг
- Безопасность
- Тестирование микросервисов
Ниже приведеныSpring Cloud
Принципиальная схема каркаса, входящего в систему:
Знакомство с основными компонентами
Регистрация и обнаружение службы
Регистрация и обнаружение службыSpring Cloud
Один из основных компонентов системы, все службы всей системы могут быть зарегистрированы в реестре, а затем объединены реестром для облегчения последующего горизонтального расширения и аварийного переключения.Spring Cloud
Существует множество способов реализации центра регистрации в системе (см. рисунок выше), которые будут представлены один за другим в последующих руководствах.
Центр конфигурации
С увеличением количества служб каждая служба также будет иметь несколько сред (среда разработки, тестовая среда, производственная среда и т. д.), и файлы конфигурации каждой среды будут разными, но многие из них могут быть общими.Да, если каждая служба сама управляет этими конфигурациями, это доставит много хлопот в обслуживании.На данный момент нам необходимо ввести центр конфигурации для унифицированного управления этими конфигурациями.Spring Cloud
при условииSpring Cloud Config
Для достижения этой задачи, но есть также лучшая реализация, предоставленная сообществом, такому как Ctrip.Apollo. Тем не менее, как уведомить конкретный сервис после обновления конфигурации еще одна проблема, такSpring Cloud
также обеспечиваетSpring Cloud Bus
компоненты для связи между службами.
потребители услуг
Поскольку это микросервисная архитектура, вызовы между сервисами должны быть неизбежны.Spring Cloud
при условииRibbon
Компонент, его можно использовать для совершения звонков между службами, и в то же время он также поддерживает балансировку нагрузки на боковую клиентскую нагрузку. Тем не менее, напрямую используюRibbon
Не очень удобно, т.Spring Cloud
на основеNetflix Feign
, и интегрируетRibbon
, у которого естьSpring Cloud OpenFeign
, который реализует декларативный клиент вызова службы, упрощая написание клиентов веб-службы.
Отказоустойчивость сервиса
В микросервисной архитектуре обычно есть несколько сервисов, вызывающих друг друга. Отказ некоторых базовых сервисов может привести к недоступности всей системы, что называется сервисной лавиной. Чтобы избежать этой ситуации, нам необходимо реализовать изоляцию сбоев и снижение качества обслуживания при сбое службы. Ввиду этой ситуации,Spring Cloud
использовалHystrix
Добиться отказоустойчивости сервиса.
шлюз
Шлюз предоставляет системе такие функции, как маршрутизация, аутентификация, мониторинг и балансировка нагрузки.Spring Cloud
Для этого предусмотрено два решения:Zuul
а такжеSpring Cloud Gateway
.
отслеживание услуг
В микросервисной архитектуре цепочка вызовов между сервисами будет становиться все более и более сложной по мере увеличения количества сервисов.Когда мы устраняем определенные проблемы и отслеживаем показатели связи между сервисами, отслеживание сервисов становится очень важным.Spring Cloud
Предоставленная реализация:Spring Cloud Sleuth
.
сервисный тест
Из-за особенностей микросервисной архитектуры каждый сервис может зависеть от других сервисов, и разные сервисы могут поддерживаться разными командами, поэтому, когда мы тестируем сервис, нам нужно развернуть все сервисы, от которых он зависит, стоимость очень высока. ; а если использовать только юнит-тестирование, то нужно имитировать много данных, а раз меняется интерфейс зависимого сервиса, то это невозможно воспринять только через юнит-тестирование. Итак, кто-то предложил CDC (Consumer-Driver Contracts), т.е.потребительский контрактспособ проверить.Spring Cloud Contract
этоCDC
реализация .
Эпилог
Эта статья кратко знакомитSpring Cloud
Состав, в следующей серии статей, будет основан на последней версии Spring Cloud.[Greenwich.SR2]), чтобы подробно описать каждый модуль.
【Следующий】статье я представлю реестр Eureka.