Весеннее облако в комплектеФреймворк для управления микросервисами, который учитывает почти все аспекты управления микросервисами.
Этот обмен в основном отвечает на эти два вопроса:
- Что делает Spring Cloud в архитектуре микросервисов?
- Как эти функции, предоставляемые Spring Cloud, облегчают архитектуру микросервисов?
Давайте кратко рассмотрим развитие нашей предыдущей архитектуры Интернета:
История традиционной архитектуры
Монолитная архитектура
Монолитная архитектура более распространена на малых и микропредприятиях. Типичным представителем является то, что приложение, база данных и веб-контейнер могут работать. Например, разработанная нами облачная коллекция программного обеспечения с открытым исходным кодом представляет собой стандартную монолитную архитектуру.
Монолитная архитектура может быть выбрана в двух случаях:
- На ранней стадии развития предприятия, чтобы обеспечить быстрый запуск, это решение является относительно простым и гибким.
- На традиционных предприятиях вертикальная степень выше, а давление доступа меньше. В этом режиме технические требования ниже, что удобно для разработчиков всех уровней, а также может удовлетворить потребности клиентов.
Ниже приведена архитектурная схема монолитной архитектуры:
В монолитной архитектуре выбор технологии очень гибкий, приоритет отдается удовлетворению требований быстрого запуска, а также способствует быстрому выходу на рынок.
вертикальная архитектура
После разработки монолитной структуры в течение определенного периода времени бизнес-модель компании была признана, и объем транзакций постепенно увеличивался.В это время некоторые предприятия разделят первоначальный бизнес, чтобы справиться с большим трафиком.Например , : Внутренняя система, интерфейсная система, система транзакций и т. д.
На этом этапе система часто делится на разные уровни, и каждый уровень имеет соответствующие обязанности: уровень пользовательского интерфейса отвечает за взаимодействие с пользователями, уровень бизнес-логики отвечает за конкретные бизнес-функции, а уровень базы данных отвечает за обмен данными. и хранение с верхним слоем.
Ниже представлена архитектурная схема вертикальной архитектуры:
На данном этапе ключевой технологией проекта является SSM (Spring + SpringMVC + MyBatis), SpringMVC отвечает за логическое управление веб-слоем, Spring отвечает за управление бинами на бизнес-уровне, а MyBatis отвечает за инкапсуляцию базы данных. операции и сохраняющиеся данные.
сервисная архитектура
Если компания будет расти дальше, вертикальных подсистем будет все больше и больше, а вызывающая связь между системами будет увеличиваться в геометрической прогрессии.
В этом контексте многие компании рассмотрят услугуSOAизменять.SOA (сервисно-ориентированная архитектура) означает сервис-ориентированную архитектуру, которая делит приложение на разные модули в соответствии с разными обязанностями, и разные модули взаимодействуют напрямую через определенные протоколы и интерфейсы..
Таким образом, вся система делится на множество однокомпонентных служб для выполнения запроса.Когда трафик слишком велик, он поддерживается за счет горизонтального расширения соответствующих компонентов, и все компоненты удовлетворяют общие потребности бизнеса за счет взаимодействия.
Преимущество SOA как услуги заключается в том, что она может развертывать, комбинировать и использовать слабосвязанные крупномодульные компоненты приложения распределенным образом по сети в соответствии с требованиями.
Сервисный уровень является основой SOA и может напрямую вызываться приложениями, тем самым эффективно контролируя искусственные зависимости в системе, взаимодействующей с программными агентами.
Сервис-ориентированная архитектура представляет собой набор слабосвязанных архитектур.Принцип разделения сервисов заключается в высокой связности внутри сервисов и слабом связывании между сервисами.
Ниже представлена схема архитектуры службы:
На этом этапе вы можете использовать веб-сервисы илиDubboслужить управлению.
Разница между SOA и микросервисной архитектурой
Более:Объяснение микросервисной архитектуры: это легко понять.
Сервис-ориентированная архитектура уже может удовлетворить потребности большинства предприятий, так зачем нам изучать микросервисы?
Давайте сначала поговорим об их различиях, а именно:
- Микросервисная архитектура подчеркивает, что бизнес-система должна быть полностью разделена на компоненты и обслуживаться.Компонент — это продукт, который может предоставлять услуги независимо.
- Микросервисы больше не подчеркивают более тяжелые аспекты традиционной архитектуры SOA.ESBСервисная шина предприятия.
- Микросервисы подчеркивают, что у каждого микросервиса есть собственное независимое рабочее пространство, включая ресурсы базы данных..
- Сама микросервисная архитектура исходит из идеи Интернета, поэтому сервисы, выпущенные компонентами, делают упор на использование HTTP Rest API.
- Детализация сегментации микросервисов будет меньше.
Суммировать:Архитектура микрослужб является расширением идеи архитектуры SOA, которая подчеркивает независимость отдельных служб и имеет меньшую степень детализации разделения..
Зачем рассматривать Spring Cloud
Есть несколько причин рассмотреть Spring Cloud:
- Spring Cloud исходит от Spring, и качество, стабильность и непрерывность могут быть гарантированы.
- Spring Cloud естественно поддерживает Spring Boot, что более удобно для бизнес-посадки.
- Spring Cloud работает очень быстро.
- Spring Cloud — наиболее подходящая среда для микросервисов в области Java.
- По сравнению с другими фреймворками Spring Cloud имеет наибольшую поддержку окружающей среды микросервисов.
- Для МСП порог для использования ниже.
- Spring Cloud — лучшее решение для микросервисной архитектуры.
Особенности весеннего облака
Ниже приведены основные функции Spring Cloud:
- Распределенная/версионная конфигурация
- Регистрация и обнаружение службы
- маршрутизация
- звонки между службами
- балансировки нагрузки
- выключатель
- Распределенный обмен сообщениями
Эти функции выполняются различными компонентами, играет важную роль в эволюции архитектуры, давайте посмотрим.
Микросервисная архитектура
Первая проблема, которую решает Spring Cloud, — это развязка между сервисами. Когда многие компании быстро развиваются, их сервисные компоненты будут соответственно увеличиваться.
Между службами существует сложная взаимная связь вызова.Часто служба A вызывает службу B, а служба B вызывает службу C и службу D... С увеличением числа обслуживаемых компонентов связь вызова между службами растет экспоненциально. показано на следующем рисунке:
⭐ Это самая простая ситуация, которая заключается в том, чтобы дернуть за один волос и пошевелить всем телом,Часто бывает так, что другие службы не получают уведомления из-за обновления службы., что приводит к частым трагедиям после выхода в интернет.
В это время должно осуществляться управление сервисами, а прямая зависимость между сервисами должна трансформироваться в зависимость сервисов от сервисного центра. Основные компоненты Spring CloudEurekaможет решить такие проблемы.
Eureka
Eureka должна устранить эффект снежного кома, вызванный простоем службы, который влияет на ее вызывающую службу, и отделить службы от служб.
Eureka — это продукт с открытым исходным кодом Netflix, который обеспечивает регистрацию и обнаружение сервисов, а также полную реализацию реестра сервисов и сервисного обнаружения. Это также один из самых важных и основных компонентов системы Spring Cloud.
⭐Проще говоря, Эврика - это сервисный центр.Все услуги, которые могут быть предоставлены, регистрируются на него для управления.Когда это нужно другим абонентам, идите в регистрационный центр, чтобы получить его, а затем звоните ему, избегая прямой связи между услугами Вызывается для облегчения последующего горизонтального расширения, аварийного переключения и т. д. Как показано ниже:
Конечно, выход из строя такого важного компонента, как сервисный центр, повлияет на все сервисы, поэтому для поддержания высокой доступности необходимо построить кластер Eureka, рекомендуется иметь не менее двух в продакшене.
Поскольку трафик системы продолжает увеличиваться, сервис необходимо расширять в зависимости от ситуации.Eureka уже предоставляет функцию балансировки нагрузки, и нужно только добавить соответствующий экземпляр сервера.
Итак, что мне делать, если экземпляр зависает во время работы системы? Контент Eureka имеетМеханизм обнаружения сердцебиения, если экземпляр не выходит на связь в течение указанного времени, он будет автоматически устранен, что предотвращает зависание экземпляра и влияние на службу.
Таким образом, использование Eureka автоматическиРегистрационный центр,балансировки нагрузки,отказоустойчивостьфункция.
Hystrix
В микросервисной архитектуре обычно имеется несколько вызовов сервисного уровня. Сбой основных сервисов может привести к каскадным сбоям, что приведет к недоступности всей системы. Это явление называетсясервисный лавинный эффект.
Эффект лавины услуг — это процесс, при котором недоступность «поставщиков услуг» приводит к недоступности «потребителей услуг» и постепенно увеличивает недоступность.
Как показано на следующем рисунке: A — поставщик услуг, B — потребитель услуг A, а C и D — потребители услуг B. Недоступность A вызывает недоступность B, и когда недоступность снежным комом нарастает на C и D, формируется эффект лавины.
⭐В этом случае необходимо, чтобы вся сервисная организация имела функцию локализации неисправностей, чтобы выход из строя определенной службы не влиял на общую ситуацию. Компоненты Hystrix играют эту роль в Spring Cloud.
Hystrix немедленно уведомит вызывающего абонента о сбое вызова, когда служба вызывается непрерывно N раз и не отвечает, чтобы предотвратить постоянное ожидание вызывающего абонента и влияние на обслуживание в целом. Hystrix будет снова проверять эту службу через определенные промежутки времени и продолжит предоставлять услуги, если служба будет восстановлена.
Панель управления Hystrix, турбина
⭐При возникновении предохранителя необходимо быстро реагировать, чтобы решить проблему и избежать дальнейшего распространения неисправности, поэтому контроль предохранителя становится очень важным.
взорван мониторингТеперь есть два инструмента:Hystrix-dashboardиTurbine.
Hystrix-dashboard — это инструмент для мониторинга Hystrix в режиме реального времени. С помощью Hystrix Dashboard мы можем интуитивно видеть время ответа на запрос, процент успешных запросов и другие данные каждой команды Hystrix.
⭐ Но если вы используете только Hystrix Dashboard, вы можете видеть служебную информацию только в одном приложении, чего явно недостаточно.
⭐Нам нужен инструмент, который позволит нам агрегировать данные из нескольких сервисов в системе и отображать их на Hystrix Dashboard, этим инструментом является Turbine.
Эффект мониторинга заключается в следующем:
Spring Cloud Config
Поскольку количество микрослужб продолжает увеличиваться, каждая микрослужба имеет свой собственный соответствующий файл конфигурации. В процессе разработки есть тестовые среды, среды UAT и производственные среды, поэтому каждому микросервису соответствует как минимум три файла конфигурации для разных сред.
⭐С таким количеством файлов конфигурации, если вам нужно изменить информацию о конфигурации общедоступной службы, такой как кеш, база данных и т. д., это неизбежно вызовет путаницу.В настоящее время вам необходимо представить еще один компонент Spring Cloud: Spring Облачная конфигурация.
Spring Cloud Config — это решение для управления конфигурацией распределенных систем.Он состоит из двух частей, клиентской и серверной.,Сервер обеспечивает хранение конфигурационных файлов и предоставляет содержимое конфигурационных файлов в виде интерфейсов, клиент получает данные через интерфейс и инициализирует собственное приложение на основе этих данных.
Конкретная реализация заключается в том, что серверная сторона будет обслуживать все файлы конфигурации, а экземпляр службы файла конфигурации должен перейти на сервер конфигурации для получения соответствующих данных. Организуйте все файлы конфигурации единообразно, чтобы избежать фрагментации файлов конфигурации.
Если файл конфигурации будет изменен во время работы службы, служба не получит самую свежую информацию о конфигурации.Для решения этой проблемы необходимо ввестиRefresh
.Он может перезагружать файлы конфигурации во время выполнения службы..
Когда все файлы конфигурации хранятся в центре конфигурации, центр конфигурации становится очень важным компонентом.
Если возникнет проблема с конфигурационным центром, это приведет к катастрофическим последствиям, поэтому рекомендуется кластеризовать конфигурационный центр в производственной среде для обеспечения высокой доступности конфигурационного центра.
Spring Cloud Bus
⭐Хотя вышеописанное решение Refresh может решить проблему перегрузки конфигурационной информации при работе одного микросервиса, в реальном продакшене может быть более N сервисов, которым необходимо обновить конфигурацию. Если вы полагаетесь на ручное обновление каждый раз, это будет огромная рабочая нагрузка.В настоящее время Spring Cloud предлагает другое решение: Spring Cloud Bus.
Spring Cloud Bus соединяет распределенные узлы через облегченный брокер сообщений. Это используется для широковещательной рассылки изменений состояния (например, изменений конфигурации) или других команд сообщений.
Основная идея Spring Cloud Bus заключается в расширении приложений Spring Boot с помощью распределенных стартеров, которые также можно использовать для установления каналов связи между одним или несколькими приложениями. В настоящее время единственный способ сделать это - использоватьAMQPБрокер сообщений действует как канал.
Spring Cloud Bus — это легкий коммуникационный компонент, который также можно использовать в других подобных сценариях.С помощью Spring Cloud Bus, когда мы меняем файл конфигурации и отправляем его в репозиторий, он автоматически запускает обновление соответствующего экземпляра., конкретный рабочий процесс выглядит следующим образом:
API Gateway Service Gateway и Spring Cloud Zuul Routing
⭐В режиме микросервисной архитектуры количество экземпляров серверной службы обычно является динамическим, и клиенту сложно найти информацию об адресе доступа динамически изменяемого экземпляра службы..
Таким образом, чтобы упростить логику вызовов переднего плана в проектах на основе микросервисов, API Gateway обычно представляют как упрощенный шлюз. Сервисы.
⭐Технология, которая поддерживает посадку API Gateway в системе Spring Cloud, — это Zuul.. Маршрутизация Spring Cloud Zuul — неотъемлемая часть микросервисной архитектуры, предоставляющая пограничные сервисы для динамической маршрутизации, мониторинга, отказоустойчивости, безопасности и многого другого.
Zuul — это маршрутизация на основе JVM и балансировщик нагрузки на стороне сервера от Netflix.
Его конкретная роль заключается в обслуживании переадресации, получении и переадресации всех внутренних и внешних клиентских вызовов. Использование Zuul может использоваться как единая запись доступа к ресурсам, и в то же время на шлюзе могут выполняться некоторые аналогичные функции.
Отслеживание ссылок: Spring Cloud Sleuth, Zipkin
По мере увеличения количества услуг анализ цепочки вызовов будет становиться все более и более сложным, например, связь вызовов между сервисами, цепочка вызовов, соответствующая запросу, и время, затрачиваемое между вызовами, станут проблемой.
В реальном использовании нам необходимо отслеживать различные показатели связи между службами и службами, и эти данные будут для нас основной основой для улучшения архитектуры системы.
Поэтому отслеживание распределенных ссылок становится очень важным, и Spring Cloud также предоставляет конкретные решения:Spring Cloud SleuthиZipkin.
Spring Cloud SleuthОбеспечивает отслеживание ссылок для вызовов между службами. С помощью Sleuth вы можете четко понять, через какие сервисы прошел запрос на обслуживание и сколько времени занимает обработка каждого сервиса. Это позволяет нам легко разобраться в связи вызовов между микросервисами.
ZipkinЭто проект Twitter с открытым исходным кодом, который позволяет разработчикам собирать данные мониторинга различных сервисов Twitter и предоставлять интерфейсы запросов.
Суммировать
Давайте посмотрим, как различные компоненты Spring Cloud используются вместе в целом.
Как видно из рисунка выше, различные компоненты Spring Cloud взаимодействуют друг с другом и взаимодействуют для поддержки полного набора архитектуры микросервисов:
- EurekaОтвечает за регистрацию и обнаружение услуг, хорошо подключенные услуги.
- HystrixОтвечает за мониторинг вызова между службами и выполнение защиты прерывателя цепи после нескольких сбоев подряд.
- Hystrix dashboard, TurbineОтвечает за мониторинг состояния предохранителей Hystrix и предоставление графического дисплея.
- Spring Cloud ConfigПредоставляет единую службу центра конфигурации.
- При изменении файла конфигурацииSpring Cloud BusОтвечает за уведомление каждой службы о получении последней информации о конфигурации.
- Для всех внешних запросов и сервисов мы передаемZuulДля пересылки играйте роль API-шлюза.
- Наконец, мы используемSleuth + ZipkinЗапишите все данные запроса для нашего последующего анализа.
С самого начала своего проектирования Spring Cloud учитывал функции, необходимые для развития архитектуры большинства интернет-компаний, такие как регистрация обнаружения сервисов, центр конфигурации, шина сообщений, балансировка нагрузки, автоматический выключатель, мониторинг данных и т. д.
Эти функцииПодключаемыйПредставленная в виде , нашей системной архитектуре удобно выбирать необходимые компоненты для интеграции в процессе эволюции, чтобы процесс эволюции архитектуры был более плавным и плавным.
Микросервисная архитектура является тенденцией Spring Cloud предоставляет стандартизированное комплексное техническое решение, которое может быть сравнимо с рождением текущей спецификации Servlet, эффективно повышая технический уровень серверных программных систем.
/ КОНЕЦ / Не ограничивайте свое воображение будущим своими нынешними способностями!