Контратака лапшичной мрази: Тридцать три вопроса о микросервисах, 20 000 слов подробных пояснений с картинками и текстами! Собирайте скорее!
Контратака лапшичной мрази: Тридцать три вопроса о микросервисах, 20 000 слов подробных пояснений с картинками и текстами! Собирайте скорее!

Всем привет, я третий ребенок. Продолжается серия контратак против отморозков. В этом выпуске вам будут предложены вопросы для собеседований, связанные с микросервисами.

Обзор

1. Что такое микросервисы?

Микросервисы — это стиль архитектуры программного обеспечения, который делит большое приложение на набор небольших, автономных и слабосвязанных сервисов. Каждый микросервис отвечает за выполнение определенной бизнес-функции и взаимодействует друг с другом посредством простых механизмов связи, таких как HTTP. Каждый микросервис можно разрабатывать, развертывать и масштабировать независимо, что делает приложение более гибким, масштабируемым и удобным в обслуживании.

В архитектурной эволюции микросервисов,В общем, может быть такое направление эволюции:Одиночный тип-->Служитьизменять-->микросервисы。

Как правило, в начале все проекты выглядят как единая услуга:

  • Monolith Служить (Monolithic Service) — традиционный подход к архитектуре программного обеспечения.,Разработайте и разверните все приложение как единое, тесно связанное целое. Один блок обычно состоит из нескольких модулей.,Эти модули используют одну и ту же базу данных и кодовую базу. Однако,По мере роста размера приложения,Монолитная Служить может стать большой и сложной в обслуживании.,иразвертыватьи Масштабирование сложности。

Позже единый сервис стал слишком большим и сложным в обслуживании, и постепенно он превратился в распределенную SOA:

  • SOA(Service-Oriented Архитектура, архитектура, ориентированная на Служить) да Принцип проектирования архитектуры программного обеспечения, который подчеркивает разделение приложений на независимые Служить и взаимодействие через стандартизированные интерфейсы. СОАсосредоточиться на основано на возможности повторного использования и комбинирования Служить, но не определяет размер Служить.
  • микросервисыда развивается на основе SOA и представляет собой метод разделения и развертывания в определенном масштабе. В архитектуре микросервисов упор делается на разделение приложений на небольшие, автономные и слабосвязанные службы, каждая из которых ориентирована на конкретную бизнес-функцию. Эта архитектура делает приложения более гибкими, масштабируемыми и удобными в обслуживании.

Следует отметить, что микросервисы — это особый архитектурный стиль, а SOA — это принцип проектирования. Микросервисы можно рассматривать как особую практику SOA-мышления, но это не то же самое, что SOA.

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

2. Какие проблемы создают микросервисы?

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

  1. Сложность системы возрастает: одна Служить разбивается на несколько Служить.,Общая сложность системы увеличивается,Нужно обработать Служитьобщение между、развертывать、Сложность в плане мониторинга и обслуживания ожидания.
  2. Служитьнакладные расходы на связь:микросервисыпроходить междусетьобщаться,Передача данных требует дополнительных сетевых накладных расходов и накладных расходов на сериализацию.,Может вызвать проблемы с производительностью и увеличить задержку системы.
  3. данныепоследовательностьиделауправлять:каждыймикросервисы У каждого свойхранение данные, согласованность данных и управление делами в Служить становятся более сложными и требуют дополнительных решений Распределенные проблема синхронизации данных.
  4. развертыватьи Операционная сложность:микросервисы Архитектура включает в себя несколько независимыхразвертыватьиз Служить,Существуют более высокие требования к механизмам развертывания, мониторинга и отказоустойчивости.,Необходимо создать соответствующий конвейер развертывания и инструменты автоматизации.,Чтобы упроститьизменятьразвертыватьи Процесс эксплуатации и обслуживания。
  5. Затраты на командную коммуникацию и совместную работу: за каждый микросервис отвечает выделенная команда.,Может увеличить затраты на общение и сотрудничество между командами. Необходимы эффективные каналы связи и механизмы сотрудничества.,убеждаться Служитьмеждуизкоординацияипоследовательность。
  6. Управление услуги управления версиями: по мере увеличения количества микросервисов управление и управление версиями Служить становится более сложным. Необходимо рассмотреть возможность открытия регистрации Служить, балансировка. нагрузки, мониторинг и устранение неисправностей, для обеспечения надежности и стабильности всей системы.
  7. Сложность распределенных систем: микросервисы Архитектура предполагает создание распределенных систем и управление ими.,Сами распределенные системы имеют некоторые присущие проблемы.,нравитьсясеть Задерживать、распределенныйпоследовательностьиотказоустойчивостьсекс。

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

3. Какие микросервисные решения сейчас популярны?

В настоящее время существует три наиболее распространенных решения с открытым исходным кодом для микросервисов:

  1. Dubbo:
  • Dubbo да Высокопроизводительный, легкий Java микросервисырамка, изначально разработанная Алибабой (Alibaba) и выложенная в открытый исходный код в 2011 году. Он обеспечивает регистрацию и обнаружение услуг、балансировка нагрузки、отказоустойчивость、распределенныйвызовждать Функция,Позже техническое обслуживание было на время остановлено.,за последние два года,Начать повторение снова,И запустил Dubbo3.
  • Dubbo Используйте на основе RPC(Remote Procedure Call)изкоммуникация Модель,Имеет высокую производительность и масштабируемость. Он поддерживает несколько транспортных протоколов (таких как TCP, HTTP, Redis) и методов сериализации (таких как JSON, Hessian, Protobuf).,Конфигурация может быть выполнена по запросу.
  • Dubbo считается скорее высокопроизводительной рамкой RPC (удаленный вызов процедур), что-то вроде Управления Услуги Функция опирается на сторонние компоненты, такие как ZooKeeper и Apollo.
  1. Spring Cloud Netflix:
    • Spring Cloud Netflix да Spring Cloud Подпроект Netflix Некоторые компоненты имеют открытый исходный код, но Netflix прекратил их поддержку с 2018 года и обновление Netflix. OSS-проекты, включая Eureka, Hystrix и другие компоненты, поэтому Spring Cloud Netflix также постепенно перешел в режим обслуживания.
    • Проект содержит множество популярных Netflix Такие компоненты, как Eureka (Регистрация и обнаружение услуг)、Лента (клиентская балансировка нагрузки), Hystrix (автоматический выключатель), Zuul (API Ворота) ждать. Все они представляют собой хорошо масштабируемые, проверенные в большом масштабе компоненты.
  2. Spring Cloud Alibaba:
    • Spring Cloud Alibaba да Spring Cloud Еще один подпроект Алибабы связан с рамкой разработки распределенных приложений. Он обеспечивает полный набор Alibaba экосистема комплексные решения.
    • Проект включает в себя Nacos(Регистрация и обнаружение услуг, Управление конфигурацией), Sentinel (управление потоками, деградация автоматического выключателя), RocketMQ (ожидание очереди сообщений). Он построен на Spring Cloud Архитектура микросервисов предлагает множество возможностей.
    • Говорят, что SpringCloud Основатель проекта Alibaba ушел в Tencent и запустил SpringCloud В проекте Tencent есть скрытые опасения по поводу развития сообщества.

    Есть ли различия между этими тремя вариантами? Разница между тремя вариантами: Функции Dubbo Spring Cloud Netflix Spring Cloud Alibaba язык разработки Java Java Java Управление услугами Предоставить полное Управление услугами Функция Предлагает часть Управления услугами Функция Предоставить полное Управление услугами Функция Регистрация и обнаружение услуг ZooKeeper/Nacos Eureka/Consul Nacos балансировка нагрузки Принесите свой собственныйбалансировка нагрузки Стратегия Ribbon Ribbon\Dubboбалансировка нагрузки Стратегия Сервисный вызов Режим RPC RestTemplate/Feign Feign/RestTemplate/Dubbo предохранитель Sentinel Hystrix Sentinel/Resilience4j Центр конфигурации Apollo Spring Cloud Config Nacos Config API-шлюз Higress/APISIX Zuul/Gateway Spring Cloud Gateway Распределенные транзакции Seata Нетподдерживать Распределенные транзакции Seata Ограничение тока и понижение рейтинга Sentinel Hystrix Sentinel Распределенная трассировка и мониторинг Skywalking Spring Cloud Sleuth + Zipkin SkyWalkingилиSentinel Dashboard Микросервисная сетка Dubbo Mesh Нетподдерживать Микросервисная сетка Service Mesh(Nacos+Dubbo Mesh) Общественная деятельность относительно высокий В настоящее время ниже относительно высокий Высиживание и созревание Вылупляется раньше и созревает дольше Более высокая зрелость Вылупление более новое, но быстро растет.

В интервью о микросервисах обычно говорят в основном о Spring Cloud Netflix, за ним следует Spring Cloud Alibaba, а Dubbo чаще называют RPC-фреймворком.

4. Каковы компоненты микросервисов?

микросервисы привносят некоторые проблемы и вызовы в разработку системы, например Сервисный вызовизсложныйсекс、Распределенные обработка транзакций, Служить динамическое управление ожиданием. Чтобы лучше решать эти проблемы и задачи, различные микроуправления Компоненты услуг возникли и служат краеугольным камнем и поддержкой архитектуры микросервисов.

Различные компоненты и распространенные реализации микросервисов:

  1. Регистрационный центр: Используется для регистрации и открытия Служить, а также управления адресной информацией микросервисов. Общие реализации включают в себя:
    • Spring Cloud Netflix:Eureka、Consul
    • Spring Cloud Alibaba:Nacos
  2. Центр конфигурация: используется для централизованного управления информацией о конфигурации микросервисов, которые могут динамически изменять конфигурацию без перезапуска Служить. Общие реализации включают в себя:
    • Spring Cloud Netflix:Spring Cloud Config
    • Spring Cloud Alibaba:Nacos Config
  3. удаленный вызов: Используется для связи и совместной работы между различными микросервисами. Общие гарантии реализации включают в себя:
    • RESTful API: RestTemplate, Feign
    • RPC (удаленный вызов процедуры): например, Dubbo, gRPC.
  4. API-шлюз: как вход в архитектуру микросервисов, он единообразно предоставляет Служить и обеспечивает маршрутизацию, балансировку. нагрузка, сертификация безопасности Общие реализации включают в себя:
    • Spring Cloud Netflix:Zuul、Gateway
    • Spring Cloud Alibaba: шлюз, Apisixждать
  5. Распределенные Трансляция: гарантируйте согласованность и атомарность операций между несколькими микросервисами. Общие реализации включают в себя:
    • Spring Cloud Alibaba:Seata
  6. предохранитель: используется для предотвращения распространения неисправностей между микросервисами.,улучшить системуизотказоустойчивостьспособность。общийиз Реализация включает в себя:
    • Spring Cloud Netflix:Hystrix
    • Spring Cloud Alibaba:Sentinel、Resilience4j
  7. Ограничение тока и понижение рейтинга: используется для предотвращения перегрузки микросервисов, а также для ограничения и понижения запросов. Общие реализации включают в себя:
    • Spring Cloud Netflix:Hystrix
    • Spring Cloud Alibaba:Sentinel
  8. Распределенная трассировка и мониторинг: используется для отслеживания и контроля процесса запросов и показателей производительности микросервисов. Общие реализации включают в себя:
    • Spring Cloud Netflix:Spring Cloud Sleuth + Zipkin
    • Spring Cloud Alibaba:SkyWalking、Sentinel Dashboard

Регистрационный центр

5. Для чего используется Регистрационный центр?

Регистрационный центрдаиспользуется дляуправлятьиподдерживатьраспределенныйсистемасерединакаждый Служитьизадреси Юаньданныеизкомпоненты。В основном он используется для реализацииобнаружение службыиРегистрация услугиФункция。

Подводя итог функциям Регистрационного центра:

  1. Регистрация услуги:каждый Служитьпри запуске до Регистрационный центр Зарегистрируйте свой собственный сетевой адрес, используйте информацию об экземпляре и другие соответствующие метаданные. Таким образом, другие Служить могут пройти Регистрационный центр Получить список доступных на данный момент Служить.
  2. обнаружение службы:клиентпроходить КРегистрационный центрконкретный запрос Служитьиззарегистрироватьсяинформация,Получить список доступных экземпляров Служить. Таким образом, клиент может выбрать подходящую Служить для вызова в соответствии с его потребностями.,Реализована развязка между Служить.
  3. балансировка нагрузки:Регистрационный центр может выполнять балансировку на нескольких экземплярах одного и того же Служить нагрузки,Распределяйте запросы по разным экземплярам,Повысьте общую производительность и доступность системы.
  4. Восстановление:Регистрационный центрспособен контролироватьи Обнаружение Служитьизсостояние,Когда экземпляр Служить выходит из строя или переходит в автономный режим,Регистрационная информация может обновляться своевременно.,Это гарантирует правильную работу Служить.
  5. Управление услугами:проходить Регистрационный центр Может быть осуществлено Служитьиз Конфигурацияуправлять、Динамическое расширение и сжатие、Служитьмаршрутизация、Версия в оттенках серогождатьдействовать,Осуществить динамическое управление и контроль Служить.

6.Какой Регистрационный центр может выбрать Spring Cloud?

SpringCloud можно использовать с различными Регистрационными центр интеграции, общий Регистрационный центр включает в себя:

  1. Eureka:Eureka да Netflix Обнаружение с открытым исходным кодом службырамка, высокодоступная, эластичная, масштабируемая функция ожидания Функции, а также Spring Cloud Хорошо интегрирован.
  2. Consul:Consul даа обнаружение распределенное службыи Конфигурация Системы управления, автор HashiCorp разработка. Он обеспечивает регистрацию услуги、обнаружение службы、проверка здоровья、хранилище значений ключейждать Функция,иподдерживатьмногоданныесередина Сердцеразвертывать。
  3. ZooKeeper:ZooKeeper да Фонд Апач с открытым исходным кодом распределенной координации Служить, может использоваться как Служить Регистрационный. центр. Это очень доступно、последовательность、Надежность ожидания Функции.
  4. Nacos:Nacos Динамика обнаружения да Алибаба с открытым исходным кодом службы, Конфигурация управления и Служить платформу управления. Он обеспечивает регистрацию услугииdiscovery, Управление конфигурацией, обновления DNS Служитьждать Функция。
  5. etcd:etcd да CoreOS Распределенная система хранения значений ключей с открытым исходным кодом, которую можно использовать в качестве Служить Регистрационный центр. Это очень доступно、мощныйпоследовательность、распределенныйкопироватьждатьхарактеристика。

7. Расскажите мне, в чем разница между Eureka, ZooKeeper и Nacos?

характеристика

Eureka

ZooKeeper

Nacos

девелоперская компания

Netflix

Фонд Апач

Алибаба

CAP

AP (доступность и устойчивость к разделам)

CP (допуск согласованности и разделения)

Поддерживает как AP, так и CP

Функция

Регистрация и обнаружение услуг

Распределенная координация, управление конфигурацией, распределенные блокировки

Регистрация и обнаружение услуг、Конфигурацияуправлять、Служитьуправлять

позиция

Подходит для построения микросервисной архитектуры на основе HTTP.

Универсальная структура службы распределенной координации

Подходит для микросервисов и облачных приложений.

соглашение о доступе

HTTP

TCP

HTTP/DNS

самозащита

поддерживать

-

поддерживать

хранение данных

Встроенная база данных, несколько экземпляров для формирования кластера

ACID распределенная файловая система характеристики ZAB протокол

Встроенная база данных, MySQL и т. д.

проверка здоровья

Client Beat

Keep Alive

TCP/HTTP/MYSQL/Client Beat

Функции

Простой и удобный в использовании механизм самозащиты.

Высокая производительность, сильная последовательность

Управление динамической конфигурацией, управление трафиком, публикация в оттенках серого и т. д.

можно увидетьEurekaиZooKeeperиз Самая большая разницадаодинподдерживатьAP,одинподдерживатьCP,Nacosтеперь этоподдерживатьтеперь этоподдерживатьAP,такжеподдерживатьCP

8.Понимаете ли вы принцип реализации Эврики?

Принцип реализации Эврики можно рассматривать со следующих сторон:

  1. Регистрация и обнаружение услуг: Когда запускается экземпляр Служить, он сообщает об этом Eureka. Сервер отправляет запрос на регистрацию для регистрации своей информации в Регистрационный. центр。Eureka ServerЭта информация будет храниться в памяти,И предоставить интерфейс REST для запросов других Служить. Потребители Служить могут получить доступные экземпляры поставщика Служить, запросив список экземпляров Служить.,Тем самым осуществив открытие Служить.
  2. Служитьпроверка здоровья: Eureka использует механизм пульса для определения состояния работоспособности экземпляра Служить. Экземпляр Служить периодически отчитывается перед Эврикой. Сервер отправляет контрольное сообщение, то есть обновляет контракт, чтобы указать его статус выживания. Если Эврика ServerНе получено в течение определенного периода времени Служить Примериз Сердце跳,отметит его как недоступное,и удален из списка Служить,Офлайн-экземпляр.
  3. Служитьбалансировка нагрузки: Когда клиент Eureka вызывает другой Служить, он получает регистрационную информацию Служить из локального кэша. Если соответствующей информации в кеше нет, она будет отправлена ​​в Eureka. Сервер отправляет запрос запроса. Эврика Сервер вернет клиенту список доступных экземпляров Служить, и клиент сможет использовать балансировку. Алгоритм нагрузки выбирает один из них для вызова.

Чтоэтоиз Регистрационный центр,Такие как Накос, Консул ждать ждать,существовать Регистрация услуги С точки зрения открытия принципы реализации аналогичны.

9.Как Eureka Server обеспечивает высокую доступность?

Eureka Server обеспечивает высокую доступность, главным образом, за счет следующих трех аспектов:

  1. Многоэкземплярное развертывание: Объединив несколько Eureka ServerПримерразвертыватьсуществовать Неттакой жеизна узле,Высокая доступность может быть достигнута. Когда один из экземпляров выходит из строя,Другие экземпляры еще доступны Служить,и保持зарегистрироватьсяинформацияизпоследовательность。
  2. Регистрация услугиинформацияизкопировать: Когда экземпляр Служить сообщает Eureka При регистрации Сервера каждая Eureka Все экземпляры сервера будут регистрировать информацию других экземпляров для обеспечения согласованности данных. Когда некая Эврика При выходе из строя экземпляра Сервера другие экземпляры могут взять на себя его работу, чтобы обеспечить нормальную работу всей системы.
  3. механизм самозащиты: У Эврики также есть механизм самозащиты. Когда Эврика Если узел Сервера не получит контрольного сигнала в течение определенного периода времени, он перейдет в режим самозащиты. В режиме самозащиты Эврика ServerНет再剔除зарегистрироваться表серединаиз Служить Пример,для защиты существующей регистрационной информации. Это предотвращает ложные отклонения из-за дрожания сети или других причин.,Дальнейшее улучшение стабильности системы.

Центр конфигурации

10.Почемумикросервисынуждаться Центр конфигурации?

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

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

11.Какую конфигурацию Центра может выбрать Spring Cloud?

и Регистрационный Как и центр, SpringCloud также поддерживает различные Центры. Интеграция конфигурации. Общий центр варианты конфигурации включают в себя:

  1. Spring Cloud Конфигурация: Официально рекомендованный Центр конфигурация, поддержка хранит файлы конфигурации в Git, системах контроля версий ожидания SVN и обеспечивает RESTful API для доступа и управления.
  2. ZooKeeper: распределенная координационная система с открытым исходным кодом, которую можно использовать в качестве Центра. конфигурации。Это очень доступносекс、последовательностьи Механизм уведомленияждатьхарактеристика。
  3. Консул: Еще одно распространяется открытое обнаружение инструмент управления политики Конфигурация, также доступен как Центр конфигурации。поддерживать Различный Конфигурация Формат файла,поставлятьпроверка функция ожидания здоровья, аварийного переключения и динамических изменений.
  4. Etcd: распределенная система хранения значений ключей,Доступен как Центр конфигурации. Используется на основе Механизм согласованности алгоритма Raft.,поставлятьраспределенныйданныепоследовательностьгарантировать。
  5. Apollo: Центр с открытым исходным кодом Ctrip конфигурации,поддержкамультиязычной ирамки. Обеспечивает детальное управление разрешениями на конфигурацию, уведомления об изменениях конфигурации и публикацию в оттенках серого. Ожидание расширенной характеристики.,Также имеется визуальный интерфейс управления Конфигурацией.
  6. Nacos:Алибаба Обнаружение с открытым исходным кодом службы мониторинга, Конфигурация управления и Платформа управления Служить, также доступны как Центр конфигурациииспользовать。поддерживать Регистрация и обнаружение услуг、Управление динамической конфигурацией、Служитьмониторинг здоровьяидинамичныйDNSСлужитьждать Функция。

12. Понимаете ли вы принцип планирования Центра Nacos?

Центр конфигурации, если говорить прямо, в одном предложении: Конфигурация CRUD информации.

Конкретную реализацию можно условно разделить на следующие части:

  1. Хранение информации о конфигурации: Nacos по умолчанию использует встроенную базу данных Derby для хранения информации о конфигурации.,Вы также можете использовать реляционную базу данных ожидания MySQL.
  2. Регистрация Информация о конфигурации: Служить начинается, Nacos Клиент будет отчитываться перед Nacos Serverзарегистрироваться自己из Конфигурацияинформация,Этот процесс регистрации записывает информацию о конфигурации в хранилище.,и сгенерируйте номер версии.
  3. Получить информацию о конфигурации: Служить во время работы,Клиент Nacos от Nacos через сервер API получает информацию о конфигурации. Сервер находит соответствующую информацию о конфигурации на основе ключа.,и возвращается Клиенту.
  4. слушайте друг друга Изменения конфигурации: Nacos Клиент может отслеживать информацию о конфигурации, зарегистрировав прослушиватель. При изменении информации о конфигурации Nacos Сервер уведомит зарегистрированного прослушивателя и активирует соответствующий метод обратного вызова.

13.Nacos Центр планирования механизма длительного опроса?

Вообще говоряклиенти Служитьконециз Существует два типа взаимодействия:ТолкатьиТянуть,NacosсуществоватьPullизпо сути,Длинный опрос используется для динамического обновления конфигурации.

В режиме длительного опроса клиент периодически инициирует запросы к серверу, чтобы проверить, не изменилась ли информация о конфигурации. Если изменений нет, сервер «придержит» запрос, то есть не вернет результат до тех пор, пока не изменится конфигурация или не будет достигнут определенный таймаут.

Конкретный процесс реализации выглядит следующим образом:

  1. Клиент инициирует запрос на включение,Сторона Служить проверяет наличие изменений в Конфигурациида. если нет изменений,Затем настройте запланированное задание,Выполнить через некоторое время,И добавьте текущее клиентское соединение в очередь ожидания.
  2. Во время пребывания в ожидании,Если Конфигурация изменится,Терминал «Служить» моментально вернет результат клиенту.,Выполните операцию «толкания».
  3. нравитьсяфрукты Во время пребывания в ожидании Нет Конфигурацияизменять,ждать Подождать, пока время не достигнет заданного времени тайм-аута,Терминал «Служить» автоматически вернет результаты клиенту.,Хотя Конфигурация не изменилась.
  4. Если в течение периода ожидания конфигурация была изменена через панель мониторинга Nacos или API,запустит механизм событий,Служить Терминал будет пересекатьждать Ожидание в очереди,Найдите клиентское соединение, соответствующее измененному элементу Конфигурации.,и вернуть измененные данные через соединение,Выполните операцию «толкания».

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

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

14. Можете ли вы рассказать мне разницу между HTTP и RPC?

Строго говоря, HTTP и HTTP не находятся на одном уровне:

  • HTTP (протокол передачи гипертекста) для протокола прикладного уровня,основноймощныйнастраиватьиздасетькоммуникация;
  • RPC(Remote Procedure Вызов, удаленный вызов процедуры) да А протокол, используемый для связи между распределенными системами, подчеркнуто да Служить удаленный между вызов。

Некоторые RPC-рамки, такие как gRPC,Базовый транспорт фактически использует HTTP2.,Включает Даббо3,Также совместим с gRPC.,В качестве транспортного уровня используется уровень протокола.

Если мне придется сказать разницу, то она заключается в следующем:

HTTP

RPC

определение

HTTP (протокол передачи гипертекста) да Протокол, используемый для передачи гипертекста.

RPC (Удаленный вызов процедур) – протокол, используемый для реализации связи между различными узлами в распределенной системе.

Метод связи

В соответствии с моделью запрос-ответ клиент отправляет запрос, а сервер возвращает ответ.

В соответствии с моделью вызова метода клиент вызывает удаленный метод и ожидает результата.

передача инфекциипротокол

На основе TCP для безопасного шифрования можно использовать другие транспортные уровни, такие как TLS/SSL.

Доступны различные передачи протокола,Например, TCP, UDP-ожидание.

Формат данных

В зависимости от текста обычно используемые форматы данных включают ожидание JSON и XML.

Доступны различные форматы данные, такие как двоичные файлы, JSON, протокол Буферы и т.д.

интерфейсопределение

Используйте интерфейс в стиле RESTful для определения,Обычно используетсяизметодиметьGET、POST、PUT、DELETEждать。

Определение интерфейса с использованием IDL (Языка определения интерфейса), например протокола Буферы, бережливость.

межлингвистический

Для обеспечения межъязыковой связи вы можете использовать HTTP в качестве протокола связи для обеспечения связи между разными языками.

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

гибкость

Более гибкий и подходит для различных типов сценариев приложений, таких как веб-разработка, вызов API и т. д.

Более эффективен и подходит для распределенных систем, которым требуется высокая производительность и низкая задержка.

В системе микросервисов на основе HTTP-стиля удаленный вызов обычно реализуется с использованием кадра типа Feign, на основе удаленного RPC вызов обычно реализуется с использованием кадра типа Dubbo.

15. В чем разница между Фейном и Даббо?

Эти две вещи подходят для сравнения:

Feign

Dubbo

определение

Feign — это декларативный клиент веб-сервисов, который упрощает вызовы HTTP API.

Dubbo — это платформа распределенных сервисов, используемая для построения сервис-ориентированной микросервисной архитектуры.

Метод связи

На основе HTTP-протокола,Используйте интерфейс в стиле RESTful для определенияивызов。

На основе протокола RPC поддерживаются различные протоколы сериализации, такие как gRPC, ожидание Hessian.

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

обычно сочетается с Служить Регистрационный центр(нравитьсяEureka、Consul)руководитьобнаружение службыибалансировка нагрузки。

Регистрация от ZooKeeper, Nacosждать услуги обнаружены и предоставлены балансировкой нагрузки Функция。

Управление услугами

Управление не предусмотрено напрямую услуги Функция, необходимо комбинировать с другими компонентами или рамкой, чтобы сделать Управление услугами。

поставлять Регистрация и обнаружение услуг、балансировка нагрузка, механизм отказоустойчивости, Служить понижение ожидания Управление услугами Функция。

межлингвистический

Для обеспечения межъязыковой связи вы можете использовать HTTP в качестве протокола связи для обеспечения связи между разными языками.

поддерживать межъязыковое общение,Генерируйте клиентский код на разных языках с помощью IDL Dubbo.

экосистема

Интегрировано с Spring Cloudэкосистема,с весной Boot легко интегрируется.

Имеет полную экосистему, включая Регистрационный. центр、Центр конфигурация, центр мониторинга компонентов ожидания.

Применимые сценарии

Подходит для создания архитектуры микросервисов в стиле RESTful, особенно подходит для микросервисных вызовов на основе HTTP.

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

На что следует обратить внимание,Feign иDubbo не являются взаимоисключающими. на самом деле,Dubbo может использовать HTTP-протокол в качестве метода связи., и Feign также может интегрировать протокол RPC для удаленного вызов. Выбор удаленного сервера для использования Подход зависит от конкретных потребностей бизнеса и выбора технологического стека.

16.Расскажи мне о Фегине?

Feign — декларативный клиент веб-сервисов, который упрощает разработку удаленных сервисов с использованием HTTP.

Feign находится в RestTemplate и На основе Ribbon мы дополнительно инкапсулируем его, используем RestTemplate для реализации Http-вызовов и используем Ribbon для реализации балансировки. нагрузки。

Основные категории Feign включают:

  1. Декларативный API: Feign позволяет разработчикам использовать простые аннотации для описания доступа к удаленным приложениям. с помощью аннотаций,Разработчики могут легко указать URL-адрес, метод HTTP, параметры запроса, информацию заголовка запроса.,делатьудаленный вызов становится очень интуитивным и простым для понимания.
Язык кода:javascript
копировать
@FeignClient(name = "example", url = "https://api.example.com")
public interface ExampleService {
    @GetMapping("/endpoint")
    String getEndpointData();
}
  1. интегрированныйбалансировка нагрузки:Feignинтегрированный ПонятноRibbonбалансировка устройство нагрузки, которое может автоматически осуществлять балансировку клиента нагрузка. Он может динамически маршрутизировать запросы в соответствии с именем и доступными экземплярами Служить и распределять запросы по различным экземплярам Служить, чтобы улучшить доступность и масштабируемость системы.
  2. Механизм отказоустойчивости: Feign поддерживает рамку отказоустойчивости Hystrix, которая может обеспечить отказоустойчивость и функцию автоматического выключателя при удаленном вызове Служить. Когда удаленный сервер недоступен или на ответ требуется слишком много времени, Feign может быстро выйти из строя и вернуть заранее заданные результаты ответа, чтобы избежать каскадных сбоев во всей системе.

17.Почему первый вызов Feign занимает много времени?

Основная причина связана с механизмом ленивой загрузки ленты.,когда происходит первый звонок,Feign запустит процесс загрузки ленты.,В том числе получение списка Служить Регистрационный центр и установление операции ожидания пула соединений.,Этот процесс загрузки увеличит время первого звонка.

Язык кода:javascript
копировать
ribbon:
  eager-load:
    enabled: true
      clients: service-1

Так как решить эту проблему?

Клиент Feign можно прогревать при запуске приложения.,Автоматически вызывать незначительный звонок,Предварительно загрузить ленту и другие сопутствующие компоненты. так,Это эквивалентно предварительному первому звонку.

18.Как Feign реализует передачу аутентификации?

Относительно распространенный подход да,использовать Перехватчикпередача Сертификацияинформация。МожетпроходитьвыполнитьRequestInterceptorинтерфейс Приходитьопределение Перехватчик,в перехватчике,Добавьте информацию аутентификации в заголовок запроса,Затем зарегистрируйте его в Конфигурации Feign.

Язык кода:javascript
копировать
@Configuration
public class FeignClientConfig {

    @Bean
    public RequestInterceptor requestInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate template) {
                // Добавьте информацию аутентификации в заголовок запроса
                template.header("Authorization", "Bearer " + getToken());
            }
        };
    }

    private String getToken() {
        // Логику получения аутентификационной информации можно получить из SecurityContext или других мест.
        // Возвращает строковую форму информации аутентификации.
        return "your_token";
    }
}

19.Как Fegin выполняет балансировку нагрузки? Лента?

В Feign балансировка нагрузки реализована за счет интеграции Ribbon.

Лента для балансировки клиента Netflix с открытым исходным кодом нагрузки, которую можно легко интегрировать с Feign для обеспечения балансировки Feign. Способность нагрузки.

Ribbonпроходитьот Служить Регистрационный центр Получить список доступных Служить и выполнить поиск по балансировке Алгоритм нагрузки выбирает соответствующий экземпляр Служить для пересылки запроса и реализует балансировку клиента. нагрузки。

20. Каковы алгоритмы балансировки нагрузки?

Общие алгоритмы балансировки нагрузки включают в себя следующее:

  1. Круговая система:Алгоритм опросада Самый простойизбалансировка Один из алгоритмов нагрузки. Он распределяет запросы на каждый внутренний сервер по порядку, и цикл продолжается. При поступлении запроса балансировка Устройство нагрузки выбирает следующее устройство Служить в порядке предыдущего определения. Алгоритм опроса подходит для сценариев, в которых внутренние серверы имеют одинаковую вычислительную мощность и производительность.
  2. Взвешенный круговой турнир:Взвешенный Алгоритм опросасуществовать Алгоритм опросаизпо сути增加Понятно权重изконцепция。каждыйназадконец Служитьустройстводаныодинвесовое значение,Чем выше значение веса,Тем больше вероятность быть выбранным. Это позволяет регулировать коэффициент распределения запросов в зависимости от вычислительной мощности и производительности сервера.,Это позволяет более производительным серверам обрабатывать больше запросов.
  3. Случайный алгоритм (Случайный):Случайный алгоритм случайным образом распределяет запросы к бэкэндам Служитьустройство。каждыйназадконец Служитьустройствоиметь Взаимнождатьизвыбраносередина Вероятность,Фактические условия нагрузки устройства Служить не учитываются. Этот алгоритм прост и быстр,Он подходит для сценариев, в которых производительность внутреннего сервера аналогична, а возможности обработки запросов учитывать не нужно.
  4. Алгоритм взвешенного случайного выбора (Weighted Random):Взвешенныйслучайныйалгоритмсуществоватьслучайныйалгоритмизпо сути引入Понятно权重изконцепция。каждыйназадконец Служитьустройстводанныйодинвесовое значение,Чем выше значение веса,Тем больше вероятность быть выбранным. Это позволяет регулировать коэффициент распределения запросов в зависимости от вычислительной мощности и производительности сервера.。
  5. Алгоритм наименьшего соединения:Наименее связанный алгоритм будет основан на бэкэнде Служитьустройствотекущийиз连接数Приходить决定проситьизраспространять。балансировка Сервер нагрузки выберет сервер Служить с наименьшим количеством текущих подключений для распределения запросов, чтобы обеспечить балансировку внутреннего сервера Служить. нагрузка. Этот алгоритм подходит для сценариев, в которых внутренние серверы имеют разные возможности обработки или время обработки запроса различается.
  6. Алгоритм хеширования (Hash):Хэшалгоритмбудет основано напроситьизконкретный родсекс(нравитьсяклиентIPадрес、проситьURLждать)Вычислить хэш-значение,Затем выберите соответствующий бэкэнд Служить на основе значения хеша.

Общая балансировка нагрузкиустройство,Такие как Лента, Ворота Ждать Ждать,По сутиподдерживать Этибалансировка нагрузкиалгоритм。

По поводу Даббо будет отдельный разговор позже.

Аварийное восстановление услуги

21. Что такое лавина обслуживания?

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

Как правило, для предотвращения сервисной лавины можно принять следующие меры:

  1. Служить Высокая доступностьразвертывать:убеждатьсякаждый Служить У всех есть Высокая доступностьсекс,проходитьизбыточностьразвертывать、Ожидание аварийного переключения позволяет уменьшить влияние отдельных точек отказа.
  2. Ограничение тока и автоматический выключатель: Ограничение тока и автоматический выключатель для запросов между Служить, чтобы предотвратить недоступность серверной части Служить из-за притока слишком большого количества запросов.
  3. Кэш и понижение версии: разумное использование кеша для снижения нагрузки на серверную часть Служить,и Служить понижением версии при необходимости,Гарантированная доступность основных функций.

22.Что такое сервисный автоматический выключатель? Что такое понижение уровня обслуживания?

Что такое сервисный автоматический выключатель?

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

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

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

Что такое понижение уровня обслуживания?

Служить Понизить версиюдатакжеда Что-то вродемикросервисы Архитектурасерединаизотказоустойчивостьмеханизм,используется длясуществоватьсистемаресурс紧张или Служить В случае неудачи Гарантированная доступность основных функций.

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

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

Какие автоматические выключатели и решения для понижения версии доступны?

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

рамка

План реализации

Функции

Spring Cloud

Netflix Hystrix

- Обеспечивает изоляцию потоков, Служить понижением версии, кэшировать запросы, объединять запросы. Доступно с пружиной Бесшовная интеграция с другими компонентами облака. Официальный представитель объявил, что обслуживание будет остановлено, и вместо этого рекомендуется использовать Resilience4j.

Spring Cloud

Resilience4j

- Библиотека облегченных сервисных автоматических выключателей — Предлагает аналогичные функции Hystrix: Имеет лучшую производительность и более чистый API- Доступно с пружиной Бесшовная интеграция с другими компонентами облака.

Spring Cloud Alibaba

Sentinel

- Алибаба с открытым исходным кодом управления потоком и компонентом деградации автоматического выключателя - Обеспечивает мониторинг в реальном времени, управление потоком, ожидание ухудшения состояния выключателя. с весной Cloud Экосистема Alibabaтесная интеграция

Dubbo

Dubbo поставляется с автоматическим выключателем и механизмом понижения мощности.

- Механизм деградации выключателя предоставлен самим Дубборамкой- Служить предохранитель и понизить версию можно путем Конфигурация - Тесная интеграция с RPCрамкой Dubbo.

23.Как Hystrix обеспечивает отказоустойчивость сервиса?

Хотя Hystrix больше не обновляется, это очень классическая сервисная отказоустойчивая библиотека с открытым исходным кодом. Она предоставляет множество механизмов для защиты системы:

  1. Служитьпредохранитель(Circuit Breaker):Hystrixпроходить设置阈值Приходить监控Служитьизчастота ошибокиливремя ответа。当частота ошибокиливремя ответапревышать значение по умолчаниюизпорог,предохранитель откроется,Последующие запросы больше не будут отправляться фактическому провайдеру Служить.,И да возвращает заданное значение по умолчанию или сообщение об ошибке. Это позволяет быстро локализовать неисправности.,Предотвратить распространение сбоя,Повысьте стабильность и доступность системы.
  2. Служить Понижение (Резервный режим): Когда предохранитель Служить размыкается.,Hystrix может предоставить альтернативный метод перехода на более раннюю версию или возврата к значениям по умолчанию.,чтобы гарантировать, что система продолжает работать нормально. Разработчики могут определить логику перехода на более раннюю версию,Например, возвращая кэшированные данные, выполняя упрощенную логику или вызывая другие надежные Служить,Обеспечить ограниченную, но доступную функциональность.
Язык кода:javascript
копировать
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

/**
* Служить Пример перехода на более раннюю версию
**/
@Service
public class MyService {

    @HystrixCommand(fallbackMethod = "fallbackMethod")
    public String myServiceMethod() {
        // действительныйиз Сервисный логика вызова
        // ...
    }

    public String fallbackMethod() {
        // Логика метода перехода на более раннюю версию при Сервисном Этот метод будет выполнен в случае сбоя вызова
        // Может возвращать значения по умолчанию или выполнять другую альтернативную логику
        // ...
    }
}
  1. Кэш запроса (Запрос Кэширование): Hystrix может кэшировать результаты ответа на тот же запрос. Когда те же данные будут запрошены в следующий раз, они будут получены непосредственно из кэша, чтобы избежать повторных сетевых запросов и повысить производительность системы и скорость ответа.
  2. Запросить слияние (Запрос Свертывание): Hystrix может объединять несколько одновременных запросов в пакетный запрос, чтобы снизить нагрузку на сеть и использование ресурсов. Это может эффективно сократить количество запросов и повысить производительность системы в некоторых сценариях с высоким уровнем параллелизма.
  3. Мониторинг и измерение в реальном времени Monitoring and Метрики): Hystrix предоставляет функцию мониторинга и метрики в реальном времени, которая может отслеживать и собирать статистику выполнения Служить, включая частоту ошибок, время отклика и индикаторы ожидания параллелизма. Путем мониторинга данных можно своевременно обнаружить и устранить неисправности или проблемы с производительностью.
  4. Изоляция пула потоков (Thread Pool Изоляция): Hystrix помещает каждый запрос, который полагается на Служить, в независимый пул потоков для выполнения, чтобы избежать исчерпания ресурсов потоков во всей системе из-за сбоя определенного Служить. Благодаря изоляции пула потоков можно повысить стабильность и доступность системы.

24.Как Sentinel реализует ограничение тока?

Sentinel динамически управляет текущими правилами ограничения и контролирует текущий поток запросов на основе правил определения. Конкретные этапы реализации заключаются в следующем:

  1. Ресурсы определения: в Sentinel,Ресурсы могут быть даURL, методы ожидания,Используется для идентификации запросов, которые необходимо ограничить потоком.
Язык кода:javascript
копировать
// Оригинальные методы ведения бизнеса.
@SentinelResource(blockHandler = "blockHandlerForGetUser")
public User getUserById(String id) {
    throw new RuntimeException("getUserById command failed");
}

// blockHandler Функция, вызываемая, когда исходный вызов метода является текущим ограниченным/пониженным/защищенным системой.
public User blockHandlerForGetUser(String id, BlockException ex) {
    return new User("admin");
}
  1. Текущие правила ограничения конфигурации: текущие правила ограничения для определения ресурсов в файле конфигурации Sentinel. Правила могут включать имена ресурсов.、порог ограничения тока、Режим ограничения тока (корзина токенов или дырявая корзина) ожидания.
Язык кода:javascript
копировать
private static void initFlowQpsRule() {
    List<FlowRule> rules = new ArrayList<>();
    FlowRule rule1 = new FlowRule();
    rule1.setResource(resource);
    // Set max qps to 20
    rule1.setCount(20);
    rule1.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule1.setLimitApp("default");
    rules.add(rule1);
    FlowRuleManager.loadRules(rules);
}
  1. Мониторинг трафика: Sentinel будет отслеживать трафик каждого ресурса, включая запрошенное количество запросов в секунду (запросов в секунду), количество потоков, время ответа и т. д.
  1. Контроль ограничения тока: при поступлении запроса,Sentinel определит, необходим ли текущий контроль ограничения, на основе текущих правил ограничения ресурса. Если запрос превышает порог регулирования,Вы можете ограничить, запретить или выполнить другую обработку перехода на более раннюю версию.

Какой алгоритм ограничения тока использует Sentinel?

Sentinel использует алгоритм ограничения тока со скользящим окном для реализации ограничения тока.

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

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

Как Sentinel реализует ограничение тока кластера?

Sentinel использует токен ServerиToken Клиентский механизм реализации ограничения тока кластера.

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

сервисный шлюз

25.Что такое шлюз API?

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

К основным категориям API-шлюзов относятся:

  1. Переадресация маршрутизации: API-шлюз в соответствии с запрошенным URL-путем или другим идентификатором.,Направьте запрос на соответствующий бэкэнд. По Конфигурация правил маршрутизации,Гибкое распределение запросов на разные бэкенды.
  2. балансировка нагрузка: API-шлюз может быть реализован между бэкендом. нагрузки,Равномерно распределяйте запросы по нескольким экземплярам,Улучшите пропускную способность и масштабируемость системы.
  3. Безопасность Сертификацияи Авторизовать:API-шлюз Аутентификация может осуществляться централизованно.и Авторизовать,Убедитесь, что только прошедшие проверку подлинности клиенты могут получить доступ к серверной части. Его можно интегрировать с поставщиками удостоверений, такими как OAuth, OpenID Connect.,руководитьпользователь Сертификацияи Авторизоватьдействовать。
  4. Кэширование: API-шлюз может кэшировать ответ бэкенда.,Уменьшить количество запросов на бэкенд Служить,Улучшите производительность системы и скорость отклика.
  5. Мониторинг и журналирование: API-шлюз может собирать и записывать метрики и журналы запросов.,Обеспечить мониторинг и анализ в режиме реального времени,Помогите разработчикам, а также персоналу по эксплуатации и техническому обслуживанию устранять неполадки и оптимизировать производительность.
  6. Преобразование данных с преобразованием протокола: API-шлюз может Форматировать между клиентом и серверной частью. данных Конвертироватьипротокол Конвертировать,Например, преобразование запросов из HTTP в WebSocket.,Или конвертируйте запрошенные параметры в форматы,Для удовлетворения потребностей серверной части Служить.
  7. Управление версиями API: API-шлюз может управлять различными версиями API.,Разрешить одновременное существование нескольких версий API,И правильно маршрутизировать запрос к соответствующей версии API через правила маршрутизации.

……

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

26.Какие шлюзы API может выбрать Spring Cloud?

При разработке с использованием Spring Cloud вы можете использовать следующий выбор API-шлюза:

  1. Netflix Зуул (прекращено обновление): Netflix ZuulдаSpring API по умолчанию, представленный в более ранних версиях Cloud — шлюз. Он основан на стеке технологий сервлетов и может выполнять маршрутизацию, фильтрацию, Функция нагрузкиждать. Однако начиная с декабря 2020 года Netflix объявил, что прекратит следить за Zuul. 1 обслуживание, переход на поддержку нового проекта API-шлюз.
  2. Spring Cloud Gateway:Spring Cloud GatewayдаSpring Официально рекомендованный Cloud API-шлюз, заменяющий Netflix Зуул. Он основан на неблокирующей рамке WebFlux, в полной мере использует преимущества реактивного программирования и обеспечивает маршрутизацию, фильтрацию, автоматические выключатели, ограничение тока, характеристика ожидания. Весна Cloud Gatewayвозвращатьсяподдерживатьс весной Интеграция других компонентов облака, таких как Обнаружение. службы、балансировка нагрузкиждать。
  3. Kong: независимая облачная платформа управления Kongdaan с API-шлюзи Служить,Возможна с весной интеграция с облаком. Kong основан на Nginx.,Обеспечивает мощные возможности маршрутизации, аутентификации, авторизации, мониторинга и расширения. Он поддерживает несколько плагинов и расширений.,Может удовлетворить различные потребности в управлении API.
  4. APISIX: APISIX разработан на основе Nginx и Lua.,Имеет мощную маршрутизацию, контроль трафика, подключаемые расширения ожидания Функция. Поддержка APISIX. Гибкая настройка.,Операции динамической маршрутизации и ограничения тока могут выполняться в соответствии с потребностями.

……

27. Каковы основные концепции Spring Cloud Gateway?

В Spring Cloud Gateway есть три ключевых компонента:

  • Маршрут:маршрутизациядаSpring Cloud Gatewayизосновные строительные блоки,Его определение соответствует правилам запроса и цели пересылки. Маршрут по конфигурации,Запросы могут быть сопоставлены с экземплярами или URL-адресами Служить на серверной стороне. Правила маршрутизации могут сопоставляться на основе запрошенного пути, метода и условий ожидания заголовка запроса.,И укажите целевой URI пересылки.
  • Предикат:断言используется для匹配проситьизсостояние,Если запрос удовлетворяет условию утверждения,Все фильтры конфигурации будут применены. Spring Cloud Gateway предоставляет множество встроенных утверждений.,Например, путь (сопоставление пути), метод (сопоставление метода запроса), заголовок (сопоставление заголовка запроса), ожидание,Также поддержка от утверждения определения.
  • Фильтр:фильтрустройствоиспользуется для对проситьруководитьиметь дело си Конвертировать,Может изменять запросы, ответы и выполнять другую пользовательскую логику. Spring Cloud Gateway предоставляет несколько встроенных фильтров.,Например, пересылка запроса, повтор запроса и ожидание ограничения тока запроса. Также управление с момента определения фильтра,Может根据需求编写自己изфильтрустройствологика。

Давайте посмотрим на конкретный рабочий процесс Spring Cloud Gateway:

Есть еще два важных понятия:

  • Обработчик шлюза:шлюзиметь дело сустройстводаSpring Cloud Gatewayиз核Сердцекомпоненты,Отвечает за пересылку запросов на соответствующие маршруты. Он выполняет сопоставление маршрутов на основе условий утверждения маршрута.,Выберите подходящий маршрут для пересылки запроса. Процессор шлюза также по очереди применяет цепочку фильтров Конфигурации.,Обрабатывать и конвертировать запросы.
  • Цепочка фильтров шлюза:шлюзфильтрустройствоцепь состоит из рядафильтрустройствокомпозиция,в соответствии с Конфигурацияиз Выполнять последовательно。каждыйфильтрустройство Можетсуществоватьпроситьвперед、проситьназадилипросить Когда возникает ошибкаруководитьиметь дело с。фильтрустройствоцепьиз执行过程Может修改просить、Реагируйте и выполняйте другую логику самообслуживания.

трассировка ссылок

28.Почему Хотите использоватьмикросервисытрассировка ссылок?

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

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

29.Какие параметры микросервиса трассировки ссылок может выбрать Spring Cloud?

Spring Cloud предлагает широкий выбор микросервисов трассировки Схема ссылок. Ниже приведены некоторые часто используемые решения:

  1. Zipkin:Zipkin да Распределенная система отслеживания в реальном времени с открытым исходным кодом, разработанная Twitter Разработал и внес вклад в сообщество открытого исходного кода. Весна Cloud Sleuth снабженный Zipkin Интеграция, вы можете отправлять информацию об отслеживании на Zipkin Служить устройство и пройти Zipkin UI Выполните визуальное отображение и запрос.
  1. Jaeger:Jaeger да Uber Также включена распределенная система отслеживания с открытым исходным кодом. Обслуживание CNCF (Cloud Native Computing Foundation). Используя Spring Cloud Sleuth и Jaeger Клиентская библиотека, которая может отправлять информацию об отслеживании на Jaeger и Выполните визуальное отображение и запрос.
  2. SkyWalking:Apache SkyWalking да Система мониторинга и анализа производительности приложений с открытым исходным кодом, которая обеспечивает Java、.NET и Node.js поддержка на языке ожидания. его можно использовать с Spring Cloud Sleuth Интеграция для отправки данных отслеживания SkyWalking Служить инструмент для визуального отображения и анализа.
  1. Pinpoint:Pinpoint да Naver Система мониторинга производительности распределенных приложений с открытым исходным кодом, поддержка Java и .NET。этоснабженный Spring Cloud Sleuth интеграция для отправки данных отслеживания на Pinpoint Служить устройство и пройти Что UI Проводить анализ и мониторинг.

Эти программы можно комбинировать с Spring Cloud Sleuth Для интеграции Spring Cloud Sleuth да Spring Cloud Компонент в Micro Сервисный вызов возможности генерирования информации отслеживания.

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

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

30.Seataподдерживатькакие режимыиз Распределенные транзакции?

Seata предлагает следующие модели Распределенных коммуникаций:

  1. Режим AT (Atomikos): режим AT даSeata режим поддержки по умолчанию,Это также один из наиболее часто используемых режимов. В режиме АТ,Seata делает это, встраивая контекст дел в бизнес-код.,Осуществить управление Распределенными цепями. Seata будет перехватывать и анализировать операторы SQL в бизнес-коде.,Путем перехвата подключения к базе данных и проксирования,Осуществлять управление и координацию дел.
  1. Режим TCC (Try-Confirm-Cancel): Режим TCC даA на основе механизма компенсации Распределенные образец передачи. В режиме TCC бизнес-логика должна реализовать три этапа операций: попытка, подтверждение и отмена. Seata реализует Распределенные, вызывая методы Try и ConfirmиCancel в бизнес-коде и записывая соответствующие журналы операций на каждом этапе. транзакцииизпоследовательность。
  1. Режим SAGA: Режим SAGA с управляемым событиями Распределенными образец передачи. В режиме SAGA каждое событие может публиковать события и подписываться на них, что реализуется посредством доставки и обработки событий. последовательность действий. Seataснабженный режим SAGA, совместимый с режимом Sagaramka для управления и координации Распределенные Различные этапы проведения.
  1. Режим XA: Режим XA да основан на Двухэтапной подача Commit)протоколиз Распределенные образец передачи. В режиме XA Seata взаимодействует с XAделапротоколом базы данных для реализации Управление и координация перевозок. Для режима XA требуется поддержка самой базы данныхXA и соответствующий источник данных XAдела Конфигурация в приложении.

31. Вам понятен принцип реализации Сеаты?

Принцип реализации Seata в основном включает в себя три основных компонента: Координатор транзакций (координатор транзакций). Координатор), транзакционный менеджер (Транзакция Manager)и Менеджер ресурсов。

  • Координатор транзакций:делакоординацияустройство Ответственныйкоординацияиуправлять Распределенные Весь процесс передачи. Он получает запросы на начало и завершение дел, координирует и обрабатывает их на основе статуса дел. Координатор дел также отвечает за регистрацию и управление глобальными делами. ID(Global Transaction ID) и подразделы ID(Branch Transaction ID)。
  • Менеджер транзакций:делауправлятьустройство Ответственность за ситуацию в целом.делаизуправлятьиконтроль。этокоординациякаждыйветвьделаизпредставлять на рассмотрениеилиоткат,И гарантировать последовательность и изоляцию Распределенных передач. Менеджер по делам также отвечает за общение с координатором по делам.,И сохраняются изменения состояния дел.
  • Менеджер ресурсов:ресурсуправлятьустройство Ответственныйуправлятьиконтролькаждыйженьшеньи ВОЗ(Participant)изделадействовать。этоиделауправлятьустройствообщаться,И выполнить соответствующие дела-операции согласно указаниям менеджера дела.,Включая фиксацию и откат.

Seataизвыполнить原理基于Двухэтапная подача Commit)протокол,Конкретный механизм заключается в следующем:

  1. Этап 1: В процессе подачи дел,Начните с этапа предварительной фиксации. Координатор дел отправляет запросы на предварительную фиксацию каждому менеджеру ресурсов.,Менеджер ресурсов выполняет соответствующую операцию дела и возвращает результат выполнения. на этом этапе,Бизнес-данные и записи журнала отката передаются в одни и те же местные дела.,И освободите локальные блокировки и ресурсы подключения.
  2. Этап 2. После успешного завершения этапа предварительной подачи переходите к этапу фактической подачи. Этот этап в основном включает в себя два шага: фиксацию асинхронизации и обратную компенсацию отката:
    • Асинхронизация коммитов: координатор дел выдает настоящий запрос на коммит,Каждый менеджер ресурсов выполняет последнюю операцию фиксации. Операция на этом этапе выполняется очень быстро.,Обеспечить оперативность подачи дел.
    • Обратная компенсация отката: если какой-либо менеджер ресурсов возвращает результат сбоя на этапе предварительной фиксации.,Координатор дел выдает запрос на откат,Каждый менеджер ресурсов выполняет операцию отката.,Используйте журналы одноэтапного отката для обратной компенсации.

Как выглядит процесс выполнения транзакций Seata?

Процесс выполнения транзакций Seata можно кратко охарактеризовать как следующие этапы:

  1. инициатор дела (Транзакция Стартер) инициирует глобальные дела: инициатор дела да относится к инициированию Распределенных заявку на перевозку или Служить. Он отправляет запрос на начало глобальных дел координатору дел Сиаты, генерируя глобальный идентификатор дела (Global Transaction ID)。
  2. Координатор дел создает глобальную запись дел: после того, как координатор дел получает запрос на запуск глобальных дел.,Для этого дела будет создана соответствующая глобальная запись дела.,И сгенерируйте ветку делаID (Branch Transaction ID).
  3. Регистрация дела филиала: Инициатор дела отправляет каждому участнику (Участнику) глобальный идентификатор дела и идентификатор дела филиала.,Это менеджер ресурсов. Участник регистрирует идентификатор дела филиала у местного менеджера дела.,И отправьте результаты выполнения дел координатору дел.
  4. Выполнение бизнес-логики: в Распределенные транзакцииизконтекстсередина,Каждый участник ведет свои местные дела.,То есть выполнять бизнес-логику и операции с базой данных.
  5. Фаза предварительной подачи: инициатор дела отправляет запрос на предварительную фиксацию координатору дел, а координатор дела отправляет запрос на предварительную отправку каждому участнику.
  6. Выполнить подтверждение местных дел: после того, как участник получит запрос на предварительную фиксацию.,Выполнить операцию подтверждения местных дел,А результаты исполнения местных дел передать координатору дел.
  7. Глобальные дела фиксируются или откатываются: координатор дел выносит решение по результатам отзывов участников,Если локальные дела всех участников выполняются успешно,Координатор дел отправляет участникам настоящий запрос на коммит.,Участники выполняют окончательную операцию фиксации, если локальное выполнение какого-либо участника завершается неудачей;,Координатор дел отправляет участникам запрос на откат,Участник выполняет операцию отката.
  8. Завершение глобальных дел: После получения координатором дел результатов фиксации или отката участника.,Обновить статус глобальных дел по результатам,И уведомить инициатора дела об окончательном результате глобального дела.

Как передаются идентификатор глобальной транзакции и идентификатор транзакции филиала?

Глобальная ветвь дела ИДи делаID передается в Распределенные транзакции по контексту. Общие методы передачи включают передачу параметров, передачу контекста потока и передачу промежуточного программного обеспечения сообщений. Конкретный метод доставки может быть выбран и скорректирован в соответствии с бизнес-сценарием и выбором технологии.

Как реализован откат транзакций Seata?

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

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

Управление журналами отката и основным механизмом хранения даSeata,Вы можете хранить журналы на разных носителях. Сохранение и восстановление через журналы отката,Seataубеждаться Понятноделаизпоследовательностьивосстанавливатьсясекс。

Мониторинг услуг

32. Как ваша служба осуществляет мониторинг и оповещение?

Мы используем Prometheus и Grafana для реализации мониторинга и сигнализации всего кластера микросервисов:

  1. Prometheus:Prometheus да Система мониторинга с открытым исходным кодом, гибкой моделью данных и мощным языком запросов, позволяющая собирать и хранить данные временных рядов. Он может регулярно получать данные индикаторов микросервисов через протокол HTTP и обеспечивает масштабируемое хранение и функцию запросов.
  2. Grafana:Grafana да Инструмент визуальной панели с открытым исходным кодом, который можно использовать с Prometheus При совместном использовании создавайте информационные панели с данными реального времени и историческими данными. Графана Предоставляет множество вариантов диаграмм и визуализации, которые помогают пользователям лучше понимать и анализировать производительность и состояние микросервисов.

33. Как ваш сервис собирает логи?

Существует множество вариантов сбора журналов.,Мы используемиздаELK

  • Elasticsearch:Elasticsearchдаодинраспределенныйпоиски Механизм анализа,Используется для хранения и индексирования больших объемов данных журнала. Он обеспечивает быстрый поиск и функцию агрегирования.,Крупномасштабные данные журналов можно эффективно обрабатывать.
  • Logstash:Logstashдаодиниспользуется для收集、фильтри Переслать журналданныеизинструмент。это Можетот各种Приходить源(нравитьсядокумент、сеть、очередь сообщенийждать)Сбор журналовданные,и обрабатывать и преобразовывать данные,Затем он отправляется в Elasticsearch для хранения и индексирования.
  • Kibana:Kibanaдаодиниспользуется для日志данныевидимыйизменятьианализироватьизинструмент。этопоставлять Понятно丰富издиаграмма、Панель управленияипоиск Функция,Может помочь пользователям отслеживать и анализировать данные журналов в режиме реального времени.,Узнайте о потенциальных проблемах и тенденциях.

Проще говоря,Из этих трехElasticsearchпоставлятьхранение данныхи Поискспособность,LogstashОтвечает за сбор журналовES,KibanaОтветственный日志данныеизвидимыйизменятьанализировать。

Общий процесс использования ELK для сбора журналов микросервисов выглядит следующим образом:

  1. Вывод журнала конфигурации каждого микросервиса: вывод журнала микросервисов на стандартный вывод (stdout) или в файл журнала.
  2. Используйте Logstash для сбора журналов: Конфигурация Logstash Collector,Отслеживайте выходные данные журнала микросервисов с помощью подключаемого модуля ввода конфигурации (например, ввод файлов, ожидание ввода сетевых данных).,ируководитьфильтрииметь дело с。
  3. Отправка данных журнала в Elasticsearch: плагин вывода Конфигурация Logstash отправляет обработанные данные журнала в Elasticsearch для хранения и индексирования.
  4. Визуализация и анализ с помощью Kibana: подключение к Elasticsearch через Kibana,Создавайте информационные панели, диаграммы и поисковые запросы,Мониторинг и анализ данных журналов микросервисов в режиме реального времени.

В дополнение к наиболее широко используемому ELK,возвращатьсяиметь Некоторый Чтоэтоиз Коэффициент плананравитьсяFluentdGraylogLokiFilebeat,Некоторые поставщики облачных услуг также предоставляют платные планы.,Сравниватьнравиться Алибаба Облакоизsls


ссылка:

[1]. «Практика переопределения весенних облаков».

[2]. «Практика и принципы микросервиса SpringCloud Alibaba».

[4]. «Практика распределенных систем микросервисов Spring Cloud».

[5].https://cn.dubbo.apache.org/

[6].https://cloud.spring.io/spring-cloud-netflix/reference/html/

[7].https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu

[8].https://grafana.com/

[9].https://www.bmabk.com/index.php/post/142012.html

[10].https://sentinelguard.io/zh-cn/

[11].https://www.elastic.co/elastic-stack

[12].https://seata.io/

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.