Самая полная коллекция вопросов для интервью Spring Cloud, вся практическая информация.
Самая полная коллекция вопросов для интервью Spring Cloud, вся практическая информация.

Воспользовавшись этими двумя днями свободного времени, я разобрался с вопросами собеседования Spring Cloud. Мне еще предстоит выучить эссе из восьми частей! Ни больше, ни меньше, всего 62 вопроса, все они – практическая информация, которая поможет вам понять и углубить свое впечатление!

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

кодязык:javascript
копировать
 The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services , which may be written in different programming languages and use different data storage technologies.

Прежде всего, не существует официального определения микросервисов. Трудно дать прямое описание микросервисов. Мы можем понять, что такое микросервисы, сравнив их с традиционными веб-приложениями.

1. Традиционные веб-проекты против микросервисов

1. Традиционные веб-проекты

Ядро традиционных веб-приложений разделено на бизнес-логику, адаптеры и API или веб-интерфейсы, доступ к которым осуществляется через пользовательский интерфейс. Бизнес-логика определяет бизнес-процессы, бизнес-правила и объекты предметной области. Адаптеры включают компоненты доступа к базе данных, компоненты сообщений и интерфейсы доступа.

Хотя они разрабатываются по модульному принципу, в конечном итоге они упаковываются и развертываются как монолитные приложения. Например, приложения Java будут упакованы в WAR и развернуты на Tomcat или Jetty.

Такое единое приложение больше подходит для небольших проектов. Преимущества:

  • Простая и прямая разработка, централизованное управление
  • В принципе дублирования разработки не будет.
  • Все функции локальны, нет накладных расходов на распределенное управление и вызовов.

Его недостатки также весьма очевидны, особенно для интернет-компаний:

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

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

Преимущества микросервисной архитектуры

  • Проблемы решены сложности Он разбивает отдельный элементиспользовать на группу Служить. Хотя общее количество функций остается неизменным,Но прикладная программа разбита на управляемые модули или Служить. Эти службы четко определяют границы API, управляемые сообщениями, из RPC. Архитектура микросервисов повышает уровень модульности приложений,Этого сложно добиться с помощью монолитной базы кода. поэтому,разработка микросервисов происходит гораздо быстрее,Легче понять и поддерживать.
  • Разрабатывать каждую Служить индивидуально,и Другие Служить не мешают друг другу Если это соответствует контракту СлужитьAPI.,Разработчики свободны в выборе технологий разработки. Это означает, что разработчики могут использовать новые технологии для написания и рефакторинга.,Поскольку Служить сравнительно невелико,Так что на общую производительность это не окажет большого влияния.
  • Каждый микросервис можно развернуть независимо Разработчикам не нужно координировать развертывание обновлений или изменений. Эти изменения можно будет развернуть сразу после прохождения теста. Таким образом, архитектура микросервисов также делает возможным CI/CD.

Недостатки микросервисов

  • Сложность многократной эксплуатации и обслуживания.
  • Зависимости развертывания системы
  • Служитьстоимость связи
  • согласованность данных
  • Системное интеграционное тестирование
  • Дублирующая работа
  • Мониторинг производительности

2. Какие четыре проблемы необходимо решить при внедрении микросервисов?

  1. клиент Как получить доступ к этим Служить?
  2. Как сервисы взаимодействуют друг с другом?
  3. Их так много Служить, как их найти?
  4. Что делать, если Служить зависает?
1. Как клиенты получают доступ к этим услугам

Исходные сервисы можно вызывать индивидуально, но теперь они разбиты на независимые сервисы по функциям и становятся самостоятельным Java-процессом. Как клиентский пользовательский интерфейс получает к нему доступ? В фоновом режиме работает N служб, и служба регистрации должна помнить об управлении N службами. Если служба отключена/обновлена/модернизирована, стойка регистрации должна быть перераспределена. Это явно не соответствует нашей концепции разделения. Стойка регистрации — мобильное приложение. Бизнес обычно меняется быстрее. Кроме того, вызов N небольших сервисов также приводит к значительным издержкам сети. В системе также есть общие микросервисы, которые обычно не сохраняют состояние. Лучше всего иметь единую локальную систему обслуживания и управления (OAuth) для информации для входа в систему и управления разрешениями.

так,в целомсуществовать За кулисамиNиндивидуальный СлужитьиUIмеждув целомвстречаодининдивидуальныйактерское мастерствоили Кто звонитAPI Gateway,онизделатьиспользоватьвключать

  • Обеспечить единый подъезд Служить,Сделайте микросервисы прозрачными для стойки регистрации
  • Серверная часть агрегациииз Служить,Экономьте трафик,Улучшите производительность
  • Предоставляет функции управления API, такие как безопасность, фильтрация и управление потоками.

Насколько я понимаю, этот API-шлюз может быть реализован разными способами. Это может быть блок, объединяющий программное и аппаратное обеспечение, простую структуру MVC или даже сервер Node.js. Их наиболее важная роль — обеспечить агрегацию фоновых сервисов для внешнего интерфейса (обычно мобильных приложений), предоставить единый сервисный выход и разделить их. Однако шлюз API также может стать единой точкой отказа или узким местом производительности.

2. Как общаться между сервисами?

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

  • синхронная мелодияиспользовать
    • REST(JAX-RS)
    • RPC(Dubbo)
  • Асинхронный вызов сообщений (Kafka, Notify, MetaQ)

Как правило, синхронные вызовы относительно просты и имеют строгую согласованность, но склонны к проблемам с вызовами и имеют низкую производительность, особенно при наличии большого количества уровней вызовов. Сравнение RESTful и RPC также является очень интересной темой. Как правило, REST основан на HTTP, который проще реализовать и более приемлем. Технология реализации на стороне сервера также более гибка. Она может поддерживаться различными языками и может пересекаться с клиентами. Никаких особых требований к клиенту не предъявляется. Пока SDK инкапсулирует HTTP, его можно вызывать, поэтому он относительно широко используется. У RPC также есть свои преимущества: протокол передачи более эффективен, а безопасность более контролируема. Если в компании существует единая спецификация разработки и единая структура обслуживания, ее преимущество в эффективности разработки будет более очевидным. Все зависит от реальных условий собственного технического накопления и их собственного выбора. Метод асинхронного обмена сообщениями особенно широко используется в распределенных системах. Он может не только уменьшить связь между вызывающими службами, но также действовать как буфер между вызовами, гарантируя, что очередь сообщений не перегружает вызываемого абонента и в то же время гарантирует, что поток сообщений не будет перегружен. вызывающая сторона. Вы можете улучшить качество обслуживания и продолжать делать то, что должны делать, не замедляя фоновую производительность. Однако цена, которую вам придется заплатить, — это ослабление согласованности и необходимость принять конечную согласованность данных. Кроме того, фоновой службе обычно необходимо достичь идемпотентности, поскольку отправка сообщений обычно повторяется из соображений производительности (чтобы гарантировать); что сообщение получено и получение его только один раз является большим испытанием на производительность); наконец, необходимо ввести независимого брокера. Если внутри компании нет накопления технологий, это также станет большой проблемой для распределенного управления брокером.

3. Как их найти при таком большом количестве услуг?

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

клиент.

  • клиент делает: Преимущество в том, что структура проста.,Гибкое расширение,Зависит только от регистратора Служить. Недостаток заключается в том, что клиенту приходится сохранять все адреса.,иметь техническая трудность,Как правило, крупные компании имеют развитую внутреннюю структуру.,напримерDubbo。
  • Сервер DO: Преимущество — простота,Все Служить для регулировки стойкиресепшен использовать прозрачный,в целомсуществоватьнебольшая компаниясуществоватьоблако Служить Развернуть наизотвечатьиспользовать Выбиратьиспользоватьиз Более。
4. При таком большом количестве служб, что мне делать, если служба выйдет из строя?

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

  • Механизм повтора
  • Ограничение тока
  • автоматический выключатель
  • балансировка нагрузки
  • Понижение версии (локальный кеш)

3. В чем разница между распределенными и микросервисами?

Распространение означает разделение огромной системы на несколько модулей. Это то же самое, что и микросервисы. Это требует разделения системы и развертывания ее на разных машинах, поскольку одна машина может не выдержать такого большого объема доступа, или в другом. Другими словами, чтобы поддерживать такое огромное давление доступа, вам необходимо приобрести сервис со сверхвысокой производительностью. Сервер, его финансовая стоимость очень высока. С такими бюджетами можно приобрести множество обычных серверов. Каждый модуль распределенной системы взаимодействует с данными через интерфейсы. По сути, распределенная — это тоже своего рода микросервис, поскольку модули разбиты на независимые. устройства предоставляют интерфейсы для вызова, в чем же их существенное отличие? Их существенное различие отражено в «цели». Что такое цель? Это означает, используете ли вы распределенную архитектуру или архитектуру микросервиса. Какова ваша конечная цель и какую цель вы хотите достичь? Какова цель распределенной архитектуры? Это означает, что количество посещений слишком велико для одной машины, или из-за проблем с затратами для завершения развертывания службы необходимо использовать несколько машин; И какова цель микросервисов? Просто позвольте каждому модулю быть разделенным и не влиять друг на друга. Например, обновления модулей, ошибки или реконструкции не должны влиять на другие модули. Микросервисы могут быть развернуты на одной машине; Однако: распределенный — это тоже тип микросервиса, и микросервис тоже распределен;

4. Какова связь или разница между микросервисами и Spring Cloud?

Микросервис — это просто метод архитектуры проекта, архитектурная концепция или концепция, как и наша архитектура MVC, тогда Spring Cloud — это техническая реализация этого метода архитектуры;

5. Должны ли микросервисы использовать Spring Cloud?

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

6. Что такое весеннее облако?

Официальное объяснение: Spring Cloud — это упорядоченный набор серии фреймворков. Он использует удобство разработки Spring Boot, чтобы разумно упростить разработку инфраструктуры распределенной системы, такой как регистрация обнаружения служб, центр конфигурации, шина сообщений, балансировка нагрузки, автоматические выключатели, мониторинг данных и т. д., и все это можно сделать с помощью Стиль разработки Spring Boot для запуска и развертывания в один клик. Spring Cloud не изобретает велосипед. Он просто объединяет более зрелые и практичные сервисные платформы, разработанные различными компаниями, и повторно инкапсулирует их с помощью стиля Spring Boot, чтобы защитить сложные принципы конфигурации и реализации, и, наконец, предоставляет разработчикам возможности, созданные автором. набор инструментов для разработки распределенных систем, которые легко понять, легко развернуть и легко поддерживать.

7. Каковы преимущества и недостатки Spring Cloud?

преимущество:

  1. Служить Дробление разделения более мелкое,Способствует дублированию ресурсовиспользования,Помогает повысить эффективность разработки
  2. Можно более точно сформулировать планы оптимизации и улучшить ремонтопригодность системы.
  3. Архитектура микросервисов предполагает децентрализованное мышление,Служить использует упрощенные средства связи, такие как использоватьRestful.,Более легкий, чем ESB.
  4. Подходит для эпохи Интернета, цикл итерации продукта короче

недостаток:

  1. микросервисыизлишний,Высокие затраты на управление,Не способствует поддержанию системы
  2. Высокая стоимость разработки распределенной системы (отказоустойчивость, распределенные транзакции и т. д.) ставит перед командой большие задачи.

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

8. Знаете ли вы номер версии Spring Cloud?

Pring Cloud назван в честь станции метро в Лондоне, Англия, и выпускает повторяющиеся версии в виде букв названия станции метро от A до Z и так далее. SpringCloud — это комплексный проект, состоящий из множества подпроектов, каждый из которых имеет свой ритм выпуска. Чтобы управлять зависимостями версий между Spring Cloud и каждым подпроектом, публикуется список, который включает версию подпроекта, соответствующую определенной версии Spring Cloud. Чтобы избежать путаницы между номерами версий SpringCloud и номерами версий подпроектов, версии SpringCloud называются именами, а не номерами версий. Имена этих версий названы в честь станций лондонского метрополитена и соответствуют хронологическому порядку версий в соответствии с номерами версий. порядок алфавита. Например, Angel — это первая версия, а Brixton — вторая версия. Когда содержимое выпуска SpringCloud достигнет критической точки или будет устранена серьезная ошибка, будет выпущена версия «служебных выпусков», называемая версией SRX. Например, Greenwich.SR2 — это вторая версия SRX версии Greenwich. выпущен SpringCloud.

9. Какова зависимость между Spring Cloud и Spring Boot?

Официальные зависимости между версиями можно найти на официальном сайте: https://spring.io/projects/spring-cloud#overview. Более подробную версию можно найти: https://start.spring.io/actuator/info.

10. В чем разница между SpringBoot и SpringCloud?

  • Spring Boot фокусируется на быстрой и простой разработке отдельных микросервисов; Spring Cloud ориентирован на это; на Глобальные измикросервисы Координация и организация структуры управления,Он интегрирует и управляет отдельными микросервисами модулей разработки SpringBoot.,Предоставляется между различными микросервисами,Управление конфигурацией、Служить Обнаружить、разрушитель、маршрутизация、микроагент、автобус событий、глобальная блокировка、Кампания по принятию решений、Распределенные сессии и более интегрированный Служить
  • SpringBoot можно разрабатывать независимо без SpringCloud, но SpringCloud нельзя отделить от SpringBoot, который представляет собой отношение зависимости.
  • SpringBoot ориентирован на быструю и удобную разработку отдельных микросервисов SpringCloudсосредоточиться; Глобальная система управления.

11. В чем разница между Spring Cloud и Dubbo?

Spring Cloud

Dubbo

Метод вызова службы

Rest APi

RPC

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

Eureka、Zookeeper、Nacos、Consul

Zookeeper

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

Zuul、GateWay

Сторонняя интеграция

12. Каковы компоненты Spring Cloud?

  • Служить Обнаружить--Netflix Eureka
  • клиентбалансировка нагрузки--Netflix Ribbon
  • Автоматический выключатель – Netflix Hystrix
  • сервисный шлюз--Netflix Zuul
  • Распределенная конфигурация — Spring Cloud Config

13. Каково управление услугами Eureka?

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

14. Что такое регистрация сервиса Eureka?

Eureka принимает архитектуру дизайна CS, Eureka Server как Служить Функция регистрациииз Служитьустройство,это Служить Регистрационный центр. И из других микросервисов в системе makeuse Клиент Eureka подключается к Eureka Сервер и поддерживать пульсирующее соединение. Таким образом, персонал по техническому обслуживанию системы может пройти Eureka Server Чтобы отслеживать, нормально ли работает каждый микросервис в системе. существуют Служитьрегистрациииобнаружено, что существует Регистрационный центр. Когда сервер Служить запускается, он сохраняет текущий файл Служить. например Служить адрес, почтовый адрес и т. д. регистрируются в Регистрационный как псевдоним. центр вкл. Другая сторона (потребитель|Служить провайдеру) обращается к Регистрационному по этому псевдониму. Получите фактический адрес связи в центре, а затем реализуйте локальную настройку RPC. центр,Потому что это делаетиспользовать Регистрационный центр управляет отношениями зависимости между каждым Служитьи Служить (концепция управления Служить). В любой удаленной среде RPC будет существовать Регистрационный центр (хранилище Служить связанной с адресом информацией (адрес интерфейса))

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

Создайте кластерную среду и зарегистрируйте сервисы друг с другом.

16. Как Eureka получает служебную информацию?

Получено Служить Откройте для себя из пути,автоматическая сборкаDiscoveryClient,Просто настройте метод inuse

кодязык:javascript
копировать
 //Получить все
 List<String> services = discoveryClient.getServices();
 //Укажите имя Служить, чтобы получить соответствующую информацию
 List<ServiceInstance> instances = discoveryClient.getInstances("XIAOBEAR-CLOUD-PAYMENT-SERVICE");

17. Какой режим самозащиты у Эврики?

По умолчанию, если EurekaServer не получает контрольный сигнал экземпляра микросервиса в течение определенного периода времени, EurekaServer выйдет из экземпляра (по умолчанию 90 секунд). Однако при возникновении сбоя сетевого раздела (задержка, задержка, перегрузка) микросервис и EurekaServer не могут нормально взаимодействовать, и описанное выше поведение может стать очень опасным, поскольку сам микросервис на самом деле работоспособен и его не следует использовать в это время. микросервис должен быть отключен. Eureka решает эту проблему через «режим самозащиты» — когда узел EurekaServer теряет слишком много клиентов за короткий промежуток времени (может произойти сбой сетевого раздела), то этот узел переходит в режим самозащиты. В режиме самозащиты, Эврика Сервер защитит информацию в реестре служб и больше не будет отключать экземпляры служб. Философия его дизайна заключается в том, чтобы скорее сохранять ошибочную информацию о регистрации службы, чем слепо отключать любые потенциально исправные экземпляры службы. Одно предложение, чтобы объяснить: лучше жить, чем умереть. Подводя итог, можно сказать, что режим самозащиты — это мера безопасности для борьбы с сетевыми аномалиями. Его архитектурная философия заключается в том, чтобы сохранить все микросервисы одновременно (сохраняются как работоспособные, так и неработоспособные микросервисы), а не слепо отключать любые работоспособные микросервисы. Использование режима самозащиты может сделать кластер Eureka более надежным и стабильным.

18. Почему происходит самозащита Эврики?

Чтобы предотвратить нормальную работу EurekaClient, но сеть заблокирована от EurekaServer, EurekaServer не будет немедленно удалять службу EurekaClient.

19. Как отключить механизм самозащиты Эврики?

По умолчанию механизм самозащиты включен.

Его можно отключить через файл конфигурации👇

кодязык:javascript
копировать
 eureka:
   instance:
     hostname: eureka7001.com  #eurekaСервериз Имя экземпляра
   client:
     register-with-eureka: false   #falseВыразить неодобрение Регистрационный центр Зарегистрируйтесь.
     fetch-registry: false      #false означает, что вы Регистрационный центр, моя обязанность — поддерживать экземпляр Служить, нет необходимости извлекать Служить
     service-url:
       defaultZone: http://eureka7002.com:7002/eureka/
       #SETUPи Эврика Взаимодействие с сервером при запросе адреса Служить регистрации Служить необходимо полагаться на этот адрес.
   server:
     #Закройте механизм самозащиты, чтобы исключить возможность использования Служить вовремя
     enable-self-preservation: false
     eviction-interval-timer-in-ms: 1000

20. Что такое консул?

Consul — это система обнаружения и управления конфигурациями распределенных сервисов с открытым исходным кодом, разработанная HashiCorp с использованием языка Go. Обеспечивает управление услугами, центр конфигурации, шину управления и другие функции в микросервисной системе. Каждую из этих функций можно использовать индивидуально по мере необходимости или использовать вместе для создания комплексной сети служб. Короче говоря, Consul предоставляет комплексное решение сети служб. У него много преимуществ. В том числе: на основе протокола raft, относительно простой; поддерживает проверку работоспособности, поддерживает протоколы HTTP и DNS; поддерживает кластер WAN между центрами обработки данных, обеспечивает кросс-платформенный интерфейс, поддерживает Linux, Mac, Windows;

21. Каковы особенности Консула?

  • Служить обнаружение: предоставляет два метода обнаружения Служить: HTTP и DNS.
  • Мониторинг работоспособности: поддержка нескольких методов, индивидуальный мониторинг сценариев Http, TCP, Docker и Shell.
  • Хранение KV: метод хранения ключа и значения
  • Мульти-центр обработки данных: управлениемульти-центр обработки данных
  • Визуальный веб-интерфейс

22. Eureka, Consul и Zookeeper — центры регистрации. В чем различия?

Eureka

Consul

Zookeeper

язык

Java

Go

Java

CAP

AP

CP

CP

Проверка работоспособности сервиса

Настраиваемая поддержка

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

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

Внешний интерфейс

HTTP

HTTP/DNS

клиент

Spring Cloud

Может быть интегрирован

Может быть интегрирован

Может быть интегрирован

CAP
  • C: консистенция (сильная консистенция)
  • А: Доступность
  • P: Partition Tolerance (отказоустойчивость раздела)

23. Что такое лента «Весеннее облако»?

Spring Cloud Лента основана на Netflix Ribbonвыполнитьизнаборклиентбалансировка нагрузкиизинструмент。 Проще говоря, Ribbon — это проект с открытым исходным кодом, выпущенный Netflix. Его основная функция — обеспечение балансировки клиентского программного обеспечения. алгоритм нагрузки и Служитьиспользовать. Компонент Ribbonклиент предоставляет ряд полных элементов конфигурации, таких как тайм-аут соединения, повтор и т. д. Проще говоря, Load указан в существующем файле конфигурации. Для всех машин, находящихся за балансировщиком (сокращенно LB), Ribbon автоматически поможет вам подключиться к этим машинам на основе определенных правил (таких как простой опрос, случайные соединения и т. д.).

24. Что такое балансировка нагрузки LB?

Проще говоря, запросы пользователя равномерно распределяются по нескольким сервисам для достижения системы HA (высокая доступность).

25. В чем суть ленты?

Лента — это балансировка нагрузки + вызов RestTemplate.

26. Алгоритм балансировки нагрузки ленты, вы его понимаете?

Алгоритм балансировки нагрузки: Количество запросов к остальному интерфейсу % Общее количество кластеров серверов = Фактический индекс местоположения вызывающего сервера. Отсчет оставшегося интерфейса начинается с 1 после каждого перезапуска службы.

кодязык:javascript
копировать
 List<ServiceInstance> instances = discoveryClient.getInstances("XIAOBEAR-CLOUD-PAYMENT-SERVICE");
 нравиться:  List [0] instances = 127.0.0.1:8002
    List [1] instances = 127.0.0.1:8001

8001+ 8002 объединены в кластер. Всего у них 2 машины и общее количество кластеров 2. По принципу алгоритма опроса:

Когда общее количество запросов равно 1: 1% 2 =1 и соответствующая позиция индекса равна 1, то полученный адрес службы равен 127.0.0.1:8001.

Когда общее количество запрошенных цифр равно 2:2%2=0 и соответствующая позиция индекса равна 0, то полученный адрес службы равен 127.0.0.1:8002.

Когда общее количество запросов равно 3:3%2=1 и соответствующая позиция индекса равна 1, то полученный адрес службы равен 127.0.0.1:8001.

Когда общее количество запрошенных цифр равно 4: 4% 2 =0 и соответствующая позиция индекса равна 0, то полученный адрес службы равен 127.0.0.1:8002.

И так далее...

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

  • RoundRobinRule (стратегия опроса): опрос, выберите по порядку
  • RandomRule (случайная стратегия): Случайным образом выбрать Служить
  • RetryRule (стратегия повторных попыток): сначала следуйте RoundRobinRule. приобретение стратегии Служить,Если приобретение Служить не удалось,Затем повторите попытку в течение указанного времени.,Получите доступ киспользоватьиз Служить
  • RestAvailableRule(стратегия минимального подключения):Первый фильтр находится в состоянии из-за множественных ошибок доступа.разрушитель Статус поездкииз Служить,Затем выберите минимум параллелизма из Служить
  • AvailabilityFulteringRule (политика, чувствительная к доступности): сначала отфильтруйте неисправные экземпляры, а затем выберите экземпляр с наименьшим объемом параллелизма.
  • WeightedResponseTimeRule (взвешенная стратегия): расширение RoundRobinRuleиз,Чем выше скорость ответа, тем больший вес имеет выбор экземпляра.,Тем проще выбраться. Принцип его реализации заключается в,Просто начните использовать стратегию опроса и запустите таймер.,Среднее время ответа всех провайдеров Служить собирается за каждый период времени.,Затем присвойте вес каждому провайдеру Служить.,Чем выше вес, тем больше вероятность быть выбранным.
  • ZoneAvoidanceRule (политика, чувствительная к зоне): правило по умолчанию.,Расположение сервера комплексного определения производительности и сервера и возможность исполь зовать выбор пола Служить устройство

28. Каков основной принцип реализации ленты?

Лента позволяет использоватьdiscoveryClient для чтения целевой информации из Регистрационного центра.,Подсчет запросов для одного и того же интерфейса,Используйте алгоритм «использовать% остатка» для получения целевого индекса Служитькластер.,Вернитесь, чтобы получить информацию о цели Служить.

29. В чем разница между локальным клиентом балансировки нагрузки Ribbon и балансировкой нагрузки сервера Nginx?

  • Nginxда Служитьустройствобалансировка нагрузка, клиент Все запросы будут переданы nginx, а затем nginx перенаправит запрос. то есть балансировка нагрузку реализует Сервериз.
  • Ribbonместныйбалансировка нагрузки,существоватьнастраиватьиспользоватьмикросервисы Время интерфейса,встречасуществовать Регистрационный Регистрационная информация списка Служить получается из центра, а затем кэшируется локально в JVM, так что существующие локально реализуют технологию удаленного Служить использовать RPC.

28. Что такое симулирование весенних облаков?

Feign — это декларативный веб-сервис. Использование Feign позволяет писать веб-страницы. Сервисклиент проще. Способ использования — определить интерфейс Служить, а затем добавить к нему аннотации. Feign также поддерживает подключаемые кодеры и декодеры. Весна Облако инкапсулирует Feign, делая его поддерживающим Spring. Стандартные аннотации MVC и HttpMessageConverters. Feign можно комбинировать с Eureka и Ribbon, чтобы использовать с поддержкой балансировки. нагрузки

29. В чем разница между Feign и OpenFeign?

Feign

OpenFeign

Притворись да Весна Компонент Cloud представляет собой облегченный RESTful HTTP-сервис. Feign имеет встроенную ленту и используется для клиентбалансировки; нагрузки,идтинастраиватьиспользовать Служить Регистрационный центриз Служить. Способ использования Feigniz: используйте аннотацию Feigniz для определения интерфейса, настройте спользовать Этот интерфейс можно настроить Использовать Служить Регистрационный центриз Служить

OpenПритворись да Весна Cloud СуществующийFeignиз основан на подтверждении с помощью аннотаций SpringMVC, таких как @RequesMapping и т. д. OpenFeignиз@FeignClient может анализировать интерфейс из аннотации SpringMVC из@RequestMapping и генерировать класс реализации через динамический прокси-сервер. Выполнять балансировку в классе реализации. нагрузкиинастраиватьиспользовать Чтоон Служить。

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId></dependency>

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

30. Знаете ли вы, как работает тайм-аут OpenFeign?

По умолчанию Feignклиент ждет только одну секунду.,Но обработка Сервера занимает более 1 секунды,Потому что Feignклиент больше не хочет ждать,Возврат напрямую Сообщить об ошибке。

Чтобы избежать такой ситуации, иногда нам нужно установить контроль Feignклиентизтайм-аут.

кодязык:javascript
копировать
 #Set feignклиенттайм-аут время (лента поддержки OpenFeign по умолчанию)
 ribbon:
   # относится к времени подключения Учреждать, что подходит для времени, когда оба конца подключены при нормальных условиях сети.
   ReadTimeout: 5000
   # относится к моменту, когда Учреждать подключено и прочитано с устройства Служить в доступный ресурсиспользоватьиз
   ConnectTimeout: 5000

31. Что такое автоматический выключатель Hystrix?

Hystrix — это библиотека с открытым исходным кодом для борьбы с задержкой и отказоустойчивостью в распределенных системах.,существовать в распределенной системе,Многие зависимости неизбежно потерпят неудачу,напримертайм-аут、Аномалии и т.д.,Hystrix может гарантировать, что если зависимость пойдет не так,,Не приводит к общему отказу Служить,Избегайте каскадных сбоев,Повысить гибкость распределенных систем.

32. Какие методы использует Hystrix для реализации задержек и отказоустойчивости?

  • Запрос на перенос: используйте HystrixCommand для переноса логики вызова зависимостей, и каждая команда выполняется в независимом потоке. При этом используется «шаблон команды» в шаблонах проектирования.
  • Механизм отключения: когда определенная частота ошибок превышает определенный порог.,Hystrix может отключаться автоматически или вручную,Перестаньте на время просить об этом Служить.
  • Изоляция ресурсов: Hystrix поддерживает небольшой пул потоков (или семафор) для каждой зависимости. Если пул потоков заполнен,Запрос, отправленный зависимости, был немедленно отклонен.,вместо того, чтобы ждать в очереди,Это ускоряет определение неисправности.
  • Мониторинг: Hystrix может отслеживать операционные показатели и изменения конфигурации практически в реальном времени, такие как успехи, сбои, тайм-ауты и отклоненные запросы.
  • Механизм возврата: при сбое запроса происходит тайм-аут или отказ.,или Когда автоматический выключатель разомкнут,Выполнить резервную логику. Резервная логика предусмотрена самими разработчиками,Например, верните значение по умолчанию.
  • Самовосстановление: после включения автоматического выключателя на определенный период времени он автоматически переходит в «полуразомкнутое» состояние.

33. Вы понимаете лавинный эффект?

существоватьмикросервисыв архитектуре,Очень часто запрос требует передачи нескольких сообщений. Нравится клиент посетите АСлужить,иAСлужитьнуждатьсянастраиватьиспользоватьBСлужить,BСлужитьнуждатьсянастраиватьиспользоватьCСлужить,По сетевым причинам и собственным причинам человека,Если BSлужили или CSлужить не могут ответить вовремя,АСлужить будет заблокировано,Пока не ответит BCлужитьCCлужить. Если в это время большой наплыв запросов,,Ресурсы контейнера и потоков будут израсходованы.,Вызывает паралич Служить. Служитьи Служитьиззависимости,Неудачи распространяются,вызвать цепную реакцию,Это вызовет катастрофические и серьезные последствия для всей системы.,Вот и вседа Служить Винаиз“лавина”эффектотвечать。 Причины лавинного эффекта:

  • Единичный код Служитьиз сохраняет существующую ошибку
  • Резкий рост количества посещений по запросам привел к сбою Служить (например, крупные торговые центры и красные конверты, функции мгновенной распродажи).
  • Служить из Аппаратный сбой также может привести к неработоспособности некоторых Служитиспользовать

34. Понижение уровня сервиса, понимаете?

так называемый даунгрейд,Вот тогда тает некий Служить,Устройство «Служить» больше не будет настраиватьиспользовать,В это время клиент может самостоятельно подготовить локальный обратный вызов.,返回одининдивидуальный Значение по умолчанию。Это также можно понимать как метод сокрытия。 Понижение рейтинга произойдет

  • Программа работает ненормально
  • тайм-аут
  • Служить триггеры автоматического выключателя
  • пул потоков、Полный семафор также приведет к ухудшению качества работы Служить.

35. Сервисный выключатель, ты понял?

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

36. Вам понятен лимит обслуживания?

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

37. Рабочий процесс Hystrix?

серийный номер

действовать

1

создавать HystrixCommand (использоватьсуществоватьзависимостьиз Служить возвращает результат одной операции за раз) или HystrixObserableCommand (использоватьсуществоватьзависимостьиз Служить возвращает несколько результатов срабатывания раз) объект.

2

Команда выполнена. в HystrixComand Первые два метода выполнения, приведенные ниже, реализованы и HystrixObservableCommand Реализованы два последних метода выполнения: выполнить(): синхронное выполнение, возвращающее один объект результата из зависимой службы; или — это исключение, вызываемое при возникновении ошибки. очередь(): асинхронное выполнение, Возврат напрямую объект будущего, Он содержит Служить для возврата единственного результата в конце выполнения объекта.observe(): return Observable объект, он представляет собой действие из нескольких результатов, это Hot Наблюдаемый(независимо от «Источник событий» Есть «Абонент» опубликует мероприятие после того, как существусоздавать, так что для Hot Observable каждого «Абонент» Все это могло быть от «Источник событий» начал с половины пути и, вероятно, просто увидел весь частичный процесс). toObservable(): также вернет Observable объект, также представляет собой действие из нескольких результатов, но возвращает холодный Наблюдаемый (нет «Абонент» Событие не будет опубликовано, но будет ждать, пока не появится «Абонент» Событие будет опубликовано позже, поэтому для Cold Observable из подписчиков гарантированно будет виден весь процесс операции с самого начала).

3

Если функция кэширования запросов текущей команды включена и кэш команд задействован, кэшированный результат будет немедленно возвращен в форме объекта Observable.

4

Убедитесь, что автоматический выключатель разомкнут. Если автоматический выключатель разомкнут, Hystrix не выполнит команду и вместо этого будет перенаправлен на fallback логика обработки (раздел 8 шаг); если автоматический выключатель выключен, проверьте ресурс «Есть доступное использование» для выполнения команды (п. 5 шаг).

5

пул потоков/очередь запросов/Сумма сигналада Он полный?。Если команда зависит от Служитьиз Собственныйпул потоковиочередь запросов,Семафор (если пул потоков не используется) уже заполнен., Так Hystrix Не выполнит команду, Вместо этого он пересылается на fallback логика обработки (раздел8шаг).

6

Hystrix Метод запроса зависимых служб будет определен на основе написанного нами метода. HystrixCommand.run() : возвращает один результат или выдает исключение. HystrixObservableCommand.construct(): возвращает Observable Объект для выдачи нескольких результатов или через onError Отправить уведомление об ошибке.

7

Hystrix сообщит автоматическому выключателю об «успехе», «неуспехе», «отклонении», «тайм-ауте» и другой информации, а автоматический выключатель будет поддерживать набор счетчиков для подсчета этих данных. Автоматический выключатель будет использовать эту статистику, чтобы решить, следует ли размыкать автоматический выключатель для «выключения/короткого замыкания» запросов на зависимую услугу.

8

Если выполнение команды не удалось, Hystrix войдет fallback Попробуйте откатить обработку, Мы также обычно называем это действием «Понижение уровня сервиса». Следующие ситуации могут привести к ухудшению качества обслуживания: Шаг 4: Текущая команда находится в состоянии «предохранитель/короткое замыкание», а автоматический выключатель разомкнут. Шаг 5: Пул потоков текущей команды, Запросить очередь или Или когда семафор заполнен. Шаг 6: HystrixObservableCommand.construct() или HystrixCommand.run() Когда генерируется исключение.

9

При успешном выполнении команды Hystrix Он обработает результат Возврат напрямуюилидакObservable вернуться в форму.

tips:Если у нас нет командывыполнить Логика перехода на более раннюю версиюили ВОЗсуществовать В логике обработки перехода на более раннюю версию возникло исключение., Hystrix все равно вернет Observable объект, Но он не выдает никаких данных о результатах, но через onError Метод уведомляет команду о необходимости немедленно прервать запрос и отправляет исключение, вызвавшее сбой команды, вызывающей стороне через метод onError().

38. Что такое Весеннее Облако Зуул?

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

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

39. Каковы сценарии применения Zuul?

Внешнее воздействие, проверка разрешений, агрегирование сервисов, аудит журналов

40. В чем разница между шлюзом и фильтром?

Шлюз анализирует и фильтрует запросы для всех служб, а фильтр анализирует и фильтрует запросы для одной службы.

41. В чем разница между Zuul и Nginx?

Zuul — это Java-языковая реализация.,В основном предоставляет шлюз Служить для javaСлужить,В частности, существующая архитектура микросервисов может быть более гибкой и работать со шлюзом. Nginx реализован с использованием использованияCязык.,Лучшая производительность, чем Zuul,Но для реализации пользовательского действия вам необходимо быть знакомым с luayazyk.,Высокие требования к программистам,Можно использовать Nginx для Zuul Cluster.

42. Какие методы ZuulFilter обычно используются?

  • Run(): конкретная бизнес-логика фильтра.
  • mustFilter(): определить эффективность фильтра.
  • fifilterOrder(): порядок выполнения фильтра
  • fifilterType(): позиция перехвата фильтра

43. Что такое Spring Cloud GateWay?

Spring Cloud Gateway как Spring Cloud Шлюз в экосистеме, нацеленный на замену Зуул, весной Cloud В версиях 2.0 и выше нет поддержки новых версий Zuul. Для интеграции с последней высокопроизводительной версией 2.0 или выше по-прежнему используется Zuul. 1.x Старая версия режима без реактора. Чтобы улучшить производительность шлюза, SpringCloud Шлюз реализован на основе платформы WebFlux, а нижний уровень платформы WebFlux использует высокопроизводительную структуру связи в режиме Reactor Netty. Spring Cloud Цель Gateway — предоставить единый метод маршрутизации, основанный на Filter Цепной метод обеспечивает основные функции шлюза, такие как: безопасность, мониторинг/индикаторы и ограничение тока.

44. Почему мы выбрали GateWay?

  1. Netflix ненадежен и его публикация задерживается Поскольку Zuul1.0 вошел в стадию обслуживания, а Gateway был разработан командой SpringCloud, это дочерний продукт, которому можно доверять. Более того, многие функции Zuul очень просты и удобны в использовании. Шлюз разработан на основе асинхронной неблокирующей модели, поэтому о производительности можно не беспокоиться. Хотя Netflix уже выпустил последнюю версию Zuul 2.x, у Spring Cloud, похоже, нет планов по интеграции. Более того, компоненты, связанные с Netflix, объявили, что вступили в период технического обслуживания; каково их будущее? Учитывая все аспекты, Gateway является идеальным выбором шлюза.
  2. Spring Cloud GateWayимеет множество функций
    • На основе весны Framework 5, Project Reactor и Spring Boot 2.0 строить;
    • Динамическая маршрутизация: возможность сопоставления любого атрибута запроса;
    • Можно указать для маршрутизации Предикат (утверждение)и Фильтр;
    • Встроенная функция автоматического выключателя Hystrix;
    • интегрированный Spring Cloud Служить Обнаружить Функция;
    • легко писать Предикат (утверждение)и Фильтр;
    • Запрос функции «Ограничение тока»;
    • поддерживать перезапись пути.

45. В чем разница между Spring Cloud Gateway и Zuul?

  1. Zuul 1.x — это API-шлюз, основанный на блокировке ввода-вывода.
  2. Zuul 1.x На основе сервлета 2. 5. Makeиспользуйте блокирующую архитектуру, она не поддерживает длинные соединения (такие как WebSocket) Zuul из шаблонов проектирования и Nginx с каждым разом становится все более похожим I/ O действие выбирает выполнение из рабочего потока, а поток запроса блокируется до тех пор, пока рабочий поток не завершится, но разница в том, что Nginx Используйте С++ Реализация, Зуул использовать Java осознавать, пока JVM Будет ситуация, когда первая загрузка будет медленной, из-за чего Zuul Производительность относительно низкая.
  3. Zuul Концепция 2.x является более продвинутой и должна основываться на неблокирующем иподдержании длинного соединения Netty, но Spring Cloud в настоящее время не имеет интеграции. Зуул Производительность 2.x лучше, чем Zuul 1.x Есть большое улучшение. Что касается производительности, согласно официальным тестам производительности, Spring Cloud Gateway из RPS (запросов в секунду) — Zuul из 1. 6 раз.
  4. Spring Cloud Gateway Учреждать существовать Spring Framework 5、 Project Reactor и Spring Boot 2 выше, Makeuse неблокирующий API。
  5. Spring Cloud Gateway возвращаться поддерживать WebSocket, И Spring, тесно интегрированный, имеет лучший опыт разработки.

46. ​​Рабочий процесс Spring Cloud GateWay?

клиент К Spring Cloud Gateway Сделайте запрос. затем в Gateway Handler Mapping Найдите маршрут, соответствующий запросу, и отправьте его по адресу Gateway Web Handler。 Handler Затем отправьте запрос нашему фактическому сервису через указанную цепочку фильтров для выполнения бизнес-логики, а затем вернитесь. Пунктирная линия между фильтрами связана с тем, что фильтры могут выполнять бизнес-логику до («до») или после («после») отправки прокси-запросов. Фильтры типа «pre» могут выполнять проверку параметров, проверку разрешений, мониторинг трафика, вывод журналов, преобразование протоколов и т. д. В фильтре типа «пост» вы можете изменять содержимое ответа и заголовки ответа, вывод журнала, мониторинг трафика и т. д., что играет очень важную роль. основная логика:Переадресация маршрутов + цепочка фильтров выполнения

47. Два способа настройки шлюза Spring Cloud GateWay?

  • конфигурация Yaml server: port: 9527 spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/selectOne/** # Утвердить, что путь соответствует маршрутизации - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации
  • кодсерединаинъекцияRouteLocatorизBean @Configuration public class GateWayConfig { @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder routeBuilder){ return routeBuilder.routes().route("xiaobear-config",r -> r.path("/spring-cloud-gateway-configuration").uri("https://www.bilibili.com/video/BV18E411x7eT")).build(); } }

48. Какие методы утверждения обычно используются в Spring Cloud GateWay?

  • After Route Predicate Фабрика: указывает, что доступ разрешен только в моменты времени в этом часовом поясе, а формат времени — Java. 8 новых функций в формате часового пояса. ZonedDateTime zbj = ZonedDateTime.now(); // Часовой пояс по умолчанию ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York")); // использовать Укажите часовой пояс, чтобы получить текущее время spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - After=2021-05-24T15:17:53.623+08:00[Asia/Shanghai] # Утвердить, что путь соответствует маршрутизации
  • Before Route Predicate Завод: Доступ разрешен только до наступления времени существования. spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - Before=2021-05-24T15:17:53.623+08:00[Asia/Shanghai] # Утвердить, что путь соответствует маршрутизации
  • Between Route Predicate Фабрика: существование между двумя spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - Between=2021-05-24T15:17:53.623+08:00[Asia/Shanghai], 2021-05-24T15:30:53.623+08:00[Asia/Shanghai] # Утвердить, что путь соответствует маршрутизации
  • Cookie Route Predicate Factory:Cookie Route Предикат требует двух параметров, один из них Cookie name , одно из них является регулярным выражением. Правило маршрутизации получит соответствующее Cookie name Значение и регулярное выражение для соответствия. Если совпадение есть, маршрутизация будет выполнена. Если совпадений нет, она не будет выполнена. spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - Between=2021-05-24T15:17:53.623+08:00[Asia/Shanghai], 2021-05-24T15:30:53.623+08:00[Asia/Shanghai] # Утвердить, что путь соответствует маршрутизации
  • Header Route Predicate Фабрика: два параметра: один — это имя атрибута и регулярное выражение, а значение атрибута и регулярное выражение будут выполнены, если они совпадают. spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - Header=X-Request-Id, \d+ # Заголовок запроса должен иметь атрибут X-Request-Id, а значение должно быть целым числом или регулярным выражением.
  • Host Route Predicate Factory:Host Route Predicate Получает набор параметров, список совпадающих доменных имен, этот шаблон представляет собой ant Разделитель из шаблона, использовать как разделитель. Он соответствует правилу по адресу хоста, как указано в параметре. spring: application: name: xiaobear-cloud-gateway cloud: gateway: routes: - id: payment_routh2 #payment_route #маршрутизацияизID, фиксированного правила нет, но он должен быть уникальным. Рекомендуется совпадать с именем Служить. uri: lb://XIAOBEAR-CLOUD-PAYMENT-SERVICE #uri: http://localhost:8001 #Укажите адрес Служитьизмаршрутизации после сопоставления predicates: - Path=/payment/payment/lb/** # Утвердить, что путь соответствует маршрутизации - Host=**.xiaobear.com # Утвердить, что путь соответствует маршрутизации

Для остальных посетите официальный сайт: https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories.

Подвести итог:PredicateСразудадлявыполнитьодин组匹配规则,Пусть запрос найдет нужноеотвечатьизRouteПроцесс

49. Что такое фильтр Spring Cloud GateWay?

Фильтры маршрутизации можно использовать для изменения входящих HTTP-запросов и возвращаемых HTTP-ответов. Фильтры маршрутизации могут указывать только маршруты для использования. Spring Cloud Gateway имеет множество встроенных фильтров маршрутизации, каждый из которых генерируется фабричным классом GatewayFilter.

50. Какова классификация фильтров Spring Cloud GateWay?

Классификация по жизненному циклу

  • Pre
  • Post

Классифицировано по типу

  • GatewayFilter Factories
  • Global Filters

51. Как настроить глобальный фильтр Spring Cloud GateWay?

Настроитьобщая ситуацияфильтрустройствоGlobal Filters В основном для реализации двух интерфейсов implements GlobalFilter,Ordered В конкретных случаях см.: Пример руководства.

52. Что такое конфигурация Spring Cloud?

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

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

53. Какова роль Spring Cloud Config?

  • Централизованное управление файлами конфигурации
  • Различные конфигурации для разных сред,Динамическое обновление конфигурации,Развертывание по среде,например/dev、/test、/prod、/beta、/release
  • Динамическая настройка конфигурации во время выполнения,Больше не нужно писать файлы конфигурации на каждом развертывании с компьютера.,Служить будет единообразно извлекать и настраивать свои собственные данные из центра конфигурации.
  • При изменении конфигурации Служить не требуется перезапуск, чтобы обнаружить изменения конфигурации и отреагировать на новую конфигурацию.
  • Предоставлять информацию о конфигурации в виде интерфейса REST.
  • Доступ к Post и Curl можно обновить.

54. Как Spring Cloud Config читает файл конфигурации?

кодязык:javascript
копировать
 /{application}/{profile}[/{label}]
 /{application}-{profile}.yml
 /{label}/{application}-{profile}.yml
 /{application}-{profile}.properties
 /{label}/{application}-{profile}.properties

в“отвечатьиспользоватьпрограмма”какSpringApplicationсерединаизspring.config.nameинъекция(то есть рутинаSpring Bootотвечатьиспользоватьпрограммасередина Обычно“отвечатьиспользоватьпрограмма”),«Профиль» — активный профиль (или список атрибутов, разделенных запятыми).,«label» — необязательная метка изgit (по умолчанию — «master»)

метка: филиал

имя: имя службы

профили: среда (dev/test/prod)

55. Как динамически обновлять файл конфигурации, когда Spring Cloud Config изменяет его?

СотрудничатьSpring Cloud Busвыполнить Конфигурацияиздинамичныйизобновить

56. Что такое шина сообщений Spring Cloud Bus?

Spring Cloud Шина соединяет распределенные системы и узлы с облегченными брокерами сообщений. Это можно использовать для широковещательной передачи изменений состояния (например, изменений конфигурации) или других команд управления. Ключевая идея заключается в том, что Bus похож на расширение Spring. Bootотвечатьиспользоватьпрограммаизраспределенное выполнениеустройство,Но его также можно использовать как канал связи между соответствующими программами. Единственная текущая реализация — включить использование брокера AMQP в качестве транспорта.,Но тот же самый базовый набор функций (есть некоторые возвращаться в зависимости от трансмиссии) существуют и другие трансмиссии из дорожной карты.

57. Как Spring Cloud Bus динамически обновляет глобальные трансляции?

  • выгодаиспользовать шину сообщений запускает клиент/шину/обновление,И обновить все конфигурации клиента.
  • Шина сообщений запускает конечную точку СерверConfigServer из/bus/refresh.,И обновите все конфигурации клиентов.

рекомендую:второйиндивидуальный思想更合适один点,Первый не подходит по следующим причинам:

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

58. Как Spring Cloud Bus динамически обновляет уведомления с фиксированной точкой?

Я не хочу уведомлять обо всех обновлениях, а просто хочу обновить часть конфигурации. Формула следующая👇. http://localhost:Номер порта центра конфигурации/актуатора/bus-refresh/{назначение} Запросы на шину/обновление больше не отправляются конкретным экземплярам службы, а для настройки сервер и указать необходимость обновления конфигурации из Служили экземпляру через класс параметров назначения Пример. В качестве примера возьмем обновление клиента конфигурации, работающего на порту 3355.

  • curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"

59. Что такое драйвер сообщений Spring Cloud Stream?

Скрывает различия в базовом промежуточном программном обеспечении сообщений, снижает затраты на переключение и унифицирует модель программирования сообщений; облегченную управляемую событиями структуру микросервисов, которая может использовать простую декларативную модель для отправки и получения сообщений, в основном реализованную как Apache Kafka и RabbitMQ;

60. Почему Spring Cloud Stream может объединить основные различия?

существуют без понятия связующего из футляра,Мы из SpringBoot должны использовать непосредственно промежуточное программное обеспечение для обмена сообщениями.,Поскольку каждое промежуточное программное обеспечение сообщений создается с разными первоначальными намерениями,,Будут большие различия в деталях их реализации при определении связующего в качестве среднего слоя.,идеальновыполнить ПонятноДолжны быть изолированы между деталями программы и промежуточного программного обеспечения сообщений.。通过Котвечатьиспользоватьпрограмма暴露统одинизChannelряд,делатьотвечатьиспользоватьпрограмма不нуждаться再考虑各种不同изинформациясерединапромежуточное программное обеспечениевыполнить。Определив связующее Binderкак средний слой,Реализована изоляция между прикладной программой и деталями промежуточного программного обеспечения сообщений.

61. Как Spring Cloud Stream решает проблему повторного потребления и устойчивости?

Добавить атрибуты группыGroup,микросервисыотвечатьиспользовать放置于同одининдивидуальныйGroupсередина,Это гарантирует, что сообщение будет использовано одним из приложений только один раз. Различные группы могут потреблять,Соревнования будут проводиться внутри одной группы.,Только один из них можно съесть.

62. Что такое Сыщик Весенних Облаков?

Spring Cloud Sleuth предоставляет комплексное решение для отслеживания. Он предоставляет решения для отслеживания в распределенных системах и совместим с zipkin.

Хорошо, на этом сегодняшний рассказ закончен. Я запомнил еще кое-что. Вот краткое изложение колонки вопросов для собеседования.

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