моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Микросервисы — этоархитектурный стиль(В отличие от монолитной архитектуры, вертикальной архитектуры, распределенной архитектуры и архитектуры SOA) приложения делятся на более мелкие сервисы, управляемые процессами.
Весеннее облако - этоФреймворк микросервисов , которая предоставляет ряд распределенных системных решений. Предоставляет такие возможности, как разработка и развертывание микросервисов, регистрация и обнаружение сервисов, управление сервисами, а также эксплуатация и обслуживание сервисов посредством компонентизации.
1)Весеннее облако Netflix:
Эврика: центр регистрации
Лента: балансировка нагрузки
Притвориться: удаленный вызов
Hystrix: сервисный автоматический выключатель
Зуул/Врата: Врата
2)Spring Cloud Config: инструмент централизованного управления конфигурацией, внешнее хранилище конфигурации приложения, может использоваться для приложений Spring или сторонних приложений.
3)Spring Cloud Bus: шина событий и сообщений, используемая для распространения изменений состояния или событий изменения конфигурации в кластере.
4)Spring Cloud Consul: инструмент обнаружения и настройки сервисов, легко интегрированный с контейнерами Docker.
5)Spring Cloud Security: набор инструментов безопасности, обеспечивающий поддержку безопасности и аутентификации приложений.
6)Spring Cloud Sleuth: распределенная трассировка цепочки вызовов, совместимая с трассировкой Zipkin, HTrace и ELK.
7)Кластер Spring Cloud: выборы лидеров, реализованные посредством абстракции Zookeeper, Redis и Consul.
8)Spring Cloud Data Flow: оркестровка микросервисов, простая в использовании через интерфейс перетаскивания или REST API.
9)Spring Cloud Stream: легкая управляемая событиями платформа микросервисов для быстрого создания приложений, подключающихся к внешним системам.
10)Spring Cloud Task: краткосрочная платформа микросервисов для быстрого создания приложений, выполняющих задачи пакетной обработки данных.
Учебное пособие по Springcloud — 4. Подробное объяснение использования шлюза zuul_zuul — блог CSDN.
существоватьв распределенных системах , в случае сбоя сервисного узла или возникновения неисправности в сети вызывающий абонент может быть заблокирован и ждать. Если тайм-аут установлен на длительное время, ресурсы вызывающего абонента могут быть исчерпаны.Это, в свою очередь, приводит к исчерпанию ресурсов в вышестоящей системе вызывающего абонента, что в конечном итоге приводит ксистемная лавина . Автоматические выключатели могут эффективно предотвращать сход лавин.
Если вы столкнулись с внезапным увеличением трафика, общий подход заключается в следующем:Непрофильные бизнес-функцииМеры по ухудшению качества обслуживания принимаются для защиты нормального обслуживания основных бизнес-функций, в то время как для основных функциональных услуг необходимо принять текущие ограничивающие меры.
Сервисный выключатель:в целом Это происходит на стороне сервера (цель состоит в том, чтобы позволить вызывающей стороне быстро выйти из строя, когда время ожидания службы истекает или происходит аномальная ситуация, это приводит к срабатыванию предохранителя, аналогичному предохранителю в реальной жизни). (Иногда на клиенте также можно настроить быстрый сбой при обнаружении исключения при вызове определенной службы);
Деградация службы: обычно происходит на стороне клиента. Учитывая общую нагрузку на веб-сайт, когда служба отключается или завершает работу, она больше не вызывается (иногда это также можно настроить на стороне сервера, когда система отключена); внезапный трафик, это приведет к понижению версии основных функций для защиты основных функций);
Ограничение тока: обычно происходит на стороне сервера;
@EnableCircuitBreaker: включено в приложениипредохранитель
@HistrixCommand(fallbackMethod="xxxFallback",commandProperties = {
}): аннотация о слиянии добавляется к аннотации о понижении версии. Заполните условия слияния в команде CommandProperties = {}. Щелкните, чтобы просмотреть конкретные условия слияния.HystrixPropertiesManagerПроверять.
- @HystrixCommand(fallbackMethod = "xxxFallback",commandProperties = {
- //20秒内出现3个请求,失败率为30%,就会触发熔断,30秒内不再发送调用
- // 条件一: 请求数量达到3个
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),
- // 条件二: 每20秒一个判断单位
- @HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_INTERRUPT_ON_TIMEOUT,value = "20000"),
- // 条件三: 失败率30%
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "30"),
- // 结果: 熔断后, 30秒内不再请求远程服务
- @HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "30000")
- })
Создайте новый класс xxxFallbackFactory для реализации FallbackFactory и переопределите метод create. Метод понижения версии определен в create.
@FeignCliend(fallbackFactory=xxxFallbackFactory.class): Histrix интегрирован в Feign
Или укажите резервный метод непосредственно в методе: @HistrixCommand(fallbackMethod="xxxFallback")
1、Текущая стратегия ограничения:
1), ограничение тока семафора
Семафор используется для управления количеством одновременных потоков. Укажите количество внутренних виртуальных лицензий через конструктор.
Если используется технология изоляции семафоров, каждый раз при получении запроса собственный поток службы напрямую вызывает зависимую службу. Семафор эквивалентен контрольной точке. После того, как каждый поток проходит контрольную точку, количество семафоров уменьшается на 1. При этом используется технология изоляции семафоров. равно 0, его больше нет. Потоку разрешено проходить, но логика возврата напрямую выполняется и возвращается. Грубо говоря, это просто текущий предел.
Семафор можно понимать какприлавок, счетчик подсчитывает количество запросов, обрабатываемых в данный момент. Когда значение счетчика достигает установленного значения, последующие запросы не будут приняты (или понижены), и вам придется подождать, пока значение счетчика не станет меньше установленного значения, прежде чем последующие запросы смогут быть приняты. быть обработаны.
- @HystrixCommand(
- commandProperties= {
- @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE"),
- @HystrixProperty(name="execution.isolation.semaphore.maxConcurrentRequests", value="20")
- },
- fallbackMethod = "errMethod"
- )
2), ограничение тока пула потоков
- @HystrixCommand(
- commandProperties = {
- @HystrixProperty(name = "execution.isolation.strategy", value = "THREAD")
- },
- threadPoolKey = "createOrderThreadPool",
- threadPoolProperties = {
- @HystrixProperty(name = "coreSize", value = "20"),
- @HystrixProperty(name = "maxQueueSize", value = "100"),
- @HystrixProperty(name = "maximumSize", value = "30"),
- @HystrixProperty(name = "queueSizeRejectionThreshold", value = "120")
- },
- fallbackMethod = "errMethod"
- )
Здесь обратите внимание: вjava
В пуле потоков, если количество потоков превышаетcoreSize
запросы на создание потоков будут поступать в очередь первыми. Если очередь заполнена, потоки будут продолжать создаваться до тех пор, пока количество потоков не достигнет максимального значения.maximumSize
, а затем примите стратегию отклонения.Но в пуле потоков, настроенном hystrix, есть дополнительный параметр.queueSizeRejectionThreshold
,еслиqueueSizeRejectionThreshold < maxQueueSize
, количество очередей достигаетqueueSizeRejectionThreshold
примет стратегию отказа, поэтомуmaximumSize
неуспешный.еслиqueueSizeRejectionThreshold > maxQueueSize
, количество очередей достигаетmaxQueueSize
час,maximumSize
действителен, система продолжит создавать потоки, пока их число не достигнетmaximumSize
。
2. Разница между ограничением тока семафора и ограничением тока пула потоков:
1) Уровень производительности: семафор использует исходный поток и имеет низкое потребление производительности;
2) Уровень стабильности системы: пулы потоков изолированы, и проблемы сами по себе не влияют на другие пулы потоков;
3) Синхронный и асинхронный: поскольку семафор является исходным используемым потоком, он является синхронным и блокирующим.
3. Текущие сценарии использования лимитирующей стратегии:
Когда объем запросов очень интенсивен и затраты на изоляцию потоков относительно высоки, для снижения нагрузки рекомендуется использовать семафоры. Эта ситуация обычно используется для обработки несетевых запросов (без вызова внешних сервисов). В других сценариях рекомендуется использовать метод пула потоков.
Ограничение тока — это просто ограничение тока. Пока лимит трафика не превышен, услуга по-прежнему доступна (в отличие от автоматического выключателя), и ее не нужно понижать (исключение превышения лимита трафика также может быть выдано для обработки вызывающей стороной). самостоятельно). Итак, давайте просто поговорим о разнице между автоматическим выключателем и понижением версии:
Автоматический выключатель означает, что услуга в целом недоступна (ориентация на самозащиту), понижение уровня означает выбор следующего лучшего варианта (ориентация на защиту прибыли), а ограничение тока относится к объему трафика, который не может быть превышен.
По умолчанию, если Hystrix обнаруживает, что частота отказов запросов превышает 50% в течение 10 секунд, он запускает механизм автоматического выключателя. После этого запрос к микросервису повторяется каждые 5 секунд. Если микросервис не может ответить, механизм автоматического выключателя продолжает работать. Если микросервис доступен, механизм автоматического выключателя отключается и восстанавливаются обычные запросы.
По умолчанию hystrix запускает механизм перехода на более раннюю версию при следующих 4 условиях:
Механизм понижения мощности может быть вызван во время выключателя, но механизм выключателя обычно не вызывается во время понижения мощности.Поскольку автоматический выключатель запускается с общей точки зрения и деактивирует службы для обеспечения стабильности системы, а переход на более раннюю версию является следующим лучшим решением и обеспечивает гарантированное решение, поэтому их отношения собственности различны (автоматический выключатель > понижение версии).
Краткое содержание ссылки:
@FeignClient(name="eureka-HA",fallbackFactory=DeptClientServiceFallbackFactory.class)
Ссылаться на:
Практическая реализация архитектуры проекта SpringBoot «Строительство шлюза zuul» — блог CSDN
Ссылаться на:
Регистрация службы: при запуске поставщик услуг отправляет на сервер Eureka запрос на регистрацию, включая IP-адрес службы, номер порта, имя службы и другую информацию. После получения запроса на регистрацию сервер Eureka сохранит информацию об услуге в памяти и предоставит функцию запроса информации о регистрации внешней службы.
Обнаружение службы: когда потребителю службы необходимо вызвать другие службы, он отправляет запрос на обнаружение службы на сервер Eureka, чтобы получить список экземпляров необходимых служб. После получения запроса сервер Eureka вернет список экземпляров соответствующего сервиса, включая IP-адрес, номер порта и другую информацию сервиса. Потребитель службы выбирает один из экземпляров службы для вызова (балансировка нагрузки) на основе возвращенного списка экземпляров.
Проверка работоспособности Heartbeat: поставщик услуг будет регулярно отправлять пакеты Heartbeat на сервер Eureka, чтобы доказать, что его служба работает нормально. Если сервер Eureka не получит контрольный пакет от экземпляра службы в течение определенного периода времени, он посчитает экземпляр службы отключенным и удалит его из списка служб.
Практика режима Seata TCC (Часть 2) — Сообщество разработчиков облаков AlibabaРеальный бой в режиме Seata TCC (Часть 2)https://developer.aliyun.com/article/1053737?spm=5176.26934562.main.1.799c6a03T45SJ9Приведенное выше сообщение в блоге не решает проблему приостановки, о чем можно судить по различным индикаторам состояния.
https://www.cnblogs.com/lilpig/p/16613226.htmlhttps://www.cnblogs.com/lilpig/p/16613226.html
TM: менеджер транзакций, созданный с помощью аннотации @GlobalTransaction.
ТК: Координатор
РМ:Участник
Весь процесс:
TM проксирует ваши глобальные транзакции и регистрируется в TC перед началом выполнения.
TM начинает выполнять каждую транзакцию филиала в глобальной транзакции, а RM регистрирует и сообщает транзакции филиала и статус выполнения TC.
После завершения выполнения транзакции филиала TM инициирует запрос к TC на подтверждение или откат глобальной транзакции.
Резервирование означает блокировку и обновление ресурса базы данных до промежуточного состояния, а затем изменение его в эффективное состояние, когда после подтверждения выполняется фиксация второго этапа.Итак, фаза резервирования и фаза отката фиксации.Все они связаны с операционными базами данных., поэтому также могут быть сбои подтверждения и отката, требующие ручной обработки, которые можно решить путем записи журналов, компенсации повторных попыток и т. д.
Преимущества режима TCC:
Недостатки режима TCC:
Confirm
иCancel
Он также может выйти из строя, и вам нужно разобраться с этим процессом.Высокая согласованность за счет координации фиксации и отката локальных транзакций каждого участника.
Преимущества режима XA:
Недостатки режима XA:
слабая консистенция