предисловие
Знания о Spring Cloud обобщают карту разума, чтобы поделиться с вами
1. Что такое Spring Cloud?
Стартовое приложение Spring для потоковой передачи в облаке — это приложение интеграции Spring для Spring Boot, которое обеспечивает интеграцию с внешними системами. Spring cloud Task — недолговечная среда микросервисов для быстрого создания приложений, выполняющих ограниченную обработку данных.
2. Каковы преимущества использования Spring Cloud?
При разработке распределенных микросервисов с помощью Spring Boot мы сталкиваемся со следующими проблемами.
(1) Сложность, связанная с распределенными системами — эти накладные расходы включают проблемы с сетью, задержки, проблемы с пропускной способностью, проблемы с безопасностью.
(2) Обнаружение служб. Инструменты обнаружения служб управляют тем, как процессы и службы в кластере находят и взаимодействуют друг с другом. Он включает каталог служб, в котором службы зарегистрированы, а затем могут находить службы в этом каталоге и подключаться к ним.
(3) Избыточность — проблемы избыточности в распределенных системах.
(4) Балансировка нагрузки. Балансировка нагрузки улучшает распределение рабочих нагрузок между несколькими вычислительными ресурсами, такими как компьютеры, компьютерные кластеры, сетевые каналы, центральные процессоры или диски.
(5) Проблемы с производительностью Проблемы с производительностью, вызванные различными операционными расходами.
(6) Требования к развертыванию сложных навыков развития.
3. Что означает регистрация и обнаружение службы? Как реализовано Spring Cloud?
Когда мы запускаем проект, мы обычно делаем всю настройку в файле свойств. Добавление и изменение этих свойств усложняется по мере разработки и развертывания большего количества служб. Некоторые услуги могут быть отключены, а некоторые местоположения могут измениться. Изменение свойств вручную может создать проблемы. В этой ситуации может помочь регистрация и обнаружение службы Eureka. Поскольку все сервисы зарегистрированы на сервере Eureka, а поиск осуществляется путем обращения к серверу Eureka, нет необходимости заниматься какими-либо изменениями и обработкой местоположений сервисов.
4. В чем смысл балансировки нагрузки?
В вычислениях балансировка нагрузки улучшает распределение рабочей нагрузки между несколькими вычислительными ресурсами, такими как компьютеры, компьютерные кластеры, сетевые каналы, центральные процессоры или диски. Балансировка нагрузки направлена на оптимизацию использования ресурсов, максимизацию пропускной способности, минимизацию времени отклика и предотвращение перегрузки любого отдельного ресурса. Использование нескольких компонентов для балансировки нагрузки, а не одного, может повысить надежность и доступность за счет избыточности. Балансировка нагрузки обычно включает специализированное программное или аппаратное обеспечение, такое как многоуровневые коммутаторы или серверные процессы системы доменных имен.
5. Что такое Хайстрикс? Как достигается отказоустойчивость?
Hystrix — это отказоустойчивая и отказоустойчивая библиотека, предназначенная для изоляции точек доступа к удаленным системам, службам и сторонним библиотекам, прекращения каскадных сбоев, когда сбои неизбежны, и обеспечения отказоустойчивости в сложных распределенных системах. Как правило, для систем, разработанных с использованием архитектуры микросервисов, задействовано множество микросервисов. Эти микросервисы взаимодействуют друг с другом. Рассмотрим следующие микросервисы
Предположим, что если микросервис 9 на приведенной выше диаграмме выйдет из строя, то, используя традиционный подход, мы будем распространять исключение. Но это все равно крашит всю систему. Эта проблема усложняется по мере увеличения количества микросервисов. Количество микросервисов может достигать 1000. Здесь на помощь приходит hystrix. В этом случае мы задействуем метод Hystrix Fallback. У нас есть два сервиса employee-consumer, использующие сервис, предоставленный employee-consumer. Упрощенная схема показана ниже
Теперь предположим, что служба, предоставленная сотрудником-производителем, выдает исключение по причинам. В этом случае мы определяем резервный метод, используя Hystrix. Этот резервный метод должен иметь тот же тип возвращаемого значения, что и открытая служба. Если в предоставленной службе есть исключение, резервный метод вернет некоторое значение.
6. Что такое автоматический выключатель Hystrix? оно нам нужно?
По какой-то причине сотрудник-потребитель, предоставляющий услугу, выдает исключение. Используя Hystrix в этом случае, мы определяем резервный метод. Резервный метод возвращает некоторое значение по умолчанию, если в предоставленной службе возникает исключение.
Если исключение в методе firstPage() продолжает возникать, Hystrix вызовет вызов, и потребитель-служащий вместе пропустит метод firstPage и вызовет резервный метод напрямую. Назначение прерывателя цепи — дать время другим методам, которые может вызвать первый метод или метод первой страницы, и вызвать восстановление исключения. Что может случиться, так это то, что проблема, вызвавшая исключение, имеет больше шансов на восстановление при меньшей нагрузке.
7. Что такое Netflix Feign? Каковы его преимущества?
Feign — это связыватель на стороне клиента Java, вдохновленный Retrofit, JAXRS-2.0 и WebSocket. Первая цель Feign — унифицировать сложность знаменателя ограничений для http API, независимо от их стабильности. В примере «сотрудник-потребитель» мы использовали службу REST, предоставляемую emplo e-producer с использованием шаблона REST.
Но нам нужно написать много кода, чтобы выполнить следующие шаги.
1. Используйте ленту для балансировки нагрузки.
2. Получите экземпляр службы, а затем получите базовый URL-адрес.
3. Используйте шаблоны REST для использования сервисов. Предыдущий код выглядит следующим образом
@Controller
public class ConsumerControllerClient {
@Autowired
private LoadBalancerClient loadBalancer;
public void getEmployee() throws RestClientException, IOException {
ServiceInstance serviceInstance=loadBalancer.choose("employee-
producer");
System.out.println(serviceInstance.getUri());
String baseUrl=serviceInstance.getUri().toString();
baseUrl=baseUrl+"/employee";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response=null;
try{
response=restTemplate.exchange(baseUrl,
HttpMethod.GET, getHeaders(),String.class);
}
catch (Exception ex)
{
System.out.println(ex);
}
System.out.println(response.getBody());
}
}
Предыдущий код с возможностью исключений, таких как NullPointer, не был оптимальным. Мы увидим, как использовать Netflix Fe n, чтобы сделать звонки проще и чище. Feign также будет балансировать нагрузку по умолчанию, если в пути находится зависимость ленты Netflix.
8. Что такое Spring Cloud Bus? оно нам нужно?
Рассмотрим следующую ситуацию: у нас есть несколько приложений, которые считывают свойства с помощью Spring Cloud Config, а S ring Cloud Config считывает эти свойства из GIT.
В следующем примере несколько модулей производителей сотрудников получают зарегистрированные в Eureka свойства из модуля конфигурации сотрудников.
Что произойдет, если предположим, что свойство реестра Eureka в GIT изменено, чтобы указать на другой сервер Eureka. В этом случае нам придется перезапустить службу, чтобы получить обновленные свойства. Есть еще один способ использовать конечную точку/обновление актуатора. Но нам придется вызывать этот URL отдельно для каждого модуля. Например, если Employee Producer1 развернут на порту 8080, вызовите http://localhost:8080/refresh. То же самое для Employee Producer2 http://localhost:8081/refresh и так далее. Это опять хлопотно. Здесь в игру вступает Spring Cloud Bus.
Spring Cloud Bus предоставляет возможность обновлять конфигурацию в нескольких экземплярах. Итак, в приведенном выше примере, если мы обновляем Employee Producer1, все остальные необходимые модули обновляются автоматически. Это особенно полезно, если у нас запущен и работает микросервис. Это достигается подключением всех микросервисов к одному брокеру сообщений. Всякий раз, когда экземпляр обновляется, это событие подписывается на все микросервисы, прослушивающие этого брокера, и они также обновляются. Обновление до любого отдельного экземпляра может быть достигнуто с помощью endpoint/bus/refresh
9. Что такое микросервисы?
Микросервисная архитектура — это архитектурный шаблон или архитектурный стиль, который выступает за разделение одного приложения на набор небольших служб, каждая из которых работает в своем собственном независимом процессе, а службы координируют и взаимодействуют друг с другом.Сотрудничайте, чтобы предоставить пользователям максимальную ценность. Службы взаимодействуют друг с другом с помощью облегченного механизма связи (обычно RESTful API на основе HTTP).Каждая служба построена вокруг определенного бизнеса и может быть независимо построена в производственных средах, средах, подобных производственной, и т. д. Кроме того, следует избегать унифицированного и централизованного механизма управления службами.Для конкретной службы следует выбирать соответствующие языки и инструменты в соответствии с бизнес-контекстом для ее создания.Может быть очень легкое централизованное управление для координации этих служб. , сервисы могут быть написаны на разных языках и могут использовать разные хранилища данных.
10. Что такое сервисный автоматический выключатель? Что такое понижение уровня обслуживания
Механизм прерывателя цепи — это механизм защиты канала микросервиса для борьбы с лавинным эффектом. Когда микрослужба недоступна или время отклика слишком велико, служба будет понижена, а затем вызов микрослужбы узла будет прерван, а ответная информация об ошибке будет быстро возвращена. Когда обнаруживается, что ответ узла на вызов микрослужбы нормальный, ссылка на вызов восстанавливается. В фреймворке SpringCloud механизм фьюза реализован компанией Hystrix.Hystrix будет отслеживать статус вызова между микросервисами.Когда неудачный вызов достигает определенного порога, по умолчанию это 20 вызовов в течение 5 секунд.В случае сбоя будет активирован механизм фьюза .
Ухудшение качества обслуживания обычно рассматривается исходя из общей нагрузки. То есть, когда служба сломана, сервер больше не будет вызываться.В это время клиент может подготовить локальный резервный обратный вызов и вернуть значение по умолчанию. Таким образом, хотя уровень падает, его все еще можно использовать, что лучше, чем прямое зависание.
11. И Eureka, и zookeeper могут предоставлять функции регистрации и обнаружения сервисов, скажите, пожалуйста, в чем между ними разница?
Zookeeper гарантирует CP (C: согласованность, P: отказоустойчивость разделов), Eureka гарантирует AP (A: высокая доступность)
(1) При запросе в регистрационный центр списка услуг мы можем допустить информацию, возвращенную регистрационным центром несколько минут назад, но мы не можем допустить прямого отказа. То есть у функции регистрации сервиса высокие требования к высокой доступности, но в zk будет ситуация, когда мастер-нода потеряет связь с другими нодами из-за сбоя в сети, оставшиеся ноды перевыберут лидера. Проблема в том, что время выбора лидера слишком велико, 30~120с, а кластер zk недоступен в период выбора, из-за чего служба регистрации будет парализована в период выбора. В среде облачного развертывания весьма вероятно, что кластер zk потеряет главный узел из-за проблем с сетью.Хотя сервис можно восстановить, длительная недоступность регистрации, вызванная длительным временем выбора, недопустима.
(2) Eureka гарантирует удобство использования. Все узлы Eureka равны. Отказ нескольких узлов не повлияет на работу обычных узлов, а оставшиеся узлы по-прежнему могут предоставлять услуги регистрации и запросов. Когда клиент Eureka не может зарегистрироваться или обнаружить с помощью Eureka, он автоматически переключится на другие узлы.Пока один Eureka все еще доступен, служба регистрации может быть гарантированно доступна, но найденная информация может быть не последней. Кроме того, Eureka также имеет механизм самозащиты.Если более 85% узлов не имеют нормального пульса в течение 15 минут, то Eureka считает, что между клиентом и реестром произошел сбой сети.Следующие ситуации будут происходить:
①, Eureka не удаляет службы, срок действия которых истекает из-за того, что они долгое время не получали пульсацию, из списка регистрации.
②, Eureka по-прежнему может принимать запросы на регистрацию и запросы для новых услуг, но не будет синхронизироваться с другими узлами (то есть, чтобы убедиться, что текущий узел по-прежнему доступен)
③ Когда сеть стабильна, новая регистрационная информация текущего экземпляра будет синхронизирована с другими узлами. Поэтому Eureka может справиться с ситуацией, когда некоторые узлы теряют связь из-за сетевых сбоев, не парализуя весь микросервис, как Zookeeper.
12. В чем разница между SpringBoot и SpringCloud?
SpringBoot фокусируется на быстрой и простой разработке отдельного микросервиса.
SpringCloud — это глобальная структура координации и управления микросервисами, которая интегрирует и управляет отдельными микросервисами, разработанными SpringBoot, и обеспечивает управление конфигурацией, обнаружение сервисов, автоматические выключатели, маршрутизацию, микропрокси, интегрированные сервисы, такие как шина событий, глобальная блокировка, кампания по принятию решений, распределенные сеанс и т. д. SpringBoot может использовать проекты разработки независимо от SpringCloud, но SpringCloud неотделим от SpringBoot, который относится к отношениям зависимости.
SpringBoot фокусируется на быстрой и удобной разработке отдельного микросервиса, а SpringCloud фокусируется на глобальной структуре управления.
13. Что такое автоматический выключатель Hystrix? нам это нужно
По какой-то причине сотрудник-потребитель, предоставляющий услугу, выдает исключение. В случае использования Hystrix мы определяем резервный метод. Резервный метод возвращает некоторое значение по умолчанию, если в предоставленной службе возникает исключение.
Если исключение в методе firstPage() продолжает возникать, схема Hystrix будет прервана, и потребитель-служащий вообще пропустит метод firstPage и вызовет резервный метод напрямую. Назначение прерывателя цепи — дать время методу первой страницы или другим методам, которые может вызвать метод первой страницы, и вызвать восстановление исключения. Что может случиться, так это то, что проблема, вызвавшая исключение, имеет больше шансов на восстановление при меньшей нагрузке.
14. Расскажите о принципе реализации RPC
Прежде всего, должен быть модуль, который обрабатывает связь по сетевому соединению, который отвечает за установление соединения, управление и передачу сообщений. Во-вторых, должен быть модуль для кодирования и декодирования, потому что сетевое общение — это весь передаваемый байт-код, а используемые нами объекты должны быть сериализованы и десериализованы. Остальное клиентская и серверная части.Сервер выставляет сервисный интерфейс для открытия.Клиент вызывает прокси-реализацию сервисного интерфейса.Эта прокси-реализация отвечает за сбор данных,кодирование и передачу их на сервер и последующее ожидание результат вернуть.
15. Преимущества и недостатки микросервисов Расскажите о ямах, с которыми столкнулись при разработке проекта?
преимущество:
(1) Каждая услуга достаточно связна, а код легко понять.
(2) Высокая эффективность разработки, сервис делает только одну вещь, подходит для разработки в небольшой команде.
(3) Слабосвязанные, функционально значимые услуги.
(4) Его можно разрабатывать на разных языках и интерфейсно-ориентированном программировании.
(5) Простота сторонней интеграции
(6) Микросервисы — это просто код для бизнес-логики, и они не взаимодействуют с HTML, CSS или другими областями.
(7) Его можно гибко сопоставлять, подключая к публичным библиотекам/подключая к независимым библиотекам.
недостаток:
(1) Ответственность распределенных систем
(2) Возрастает сложность мультисервисной эксплуатации и обслуживания.
(3) Зависимости развертывания системы, затраты на межсервисную связь, согласованность данных, тестирование системной интеграции и мониторинг производительности.
16. В чем разница между весенним облаком и dbbo?
(1) Метод вызова службы dubbo — это RPC spri cloud Rest Api.
(2) В реестре даббо — это зоопарк, а весеннее облако — это эврика или зоопарк.
(3) Сервисный шлюз, сам dubbo не реализован и может быть интегрирован только с помощью других сторонних технологий. Springcloud имеет шлюз маршрутизации Zuul, который действует как сервер маршрутизации для распределения запросов потребителей. Springcloud поддерживает автоматические выключатели и отлично интегрируется с git. Файл конфигурации поддерживает версию Ряд элементов микросервисной архитектуры, таких как управление, обновление конфигурации реализации шины транзакций и автоматическая сборка сервиса.
17. Сравнение REST и RPC
(1) Основной недостаток RPC заключается в том, что зависимость между поставщиком услуг и вызывающим методом слишком сильна, необходимо определить интерфейс каждого микросервиса, а за счет непрерывного наследования и выпуска строгий контроль версий не вызовет конфликтов.
(2) REST — это облегченный интерфейс, между кодами для предоставления и вызова сервисов нет связи, и для спецификации требуется только соглашение.
18. Какой стек микросервисных технологий вы знаете?
Размеры (весеннее облако)
Разработка сервиса: springboot spring springmvc
Настройка и управление услугами: Archaiusm от Netfix, Diamond от Ali
Регистрация и обнаружение сервисов: Eureka, Zookeeper
Вызов службы: отдых RPC gRpc
Сервисный автоматический выключатель: Hystrix
Балансировка нагрузки службы: Лента Nginx
Вызов сервисного интерфейса: Fegin
Очередь сообщений: Kafka Rabbitmq activemq
Управление центром конфигурации служб: SpringCloudConfig
Маршрутизация службы (шлюз API) Zuul
Шина сообщений о событиях: шина SpringCloud
19. Как микросервисы взаимодействуют независимо друг от друга?
(1) Удаленные вызовы, такие как фиктивные вызовы, напрямую обращаются к другим службам через удаленные вызовы процедур.
(2) Промежуточное программное обеспечение сообщений
20. Как Springcloud реализует регистрацию службы?
(1) При публикации сервиса указать соответствующее имя сервиса и зарегистрировать сервис в центре регистрации (eureka zookeeper)
(2) Добавьте @EnableEurekaServer в реестр, используйте @EnableDiscoveryClient для служб, а затем используйте ленту или симулируйте для прямого вызова и обнаружения служб.
21. Разница между Eureka и Zookeeper
(1) Eureka берет AP CAP и фокусируется на доступности, а Zookeeper берет CP CAP, чтобы сосредоточиться на согласованности.
(2) Регистрационная служба Zookeeper парализована во время выборов, хотя служба со временем восстановится, во время выборов она не будет доступна.
(3) Механизм самозащиты Eureka приведет к тому, что услуги, срок действия которых истекает из-за отсутствия пульса в течение длительного времени, больше не будут удаляться из списка регистрации. Запросы на регистрацию и запросы для новых сервисов по-прежнему могут приниматься, но они не будут синхронизированы с другими узлами. Служба не будет парализована.
(4) Zookeeper имеет роли Лидера и Последователя, и все узлы Эврики равны.
(5) Zookeeper использует принцип выживания большинства, а reka использует механизм самозащиты для решения проблем разделения.
(6) Eureka — это, по сути, проект, а Zookeeper — это просто процесс.
22. Каков механизм самозащиты эврики?
Когда точка Eureka Server теряет связь слишком большого количества экземпляров за короткий промежуток времени (например, сбой сети или частые запуски и выключения клиента), узел переходит в режим самозащиты, защищает регистрационную информацию, больше не удалить регистрационные данные и автоматически выйти при восстановлении сбоя.Режим самозащиты.
23. Что такое лента?
Ribbon — это клиент балансировки нагрузки, который может хорошо контролировать поведение htt и tcp. feign по умолчанию интегрирует ленту.
24. Что такое фейгин? Каковы его преимущества?
(1) Feign использует аннотации на основе интерфейса
(2) Feign интегрирует ленту и имеет возможность балансировки нагрузки
(3) Интеграция Hystrix с возможностью объединения
использовать:
(1) Добавьте зависимости pom.
(2) Добавьте @EnableFeignClients в класс запуска.
(3) Определите интерфейс @FeignClient(name="xxx"), чтобы указать, какую службу вызывать
25. В чем разница между Ribbon и Feign?
(1) Лента вызывает другие сервисы, но по-разному.
(2) Отличается аннотация класса запуска, Ribbon — @RibbonClient, feign — @EnableFeignClients.
(3) Местоположение, указанное службой, отличается. Лента объявлена в аннотации @RibbonClient, а Feign объявлен с помощью @FeignClient в интерфейсе, определяющем абстрактный метод.
(4) Методы вызова разные. Лента должна сама создать http-запрос, имитировать http-запрос, а затем отправить его другим службам с помощью RestTemplate.Эти шаги довольно громоздки. Feign необходимо определить вызываемый метод как абстрактный метод.
26. Что такое Spring Cloud Bus?
Облачная шина spring соединяет распределенные узлы с облегченным брокером сообщений, который можно использовать для широковещательной передачи изменений в файлы конфигурации или для прямой связи со службами, а также для мониторинга.
Если файл конфигурации изменен, отправьте запрос, и все клиенты повторно прочитают файл конфигурации.
использовать:
(1) Добавить зависимости
(2) Настройте rabbitmq
27. Какова функция автоматического выключателя springcloud?
Когда служба вызывает другую службу по сетевым причинам или из-за собственных проблем, вызывающая сторона будет ждать ответа вызывающей стороны. Когда большее количество запросов службы к этим ресурсам вызывает ожидание большего количества запросов, возникает эффект домино (эффект лавины).
Выключатель находится в полностью разомкнутом состоянии: его нельзя вызвать определенное количество раз в течение определенного периода времени, и нет признаков восстановления после многократного контроля.Выключатель полностью разомкнут, после чего следующий запрос не будет запрашиваться сервис.
Полуоткрыт: имеются признаки восстановления в течение короткого периода времени Автоматический выключатель отправит несколько запросов в службу, и автоматический выключатель будет замкнут при нормальном вызове.
Закрыто: когда служба находится в нормальном состоянии, ее можно вызвать в обычном режиме.
28. Весенний облачный шлюз?
Spring Cloud Gateway — это платформа шлюза второго поколения, официально запущенная Spring Cloud, заменяющая шлюз Zuul. Как и трафик, шлюз играет очень важную роль в системе микросервисов.Общие функции шлюза включают маршрутизацию и пересылку, проверку разрешений и управление ограничением тока.
Для создания маршрута используется bean-компонент RouteLocatorBuilder.Помимо создания маршрута, RouteLocatorBuilder позволяет добавлять различные предикаты и фильтры.Смысл утверждения предикатов, как следует из названия, обрабатывается конкретными маршрутами в соответствии с определенными правилами запросов.Фильтры различные фильтры, которые используются для вынесения различных суждений и модификаций запроса.
29. Чем Eureka в качестве сервисного реестра лучше Zookeeper?
(1) Eureka гарантирует доступность и отказоустойчивость разделов, а Zookeeper гарантирует согласованность и отказоустойчивость разделов.
(2) Eureka также имеет механизм самозащиты.Если более 85% узлов не имеют нормального пульса в течение 15 минут, то Eureka считает, что произошел сетевой сбой между клиентом и реестром. Не парализуя всю службу регистрации, как зоопарк.
30. Что такое балансировка нагрузки ленты?
(1) Spring Cloud Ribbon — это набор средств балансировки клиентской нагрузки на основе ленты Netflix.
(2) Клиентский компонент ленты предоставляет ряд полных элементов конфигурации, таких как время ожидания подключения, повторная попытка и т. д. Проще говоря, это список всех машин, стоящих за Load Balancer (сокращенно LB) в файле конфигурации, и Ribbon автоматически поможет вам подключиться к этим машинам на основе определенных правил (таких как простой опрос, случайное подключение и т. д.). Мы также можем легко реализовать собственные алгоритмы балансировки нагрузки с помощью Ribbon.
31. Что может балансировка нагрузки ленты?
(1) Амортизировать запрос пользователя к нескольким службам
(2) Централизованный LB означает, что независимое средство LB (которое может быть аппаратным, например F5, или программным, например nginx) используется между потребителем и поставщиком услуги, и средство отвечает за передачу запроса на доступ. через определенную политику, пересылаемую поставщику услуги;
(3) Внутрипроцессный LB интегрирует логику LB в потребителя, который узнает, какие адреса доступны из сервисного реестра, и затем выбирает подходящий сервер из этих адресов.
Примечание: лента принадлежит внутрипроцессному LB, это просто библиотека классов, интегрированная в процесс-потребитель, и потребитель получает адрес поставщика услуг.
32. Что такое шлюз маршрутизации zuul
(1) Zuul включает в себя две основные функции: маршрутизацию и фильтрацию запросов: он отвечает за перенаправление внешних запросов к конкретным экземплярам микросервиса, что является основой для реализации единого входа для внешнего доступа, а функция фильтра отвечает за обработку запросов Процесс вмешательство является основой для реализации таких функций, как проверка запросов и агрегация услуг.
(2) Zuul и Eureka интегрированы, а сам Zuul зарегистрирован как приложение под управлением сервиса Eureka, и новости о других микросервисах получаются от Eureka одновременно, то есть доступ к микросервисам в будущем получается после скачков Zuul .
Примечание. Служба Zuul в конечном итоге будет зарегистрирована в Eureka для предоставления трех функций = прокси + маршрутизация + фильтрация.
33. Что может делать распределенный центр конфигурации?
(1) Централизованное управление файлами конфигурации, различные конфигурации в разных средах, динамические обновления конфигурации и развертывание в разных средах, таких как
dev/test/prod/beta/release
(2) Динамически настраивайте параметры во время работы, и больше не нужно записывать файлы конфигурации на машину, где развернута каждая служба, а служба будет извлекать и настраивать свою собственную информацию из центра конфигурации.
(3) Когда конфигурация изменяется, службе не нужно перезапускаться, чтобы воспринять изменение конфигурации и применить новую конфигурацию для предоставления информации о конфигурации в форме интерфейса REST.
34. Заметки, связанные с Hystrix
@EnableHystrix: включить предохранитель
@HystrixCommand(fallbackMethod=”XXX”): объявить обработчик отката XXX, когда аннотированный метод истечет (по умолчанию 0 миллисекунд), будет выполнена резервная функция и будет возвращено сообщение об ошибке.
35. И Eureka, и zookeeper могут предоставлять функции регистрации и обнаружения сервисов, скажите, пожалуйста, в чем между ними разница?
Zookeeper гарантирует CP (C: согласованность, P: отказоустойчивость разделов), Eureka гарантирует AP (A: высокая доступность)
(1) При запросе в регистрационный центр списка услуг мы можем допустить информацию, возвращенную регистрационным центром несколько минут назад, но мы не можем допустить прямого отказа. То есть у функции регистрации сервиса высокие требования к высокой доступности, но в zk будет ситуация, когда мастер-нода потеряет связь с другими нодами из-за сбоя в сети, оставшиеся ноды перевыберут лидера. Проблема в том, что время выбора лидера слишком велико, от 30 до 120 с, а кластер zk недоступен в период выбора, из-за чего служба регистрации будет парализована в период выбора. В среде облачного развертывания весьма вероятно, что кластер zk потеряет главный узел из-за проблем с сетью.Хотя сервис можно восстановить, длительная недоступность регистрации, вызванная длительным временем выбора, недопустима.
(2) Eureka обеспечивает доступность.Каждый узел Eureka равен.Сбой нескольких узлов не повлияет на работу обычных узлов, а оставшиеся узлы могут по-прежнему предоставлять услуги регистрации и запросов. Когда клиент Eureka не может зарегистрироваться или обнаружить с помощью Eureka, он автоматически переключится на другие узлы.Пока один Eureka все еще доступен, служба регистрации может быть гарантированно доступна, но найденная информация может быть не последней. Кроме того, в Eureka также есть механизм самозащиты: если более 85% узлов не имеют нормального пульса в течение 15 минут, то Eureka считает, что между клиентом и центром регистрации произошел сбой в сети, и следующие возникнут ситуации:
①, Eureka не удаляет службы, срок действия которых истекает из-за того, что они долгое время не получали пульсацию, из списка регистрации.
②, Eureka по-прежнему может принимать запросы на регистрацию и запросы для новых услуг, но не будет синхронизироваться с другими узлами (то есть, чтобы убедиться, что текущий узел по-прежнему доступен)
③ Когда сеть стабильна, новая регистрационная информация текущего экземпляра будет синхронизирована с другими узлами.
Поэтому Eureka вполне может справиться с ситуацией, когда некоторые узлы теряют связь из-за сетевых сбоев, не парализуя при этом весь микросервис вроде Zookeeper.
Наконец
Добро пожаловать в официальную учетную запись: Программисты следуют за ветром, получите сводку вопросов для собеседования по Java от ведущих производителей + руководство по обучению и мышлению для каждого уровня знаний + сводку основных знаний по Java в 300-страничном документе в формате pdf!