Говоря о разрыве схемы Springcloud напоминает мне о разрыве схемы на фондовом рынке в прошлом году. Я осознал много болезненных времен. Влияние случайного разрыва цепи на всю систему является катастрофическим. Ну, давайте поговорим о серьезных вопросах дальше.
Предохранитель
Лавинный эффект
В архитектурах микросервиса обычно есть несколько сервисных слоев. Недостаток базовой службы может привести к каскадным сбоям, что, в свою очередь, приводит к недоступной системе. Это явление называется эффектом службы лавины. Эффект Avalanche Service - это процесс, в котором недоступность «поставщика услуг» приводит к недоступности «потребителей услуг» и постепенно усиливает недоступность.
Если на рисунке ниже показано: A является поставщиком услуг, B является потребителем услуг A, а C и D являются потребителями услуг B. Недоступность причин недоступности B, и когда недоступность увеличивается в C и D, как снежный ком, формируется эффект лавины.
Circuit Breaker
Принцип предохранителя очень прост, как защитник перегрузки власти. Это может достичь быстрой неудачи. Если он обнаружит много аналогичных ошибок в течение определенного периода времени, он заставит свои последующие вызовы быстро отказываться и больше не доходиться до удаленного сервера, не позволяя приложению постоянно пытаться выполнять возможные операции с отказа, в результате чего приложение продолжит выполнять, не ожидая исправления ошибки, или потратить время на время ожидания до долгого времени. Предохранитель также может включить приложение диагностировать, была ли ошибка исправлена, и если она была исправлена, приложение попытается снова вызвать операцию.
Режим предохранителя похож на прокси, который может легко привести к неправильным операциям. Этот прокси может записать количество ошибок, которые произошли в последнем вызове, а затем решить использовать операцию разрешения для продолжения или немедленно вернуть ошибку.
Логика взаимного преобразования переключателей предохранителей заключается в следующем:
Предохранители являются последней линией защиты, чтобы защитить высокую доступность услуг.
Особенности Hystrix
1. Механизм выключателя цепи
Выключатель схемы легко понять. Когда команда Hystrix запрашивает отказы от обслуживания превышают определенную долю (по умолчанию 50%), выключатель схемы переключится на открытое состояние (Open). В настоящее время все запросы не будут выходить непосредственно, не отправляясь в сервисную службу. После того, как автоматический выключатель остается в открытом состоянии в течение периода времени (по умолчанию 5 секунд), он автоматически переключается на полуоткрытое состояние (полуоткрыть). В настоящее время будет оцениваться статус возврата следующего запроса. Если запрос будет успешным, автоматический выключатель переключится обратно в состояние замкнутой цепи (закрыто), в противном случае он переключится на открытое состояние (Open). Выключатель Hystrix походит как предохранитель в нашей домашней трассе. После того, как сервисная служба недоступна, автоматический выключатель будет напрямую отключить ссылку на запрос, чтобы избежать отправки большого количества недопустимых запросов, чтобы повлиять на пропускную способность системы. Выключатель схемы обладает способностью самоопределяться и восстанавливать.
2.fallback
Запасная сторона эквивалентна операции понижения. Для операций с запросами мы можем реализовать метод отступления. Когда исключение происходит в запрашиваемой обратной службе, можно использовать значение, возвращаемое методом отступления. Возвратное значение метода отступления обычно устанавливается значением по умолчанию или происходит из кэша.
3. Изоляция ресурсов
В Hystrix выделение ресурсов в основном достигается через пулы потоков. Обычно при его использовании мы делим несколько пулов потоков в соответствии с удаленной службой, которую мы называем. Например, команда, которая вызывает услуги продукта, помещается в пул потоков, и команда, которая вызывает службы учетной записи, помещается в пул потоков B. Основным преимуществом этого является то, что бегущая среда изолирована. Таким образом, даже если код, который вызывает сервис, ошибочен или пул потоков, который используется по другим причинам, он не повлияет на другие услуги системы. Тем не менее, стоимость состоит в том, что поддержание нескольких пулов потоков принесет дополнительную производительность накладных расходов в систему. Если у вас есть строгие требования к производительности, и вы уверены, что с клиентским кодом не возникнет проблем, вызывая Service, вы можете использовать сигнальный режим Hystrix (семафоры) для выделения ресурсов.
Файн Хистрикс
Поскольку автоматический выключатель работает только на конце сервисного вызова, нам нужно только изменить соответствующий код проекта Spring-Cloud-Consumer на основе примера кода в предыдущей статье. Поскольку Feign уже зависит от Hystrix, нет необходимости вносить какие -либо изменения в конфигурации Maven.
1. Файл конфигурации
Добавьте это в Application.properties:
feign.hystrix.enabled = true
2. Создайте класс обратного вызова
Создать helloremotehystrix class nogritance и helloremote для реализации обратных вызовов
@Componentpublic class helloremotehystrix реализует helloremote {@override public String hello (@requestparam (value = "name") String name) {return "hello" +name +", это сообщение отправляет не удалось"; }}3. Добавить атрибут запасного
Добавьте указанный запасной класс в класс Helloremote и верните содержимое в резервном классе, когда сервис обход.
@Feignclient (name = "Spring-Cloud-Producer", Swarkback = helloreMoteHystrix.class) Общедоступный интерфейс helloremote {@Requestmapping (value = "/hello") public String Hello (@RequestParam (value = "name") String name);};};};}Это точка перемен, это очень просто.
4. Тест
Затем давайте проверим его, чтобы увидеть эффект.
Начните три проекта Spring-Cloud-Eureka, Spring-Cloud-Producer и Spring-Cloud-Conmer.
Введите в браузере: http: // localhost: 9001/hello/neo
Возврат: Привет, Нео, это первое сообщение
Это означает, что после добавления информации, связанной с выключателем, она не повлияет на нормальный доступ. Далее мы вручную останавливаем проект Pring-Cloud-Producer и снова его проверяем:
Введите в браузере: http: // localhost: 9001/hello/neo
Возврат: Привет, Нео, это сообщение отправлено не удалось
Согласно результату возврата, выключатель схемы был успешно указан.
Пример кода
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.